*******************5.LVM*********************
用于建立可扩展磁盘

## 1.LVM建立 ##
监控命令:
watch -n 1 'echo "*** pvinfo ***";pvs;echo "*** vginfo ***";vgs;echo"*** lvinfo ***";lvs'

pvs               //查看物理卷信息
vgs               //查看物理卷组信息
lvs               //查看逻辑卷信息
建立:
fdisk /dev/vdb                 //划分物理分区并把分区id修改为8e
pvcreate /dev/vdb1             //创建物理卷
vgcreate hello /dev/vdb1       //创建物理卷组
lvcreate -L 100M -n lv0 hello  //创建逻辑卷

测试:

wKiom1gi9mXyWRpCAAD0uGOgFXk316.png

## 2.LVM 管理 ##

##扩展磁盘## --支持正在使用的磁盘扩展
lvextend -L 200M /dev/hello/lv0             //扩展逻辑卷大小至200M
xfs_growfs /dev/hello/lv0                   //扩展文件系统

wKioL1gi98ighDftAAAkrJqe8-0161.png

wKiom1gi98nzQQk7AACAV9vpFtU465.png

pvcreate /dev/vdb2                          //创建物理卷

vgextend hello /dev/vdb2                    //扩展物理卷

wKioL1gi98zCbRDQAAA4jBkvn-g400.png
看似分区大小可无限扩展,但事实受到文件系统的限制,分区大小不能无限扩展,例如xfs文件系统支持最大分区大小为18EB

##缩减磁盘##

注:xfs不支持文件系统缩减,导致磁盘不能缩减,所以这个实验我们使用ext文件系统

缩减文件系统 --缩减之前必须卸载设备
umount /mnt/                                 //卸载设备
e2fsck -f /dev/hello/lv0                     //检测设备
resize2fs /dev/hello/lv0 200M                //缩减文件系统至200M

wKioL1gi-HjiJzTVAAAYozllfMc195.png

wKiom1gi-HjAchbdAAAkrJqe8-0333.png

wKioL1gi-HmSwt9hAACi5MOspYo550.png

缩减逻辑卷大小 --缩减逻辑卷大小之前必须缩减文件系统大小
lvreduce -L 200M /dev/hello/lv0
wKiom1gi-Hvil7T6AAB8ycO8vV8476.png
缩减物理卷

移除vdb1
pvmove /dev/vdb1 /dev/vdb2                     //移动vdb1数据至vdb2
vgreduce hello /dev/vdb1                       //从物理卷组中删除
pvremove /dev/vdb1                             //删除物理卷

wKiom1gi-PWRRscEAAB0681i4Lc554.pngwKiom1gi-PeAObmuAACZZtVKCZo052.png

wKiom1gi-SewzccvAABgMZf510o654.png

操作中可能会出现的问题

1>缩减后的文件系统大小大于逻辑卷大小,会导致设备不可用
解决办法先扩展逻辑卷大小,在执行缩减文件系统,缩减逻辑卷大小
2>没有从物理卷中移出设备,直接在fdisk中删除设备
物理卷中会出现不可知的分区,用vgreduce --removemissing 物理卷组 删除不可知的设备

## 3.LVM快照 ## --保证数据的安全

在磁盘中写入数据
mount /dev/hello/lv0 /mnt
touch /mnt/file{1..10}
ls /mnt

wKioL1gi-cXSzM2JAAA3zT5KL5g463.png

创建快照
umount /mnt
lvcreate -L 10M -n lv0-backup -s /dev/hello/lv0
lvs
wKiom1gi-cbjaGHZAABy56yhMVM125.png

删除数据

mount /dev/hello/lv0-backup /mnt

ls /mnt

rm -fr /mnt/*

wKioL1gi-cbjj_WBAAA4SBc-RWo235.png
重新创建快照
umount /mnt
lvremove /dev/hello/lv0-backup
lvcreate -L 10M -n lv0-backup -s /dev/hello/lv0

wKioL1gi-neC9Ia7AABfXX3MA6Q437.png

数据恢复
mount /dev/hello/lv0-backup /mnt
ls /mnt

wKiom1gi-nfClrE8AABhAHwLqRs523.png
## 4.LVM 删除## --按顺序删除

lvremove         //删除快照和逻辑卷

wKioL1gi-ubhgxvaAACgbqSVtpg433.png

vgremove         //删除物理卷组

wKiom1gi-ueQYjzTAABI-blHClA327.png
pvremove         //删除物理卷

wKioL1gi-uehrp4_AABE0WUQL-0829.png
## 5.命令和脚本创建分区 ##

wKiom1gi-0jAubpaAAAXSsByphc987.png

wKiom1gi-0fT7c4TAAAXPqC5C5w546.png