Linux Unit17--lvm
1.lvm
lvm 逻辑卷管理器,lvm可以将一个或者多个硬盘的分区在逻辑上集合在一起,相当于一个大的硬盘,当硬盘空间不够使用使用的时候,可以再添加一个硬盘的分区进来,从而实现动态地对硬盘空间进行管理,相对于普通的磁盘分区方式有很大的灵活性,与传统的分区方式相比,lvm为计算机提供了更高层次的磁盘储存。它使系统管理员可以更方便的为用户与应用分配储存空间,在lvm管理下的储存卷可以按照需要随时改变大小或者移除(可能需要改变该分区的文件系统)
pv 物理卷(里面含有pe),物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘
pe 物理区域,pv中的最小单位,物理区域的大小一旦确立就不可再进行更改,且同一卷组中的所有物理卷的物理区域大小需要一致
vg 物理卷组,物理卷组建立在物理卷上,一个卷组中至少包括一个物理卷,在卷组建立之后可以动态添加物理卷到别的卷组中去,一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组
lv 逻辑卷建立在卷组之上,逻辑卷建立后可以动态的扩展和缩小空间,卷组中未分配的空间也可以用于建立新的逻辑卷
关系图:
2.lvm的建立
划分物理分区,并修改分区标签为lvm
pvcreate /dev/vdb1 ##创建物理卷
vgcreate vg0 /dev/vdb1 ##创建物理卷组
lvcreate -L 100M -n lv0 vg0 ##创建逻辑卷
mkfs.xfs /dev/vg0/lv0 ##格式化设备
mount /dev/vg0/lv0 /westos ##设备挂载投入使用
监控命令:
watch -n 1'pvs;echo=====;vgs;echo=====;lvs;echo=====;df -h /westos'
3.lvm的拉伸
1>.当vg中剩余容量充足时
lvextend -L 300M /dev/vg0/lv0 ##设备扩充
xfs_growfs /dev/vg0/lv0 ##同步文件系统
2>.当vg中剩余容量不足时
pvcreate /dev/vdb2
vgextend vg0 /dev/vdb2
lvextend -L 600M /dev/vg0/lv0
xfs_growfs /dev/vg0/lv0
注意:xfs文件系统并不能做磁盘的缩减,是因为lvm是将多个独立的硬盘分区在逻辑上集合在一起的,所以在该分区上存储的文件不能确定它被存储在哪一块硬盘上,因此当要删掉一块硬盘分区时,不能确定该硬盘分区中是否存在重要的文件
在ext文件系统中:
取消挂载,并修改文件格式为ext4
拉伸:
lvextend -L 400M /dev/vg0/lv0 ##拉伸
resize2fs /dev/vg0/lv0 ##同步文件系统,挂载之后才能显示
缩减:
1>.对设备:
umount /westos ##取消挂载
e2fsck -f /dev/vg0/lv0 ##扫描
resize2fs /dev/vg0/lv0 200M ##缩减文件系统
mount /dev/vg0/lv0 /westos ##挂载设备,使缩减文件系统的结果显示出来
lvreduce -L 200M /dev/vg0/lv0 ##缩减设备
2>.对卷组
pvmove /dev/vdb1 /dev/vdb2
##当要移除的分区存在数据时,需要把数据迁移到其他pv中
vgreduce vg0 /dev/vdb1
pvremove /dev/vdb1
4.lvm的快照
作用:保护原始数据不会被删除
建立原始数据:
mount /dev/vg0/lv0 /westos
touch /westos/file{1..6}
umount /westos
制作快照:
lvcreate -L 100M -n lv0backup -s /dev/vg0/lv0 ##创建快照
mount /dev/vg0/lv0backup /westos ##挂载快照
ls /westos ##查看数据
测试:
删除挂载到/westos/上的所有数据,并取消挂载,删除快照
lvremove /dev/vg0/lv0backup ##删除快照
若想恢复数据,重新再创建一个新的快照即可
5.lvm的分区被误删除
fdidk /dev/vdb直接删除分区时
会出现以下错误时:
表示lvm的分区被误删除
解决方法:
vgreduce vg0 --removemissing
删除lvm的所有分区:
lvremove /dev/vg0/lv0
vgremove vg0
pvremove /dev/vdb2
fdisk /dev/vdb