LVM
LVM(Logical Volume Manager)逻辑卷管理器,可以动态调整磁盘容量,提高磁盘灵活管理性。绝大多数分区可以基于LVM创建,但是/boot挂载分区不能基于LVM创建。LVM底层文件系统ID为 8e。
LVM的组成:
1.PV(physical volume)物理卷,物理卷可以由整个硬盘或者是独立分区转化而成。物理卷包括了许多默认大小为 4MB的PE(physical Extent)基本单元。
2.VG(volume group)卷组,卷组是由一个或多个物理卷组成的整体。
3.LV(logical volume)逻辑卷,从卷组中抽出一部分空间,可以建立文件系统。
功能 | pv | vg | lv |
---|---|---|---|
创建 | pvcreate | vgcreate | lvcreate |
删除 | pvremove | vgremove | lvremove |
增大 | vgextend | lvextend/ lvresize | |
减小 | vgreduce | lvresize | |
显示 | pvs | vgs | lvs |
? ? ? ? ? ? ? ? ? ? ? ?
LVM创建步骤:
第一步: 创建分区,并将其分区类型修改为LVM。
第二步: 磁盘分区初始化为物理卷
pvcreate /dev/vdb1
第三步: 将初始化的物理卷加入卷组
vgcreate myvg /dev/vdb1
第四步: 在已有的卷组中,创建逻辑卷
(实际创建大小为PE的整数倍,4的整数倍,比如指定30M,系统实际创建28M)
lvcreate -L 40M -n mylv myvg
使用 lvs
查看创建的逻辑卷 mylv
给逻辑卷分配文件系统 mkfs.ext4 /dev/myvg/mylv
,并 blkid
查看信息。
linux中默认将逻辑卷链接到 /dev/mapper/myvg_mylv
是 /dev/myvg/mylv 的 软连接。
第五步: 修改 /etc/fstab 文件,将逻辑卷挂载信息加进去。
mount -a 重新挂载
df -Th 查看
如果还要建立一个逻辑卷,那么直接第四步,在已有的卷组中创建逻辑卷(前提是卷组中还有剩余空间),然后其余步骤相同。
这里又创建了一个xfs文件系统逻辑卷 lv2.
二.LVM的拉伸
拉伸命令两条:
lvextend
、lvresize
用法相同
当卷组空间足够分配逻辑卷时,拉伸lvm分为两步:
- 拉伸逻辑卷
lvresize / lvextend -L 300M /dev/myvg/mylv - 通知文件系统
resize2fs /dev/myvg/mylv (EXT文件系统)
xfs_growfs /dev/myvg/lv2 (XFS文件系统)
第一步:拉伸之前,先用vgs 查看卷组中剩余空间的大小
可以看到,还有24M
新建分区100M,实际分配给逻辑卷 mylv 40M, lv2 30M,
现在想扩张mylv 到 160M,扩展 lv2 到200M,就需要扩展卷组了。
卷组的扩大:
扩大卷组空间,先新建一个分区;
初始化为物理卷,加入myvg卷组。
pvcreate /dev/vdb2
vgextend myvg /dev/vdb2
卷组空间就会变大。
vgs
查看卷组空间
然后对LVM进行扩容。
lvextend -L 160M /dev/myvg/mylv
现在扩张mylv 到 160M,扩展 lv2 到200M。
扩展完之后,要通知文件系统。
resize2fs /dev/myvg/mylv (EXT文件系统)
xfs_growfs /dev/myvg/lv2 (XFS文件系统)
通知完文件系统之后,可以看到逻辑卷扩大了。
三.LVM的缩小
1.将挂载的文件系统卸载
umount /mnt/lvm
2.强制磁盘检查
e2fsck -f /dev/myvg/mylv
3.通知文件系统缩小
resize2fs /dev/myvg/mylv 90M
4.缩小逻辑卷
lvresize -L 90M /dev/myvg/mylv
5.重新挂载
mount -a
注意:xfs文件系统的逻辑卷不能缩小
注意:当给文件系统通知的是200M,而实际缩小到300M,这样最后挂载,实际只有200M,浪费了100M;
当给文件系统通知的是500M,而实际缩小到400M,这样挂载不上,会报错,
所以给文件系统通知的大小,和实际缩小的大小一定要相同。
四.LVM的删除
1.将挂载的文件系统卸载
umont /mnt/lvm
删除或注释磁盘挂载信息
vim /etc/fstab
2.删除逻辑卷
lvremove /dev/myvg/mylv
删除卷组
vgremove myvg
删除卷组底层的物理卷
pvremove /dev/vdb1
3.删除磁盘分区
fdisk /dev/vdb
按d,回车,直到删完,p查看,wq保存退出
4.刷新磁盘分区
partprobe /dev/vdb