Linux系统存储之LVM
1.lvm存在意义及名词解释
- lvm存在意义:
解决存储容量的问题:
- 图解lvm如何解决存储容量的问题
- 名词解释
2.lvm的建立
pvcreate---->vgcreate---->lvceate
在创建过程中我们可以用以下命令监控,可以更好的看到创建效果:
watch -n 1 "pvs;echo ======;vgs;echo ======;lvs;echo ======;df -h /weixindata"
- step1
划分lvm所用到的设备(划分物理分区),这些设备的功能id必须是linux LVM
fdisk /dev/vdb
- step2
建立pv(相当于把橘子榨汁的过程)
pvcreate /dev/vdb1 ##把物理分区做成物理卷
pvs|pvdisplay ##查看物理卷
- step3
建立vg(相当于把果汁倒进大容器的过程)
vgcreate vg0 /dev/vdb1 ##用制作好的/dev/vdb1这个物理卷制作一个物理卷组vg0
vgs|vgdisplay ##查看物理卷组
- step4
建立lvm
lvcreate -L 100M -n lv0 vg0 ##在vg0这个组中建立出lv0设备 -L 指定设备大小 -n 指定设备名字
lvs|lvdisplay ##对逻辑卷设备进行查看
- step5
lvm建立成功之后要进行以下两步:
mkfs.xfs /dev/vg0/lv0 ##格式化
mount /dev/vg0/lv0 /weixindata ##挂载到/weixindata
创建成功后用watch命令监控的界面如下:
3.lvm设备的扩大
- 针对xfs文件系统
vg扩大:
pvcreate /dev/vdb2 ##在pv中增加一块设备/dev/vdb2
vgextend vg0 /dev/vdb2 ##把新建立的/dev/vdb2添加到vg0中
lvm扩大:
lvextend -L 500M /dev/vg0/lv0 ##扩大lvm设备到500M
xfs_growfs /dev/vg0/lv0 ##扩大xfs文件系统到设备大小
- 针对ext文件系统
由于我们系统中目前的文件系统是xfs系统,我们先通过以下方法把它转化成ext系统
umount /weixindata ##卸载(进行文件系统转换时要先卸载)
mkfs.ext4 /dev/vg0/lv0 ##格式化成ext文件系统
mount /dev/vg0/lv0 /weixindata
vg扩大:(和xfs系统相同)
pvcreate /dev/vdb3 ##在pv中增加一块设备/dev/vdb3
vgextend vg0 /dev/vdb3 ##把新建立的/dev/vdb3添加到vg0中
lvm扩大:
lvextend -L 900M /dev/vg0/lv0 ##扩大lvm设备到900M
resize2fs /dev/vg0/lv0 ##设定文件系统大小和设备同步
4.lvm设备的缩减
注意:xfs文件系统不能缩减,只有ext文件系统可以缩减
lvm缩减:
umount /dev/vg0/lv0 ##卸载设备,因为文件系统缩减不支持在线操作
e2fsck -f /dev/vg0/lv0 ##检测文件系统,确定文件系统中已有数据大小防止过度缩减
resize2fs /dev/vg0/lv0 300M ##把文件系统缩减到300M
lvreduce -L 300M /dev/vg0/lv0 ##设备缩减到300M
vg缩减:
注意:在vg缩减时只能缩减没有被占用的设备
pvmove /dev/vdb2 /dev/vdb1 ##把设备2上的所有数据移动到设备1上
vgreduce vg0 /dev/vdb2 ##把vg0中的/dev/vdb2删除
pvremove /dev/vdb2 ##把/dev/vdb2上的lvm管理信息删除
5.lvm快照
lvcreate -L 20M -n lv0backup -s /dev/vg0/lv0 ##给/dev/vg0/lv0建立快照,-L指定快照大小,-n指定快照名字,-s指定快照模板设备
mount /dev/vg0/lv0backup /weixindata ##挂载
注意:
1.当快照设备里的数据被更改,如果想还原,删除快照设备,再重新建立快照即可
2.创建快照时要预估好快照大小,如果在使用时截取一个比快照大的文件,快照会被撑坏
6.删除lvm
lvremove---->vgremove----->pvremove
step1 卸载设备
umount /dev/vg0/lv0 ##卸载
df ##查看设备挂载情况
step2 lvremove
lvremovde /dev/vg0/lv0backup ##删除快照
lvremovde /dev/vg0/lv0 ##删除lv0
step3 vgremove
vgremove vg0 ##删除vg
step4 pvremove
pvremove /dev/vdb1 ##删除物理卷
7.lvm丢失设备的删除
- 模拟设备丢失情况:
step1 首先建立好lvm,挂载好,并且用命令监控实时情况
watch -n 1 "pvs;echo ======;vgs;echo ======;lvs;echo ======;df -h /weixindata" ##监控命令
step2 用fisk /dev/vdb 命令手动删除设备/dev/vdb1
删除后在监控界面会出现报错:PV g2OIge-1awl-HOFo-XwNG-EhUg-KP5E-GBQGRt not recognised. Is the device missing?
- 删除丢失的设备
vgreduce --removemissing vg0 ##删除vg0中丢失的设备