LVM(Logical Volume Manager)是基于内核的一种逻辑卷管理器,LVM适合于管理大存储设备,并允许用户动态调整文件系统大小。
1.物理卷(Physical Volume, PV)
物理卷是LVM的最底层概念,是LVM的逻辑存储块,物理卷与磁盘分区是逻辑的对应关系。LVM提供了命令工具可以将分区转换为物理卷,通过组合物理卷生成卷组。
2.卷组( Volume Group,VG)
卷组是LVM逻辑概念上的磁盘设备,通过将单个或多个物理卷组合后生成卷组。卷组的大小取决于物理卷的容量及个数。在Centos7系统中,对容量与个数没有限制。
3.物理卷长度(Physical Extent,PE)
物理卷长度是将物理卷组合为卷组后,所划分的最小存储单位,即逻辑意义上磁盘的最小存储单元。LVM默认物理卷长度为4MB。
4.逻辑卷(Logical Volume, LV)
逻辑卷就是LVM逻辑意义上的分区,我们可以指定从卷组中提取多少容量来创建逻辑卷,最后对逻辑卷格式化并挂载使用。
命令:
1.pvcreate 使用LVM对磁盘或分区进行初始化
格式:pvcreate [选项] 物理卷 [物理卷…]
[root@gao ~]# pvcreate /dev/sdc4 /dev/sde
[root@gao ~]# pvcreate /dev/sda{1,2,3}
2.vgcreate 创建卷组
格式:vgcreate [选项] 卷组名称 物理设备路径 [物理设备路径…]
[root@gao ~]# vgcreate test_vg1 /dev/sdb5 /dev/sdb6
[root@gao ~]# vgcreate test_vg2 -s 16M /dev/sdc5 /dev/sdc6
3.lvcreate 从卷组中提取存储空间,创建逻辑卷
格式: lvcreate [选项] 卷组名称或路径 [物理卷路径]
选项:
-l 指定使用多少个卷组中的PE创建逻辑卷,PE的容量在创建卷组时已经指定。
-L 直接指定逻辑卷大小,单位可以是b(B),s(S),k(K),m(M),g(G),t(T),p(P)或e(E)。
-n 指定逻辑卷名称
[root@gao ~]# lvcreate -L 2G -n test_lv1 test_vg1
//从test_vg1卷组中提取2GB容量,创建名称为test_lv1的逻辑卷
[root@gao ~]# lvcreate -l 200 -n test_lv2 test_vg2
//使用200个PE创建逻辑卷
[root@gao ~]# lvcreate -L 2G -n test_lv1 test_vg1 /dev/sdb6
//指定使用test_vg1卷组中的/dev/sdb6这个物理卷的存储空间,创建名称为test_lv1 的逻辑卷
1.使用fdisk创建分区
[root@gao 桌面]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x060fbe13 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-10485759,默认为 2048):2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):2
起始 扇区 (4196352-10485759,默认为 4196352):
将使用默认值 4196352
Last 扇区, +扇区 or +size{K,M,G} (4196352-10485759,默认为 10485759):+2G
分区 2 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
分区号 (3,4,默认 3):3
起始 扇区 (8390656-10485759,默认为 8390656):
将使用默认值 8390656
Last 扇区, +扇区 or +size{K,M,G} (8390656-10485759,默认为 10485759):+500M
分区 3 已设置为 Linux 类型,大小设为 500 MiB
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e
已选择分区 4
起始 扇区 (9414656-10485759,默认为 9414656):
将使用默认值 9414656
Last 扇区, +扇区 or +size{K,M,G} (9414656-10485759,默认为 10485759):+300M
分区 4 已设置为 Extended 类型,大小设为 300 MiB
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (9416704-10029055,默认为 9416704):
将使用默认值 9416704
Last 扇区, +扇区 or +size{K,M,G} (9416704-10029055,默认为 10029055):+100M
分区 5 已设置为 Linux 类型,大小设为 100 MiB
命令(输入 m 获取帮助):t
分区号 (1-5,默认 5):1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (1-5,默认 5):2
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (1-5,默认 5):3
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (1-5,默认 5):4
Hex 代码(输入 L 列出所有代码):8e
You cannot change a partition into an extended one or vice versa.
Delete it first.
分区 4 的类型未更改:Extended
命令(输入 m 获取帮助):t
分区号 (1-5,默认 5):5
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x060fbe13
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 8e Linux LVM
/dev/sdb2 4196352 8390655 2097152 8e Linux LVM
/dev/sdb3 8390656 9414655 512000 8e Linux LVM
/dev/sdb4 9414656 10029055 307200 5 Extended
/dev/sdb5 9416704 9621503 102400 8e Linux LVM
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@gao 桌面]# partprobe /dev/sdb
//此命令在磁盘分区的时候有写到,作用是刷新磁盘分区表
2.使用pvcreate创建物理卷并使用pvdispaly查看结果
[root@gao 桌面]# pvcreate /dev/sdb{1,2,3,5}
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdb2" successfully created
Physical volume "/dev/sdb3" successfully created
Physical volume "/dev/sdb5" successfully created
[root@gao 桌面]# pvdisplay
--- NEW Physical volume ---
PV Name /dev/sdb1 //物理卷名称
VG Name
PV Size 2.00 GiB //物理卷大小
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID aD9ohz-dDAQ-s7h7-fifC-a7Bz-6f0J-Y1mL8v
其他物理卷信息省略
3.使用vgcreate创建卷组并使用vgdisplay查看结果
[root@gao 桌面]# vgcreate test_vg /dev/sdb{1,2,3,5}
Volume group "test_vg" successfully created
[root@gao 桌面]# vgdisplay
--- Volume group ---
VG Name test_vg //卷组名称
System ID
Format lvm2
Metadata Areas 4
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 4
Act PV 4
VG Size 4.57 GiB //卷组大小
PE Size 4.00 MiB //物理长度大小
Total PE 1170
Alloc PE / Size 0 / 0
Free PE / Size 1170 / 4.57 GiB //剩余容量
VG UUID GBQk9Z-xOxE-Z7O5-I3V9-wWKt-v7a6-wnY49C
4.使用lvcreate创建逻辑卷并使用lvdisplay查看结果
[root@gao 桌面]# lvcreate -n test_web -L 1G test_vg
Logical volume "test_web" created.
[root@gao 桌面]# lvcreate -n test_data -l 256 test_vg
Logical volume "test_data" created.
[root@gao 桌面]# lvdisplay
--- Logical volume ---
LV Path /dev/test_vg/test_web //逻辑卷路径
LV Name test_web //逻辑卷名称
VG Name test_vg //卷组名称
LV UUID 2xZYBb-YYng-DafY-DqQY-4TOn-NJA8-s0H8fO
LV Write Access read/write
LV Creation host, time gao.exmaple.com, 2019-03-26 22:42:31 +0800
LV Status available
# open 0
LV Size 1.00 GiB //逻辑卷大小
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
5.格式化并挂载
[root@gao 桌面]# mkfs.xfs /dev/test_vg/test_web
[root@gao 桌面]# mkfs.xfs /dev/test_vg/test_data
[root@gao 桌面]# mkdir -p /test/{web,data}
[root@gao 桌面]# cat >> /etc/fstab < /dev/test_vg/test_data /test/data xfs defaults 0 0
> /dev/test_vg/test_web /test/web xfs defaults 0 0
> EOF
[root@gao 桌面]# mount -a
[root@gao 桌面]# df -h //查看文件系统挂载状态
使用lvextend命令调整逻辑卷大小,调整完大小后,还需使用xfs_growfs命令更新文件系统的大小,具体方法如下:
[root@gao 桌面]# lvextend -L +2G /dev/test_vg/test_data //扩容逻辑卷
[root@gao 桌面]# lvs //查看逻辑卷已经扩容完成
[root@gao 桌面]# df -h
[root@gao 桌面]# xfs_growfs /dev/test_vg/test_data //更新文件系统大小
[root@gao 桌面]# df -h
删除LVM之前创建的物理卷,卷组,逻辑卷时,删除顺序应该与创建时的顺序相反。也就是卸载文件系统,删除逻辑卷,删除卷组,删除物理卷。卸载文件系统时需要注意,如果有必要,应该更新/etc/fstab文件
[root@gao 桌面]# umount /dev/test_vg/test_web
[root@gao 桌面]# umount /dev/test_vg/test_data
[root@gao 桌面]# lvremove /dev/test_vg/test_data
Do you really want to remove active logical volume test_data? [y/n]: y
Logical volume "test_data" successfully removed
[root@gao 桌面]# lvremove /dev/test_vg/test_web
Do you really want to remove active logical volume test_web? [y/n]: y
Logical volume "test_web" successfully removed
[root@gao 桌面]# vgremove test_vg
Volume group "test_vg" successfully removed
[root@gao 桌面]# pvremove /dev/sdb{1,2,3,5}
Labels on physical volume "/dev/sdb1" successfully wiped
Labels on physical volume "/dev/sdb2" successfully wiped
Labels on physical volume "/dev/sdb3" successfully wiped
Labels on physical volume "/dev/sdb5" successfully wiped