1.LVM
LVM实战场景: 服务器磁盘存储数据, 分区磁盘空间不足了
LVM解决: 动态扩容
1.2raid vs LVM
raid: 冗余和数据加速
LVM: 数据加速和扩展方面
2.LVM的原理
lvm : 磁盘和文件系统之间增加一个逻辑层, 来动态的调整文件系统的大小,从而实现对磁盘的管理
相关概念:
PE : 物理拓展,LVM的最小单元,一般默认4M,是4M的倍数 ,(类似于硬盘的一个扇区:一般默认512字节 )
PV :逻辑上的一个 物理卷 ,不能存储文件,基础逻辑存储块
VG : 逻辑上的一个 卷组,不能存储文件,由多个PV组成
LV : 最终的 逻辑卷,可以存储文件
LVM的物理存储介质:分区,整个磁盘,radi或存储
组成关系:
多个磁盘/分区/raid–>多个物理卷PV–>合成卷组VG–>从VG划出逻辑卷LV–>格式化LV挂载使用
优点:
使用卷组: 使用多个硬盘空间,看起来像一块大的硬盘
使用逻辑卷,可以跨多个硬盘空间的分区 sdb1 sdb2 sdc1 sdd2 sdf
在使用逻辑卷时,它可以在空间不足时动态调整它的大小
可以在线对LV,VG 进行创建,删除,调整大小等操作。LVM上的文件系统也需要重新调整大小。
指定PE的大小
-s 存储文件比较大文件, PE 调大一下,读取快
[root@localhost lv01]# vgcreate -s 16M vg03 /dev/sdb4
Volume group "vg03" successfully created
[root@localhost lv01]# vgs
VG #PV #LV #SN Attr VSize VFree
centos_anonymous 1 2 0 wz--n-
扩容: extend
-L +30M 20M –50M
-L 30M 30M
扩容文件系统:
方法一:
ext4 resize2fs
XFS xfs_growfs
[root@localhost lv01]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos_anonymous -wi-ao----
方法二:
[root@localhost lv01]# df -Th /lv01/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs 45M 960K 44M 3% /lv01
[root@localhost lv01]# df -Th /lv01/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs 45M 960K 44M 3% /lv01
[root@localhost lv01]# lvextend -L 80M -r /dev/vg01/lv01
Size of logical volume vg01/lv01 changed from 48.00 MiB (12 extents) to 80.00 MiB (20 extents).
Logical volume vg01/lv01 successfully resized.
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=3, agsize=4096 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=12288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 12288 to 20480
[root@localhost lv01]# df -Th /lv01/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs 77M 1.0M 76M 2% /lv01
lvm的删除
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos_anonymous-root 253:0 0 17G 0 lvm /
└─centos_anonymous-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 4G 0 part
│ ├─vg01-lv01 253:2 0 80M 0 lvm /lv01
│ └─vg01-lv02 253:3 0 16M 0 lvm
├─sdb2 8:18 0 4G 0 part
│ └─vg02-lv03 253:4 0 100M 0 lvm /lv03
├─sdb3 8:19 0 4G 0 part
└─sdb4 8:20 0 4G 0 part
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
[root@localhost ~]# umount /dev/vg01/lv01
[root@localhost ~]# df -h !$
df -h /dev/vg01/lv01
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.9G 0 1.9G 0% /dev
[root@localhost ~]# lvremove /dev/vg01/lv01
Do you really want to remove active logical volume vg01/lv01? [y/n]: y
Logical volume "lv01" successfully removed
[root@localhost ~]# lvremove /dev/vg01/lv02
Do you really want to remove active logical volume vg01/lv02? [y/n]: y
Logical volume "lv02" successfully removed
[root@localhost ~]# vgremove vg01
Volume group "vg01" successfully removed
[root@localhost ~]# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos_anonymous-root 253:0 0 17G 0 lvm /
└─centos_anonymous-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 4G 0 part
├─sdb2 8:18 0 4G 0 part
│ └─vg02-lv03 253:4 0 100M 0 lvm /lv03
├─sdb3 8:19 0 4G 0 part
└─sdb4 8:20 0 4G 0 part
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
[root@localhost ~]#
3.LVM实战
实验思路:
1. 创建磁盘,分区
2.创建PV
3.创建VG
4.创建LV
5.格式化挂载LV
3.1 实际演示:
1. 创建磁盘,分区
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos_anonymous-root 253:0 0 17G 0 lvm /
└─centos_anonymous-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x1287997e 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+4G
分区 1 已设置为 Linux 类型,大小设为 4 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (8390656-41943039,默认为 8390656):
将使用默认值 8390656
Last 扇区, +扇区 or +size{K,M,G} (8390656-41943039,默认为 41943039):+4G
分区 2 已设置为 Linux 类型,大小设为 4 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p):
Using default response p
分区号 (3,4,默认 3):
起始 扇区 (16779264-41943039,默认为 16779264):
将使用默认值 16779264
Last 扇区, +扇区 or +size{K,M,G} (16779264-41943039,默认为 41943039):+4G
分区 3 已设置为 Linux 类型,大小设为 4 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): p
已选择分区 4
起始 扇区 (25167872-41943039,默认为 25167872):
将使用默认值 25167872
Last 扇区, +扇区 or +size{K,M,G} (25167872-41943039,默认为 41943039):+4G
分区 4 已设置为 Linux 类型,大小设为 4 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x1287997e
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 8390655 4194304 83 Linux
/dev/sdb2 8390656 16779263 4194304 83 Linux
/dev/sdb3 16779264 25167871 4194304 83 Linux
/dev/sdb4 25167872 33556479 4194304 83 Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8, 16 11月 14 14:08 /dev/sdb
brw-rw----. 1 root disk 8, 17 11月 14 14:08 /dev/sdb1
brw-rw----. 1 root disk 8, 18 11月 14 14:08 /dev/sdb2
brw-rw----. 1 root disk 8, 19 11月 14 14:08 /dev/sdb3
brw-rw----. 1 root disk 8, 20 11月 14 14:08 /dev/sdb4
[root@localhost ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8, 16 11月 14 14:08 /dev/sdb
brw-rw----. 1 root disk 8, 17 11月 14 14:08 /dev/sdb1
brw-rw----. 1 root disk 8, 18 11月 14 14:08 /dev/sdb2
brw-rw----. 1 root disk 8, 19 11月 14 14:08 /dev/sdb3
brw-rw----. 1 root disk 8, 20 11月 14 14:08 /dev/sdb4
2.创建PV
[root@localhost ~]# pvcreate /dev/sdb{1..4}
Device /dev/sdb4 not found (or ignored by filtering).
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
Physical volume "/dev/sdb3" successfully created.
Physical volume "/dev/sdb4" successfully created.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos_anonymous lvm2 a--
3.创建VG
[root@localhost ~]# vgcreate vg01 /dev/sdb1
Volume group "vg01" successfully created
[root@localhost ~]# vgdisplay vg01
--- Volume group ---
VG Name vg01
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size
4.创建LV
[root@localhost ~]# lvcreate -n lv01 -L 16M vg01
Logical volume "lv01" created.
[root@localhost ~]# lvcreate -n lv02 -l 4 vg01
Logical volume "lv02" created.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos_anonymous -wi-ao----
5.格式化挂载LV
[root@localhost ~]# mkdir /lv01
[root@localhost ~]# mkfs.xfs /dev/vg01/lv01
meta-data=/dev/vg01/lv01 isize=512 agcount=1, agsize=4096 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=4096, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# mount !$ /lv01/
mount /dev/vg01/lv01 /lv01/
[root@localhost ~]# df -Th /lv01/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs 13M 896K 12M 7% /lv01
[root@localhost ~]#