Linux高级存储管理
一、逻辑卷
1、定义
- 解决分区空间不够用或者分区空间绰绰有余的情况
pv | 物理卷(被处理过的物理分区) |
pe | 物理扩展(设定存储最小单元) |
vg | 物理卷组(捆绑pv到一个组中) |
lv | 逻辑卷(分配最终的使用设备) |
当逻辑卷存储不足时,会从物理卷组中获取空间,如果物理卷组存储也不足时,会将新的物理分区也处理为物理卷,添加到物理卷组中。
2、lvm的建立
(1)监控建立过程
watch -n 1 "pvs;echo ===;vgs;echo ===;lvs;echo ===;df -h /sk"
(2)建立物理分区并设定分区类型为lvm
fdisk /dev/vdb
- 命令具体含义参考——六、swap分区
(2)创建pv、vg、lvm
pvcreate /dev/vdb1 ##创建pv
vgcreate sk_vg -s 2M /dev/vdb1 ##创建vg名称为sk_vg,-s设定pe大小为2M
lvcreate -L 100M -n sk_lv sk_vg ##创建lvm -L指定大小 -n指定名称
lvcreate -l 100 -n sk_lv2 sk_vg ##创建lvm -l指定pe块数 -n指定名称
pvdisplay /dev/vdb1 ##查看pv的详细信息
vgdisplay sk_vg ##查看vg的详细信息
lvdisplay /dev/sk_vg/sk_lv ##查看lv的详细信息
lvdisplay /dev/sk_vg/sk_lv2
(3)格式化与挂载
mkfs.xfs /dev/mapper/sk_vg-sk_lv ##格式化
mount /dev/sk_vg/sk_lv /sk ##挂载
3、lvm拉伸
1、当vg中的容量充足时
分步操作:
lvextend -L 200M /dev/sk_vg/sk_lv ##拉伸设备
xfs_growfs /sk ##拉伸文件系统,rhel7中可以用设备或挂载点,rhel8中只能用挂载点
一步操作:
lvextend -r -L 500M /dev/sk_vg/sk_lv ##拉伸设备和文件系统
2、当vg中的容量不够时
先添加新的分区(方法参考创建/dev/vdb1)
再创建新的pv,添加到之前的vg中去,再进行拉伸
pvcreate /dev/vdb2 ##创建pv
vgextend sk_vg /dev/vdb2 ##添加新的pv到vg中
lvextend -r -L 1.5G /dev/sk_vg/sk_lv ##拉伸设备和文件系统
3、ext文件系统拉伸
lvextend -L 200M /dev/sk_vg/sk_lv ##拉伸设备
resize2fs /dev/mapper/sk_vg-sk_lv 200M ##拉伸文件系统
4、lvm缩减
- xfs文件系统不支持缩减,ext文件系统可以
(1)将xfs文件转为ext文件系统
umount /sk ##先卸载原挂载点
mkfs.ext4 /dev/sk_vg/sk_lv ##转换文件系统为ext4
mount /dev/sk_vg/sk_lv /sk ##重新挂载
(2)缩减
umount /sk ##卸载
e2fsck -f /dev/sk_vg/sk_lv ##检测数据
resize2fs /dev/sk_vg/sk_lv 100M ##缩减文件系统
lvreduce -L 100M /dev/sk_vg/sk_lv ##缩减设备
5、lvm删除
umount /dev/sk ##卸载
lvremove /dev/sk_vg/sk_lv ##删除lv
vgremove sk_vg ##删除vg
pvremove /dev/vdb1 ##删除pv
实验:将/dev/vdb1中的数据移到/dev/vdb2上,删除/dev/vdb1的pv
pvmove /dev/vdb1 /dev/vdb2 ##移动数据
vgreduce sk_vg /dev/vdb1 ##将/dev/vdb1从vg中移除
pvremove /dev/vdb1 ##删除pv
lvremove /dev/sk_vg/sk_lv2 ##删除lv(额外操作)
6、lvm快照
- 保护原有文件和设备不受破坏,相当于设备reset
-L
:要改变的设备数据大小,-n
:名称,-s
:快照对象
lvcreate -L 50M -n sk_lv-backup -s /dev/sk_vg/sk_lv
实验:
在快照对象中建立文件,创建快照,删除先前建立的文件,删除快照,重新创建快照,观察文件能否恢复
mount /dev/sk_vg/sk_lv /sk ##挂载快照对象
touch /sk/file{1..5} ##建立文件
umount /sk ##卸载
lvcreate -L 50M -n sk_lv-backup -s /dev/sk_vg/sk_lv ##创建快照
mount /dev/sk_vg/sk_lv-backup /sk ##挂载快照
rm -fr /sk/* ##删除建立文件
umount /sk ##卸载
lvremove /dev/sk_vg/sk_lv-backup ##删除快照
lvcreate -L 50M -n sk_lv-backup2 -s /dev/sk_vg/sk_lv ##再创建快照
mount /dev/sk_vg/sk_lv-backup2 /sk ##再挂载快照
ls /sk ##观察发现文件恢复
查看快照详细信息:
lvdisplay /dev/sk_vg/sk_lv-backup2
二、vdo
- vdo(Virtual Data Optimize)虚拟数据优化器
- kvdo——压缩数据
- uds——优化重复数据
1、vdo建立
dnf install vdo -y ##下载vdo,一般系统都会自带
vdo create --name sk_vdo --device /dev/vdb ##建立vdo
vdo status --name sk_vdo | grep Deduplication ##查看vdo检测并删除重复数据的功能是否开启
vdo status --name sk_vdo | grep Compression ##查看vdo数据压缩功能是否开启
vdo enableCompression --name sk_vdo ##
如何开启压缩数据和检测并删除重复数据的功能:
vdo enableCompression --name sk_vdo ##开启检测并删除重复数据的功能
vdo enableDeduplication --name sk_vdo ##开启数据压缩功能
2、使用vdo设备
mkfs.xfs -K /dev/mapper/sk_vdo ##格式化
mount /dev/mapper/sk_vdo /sk ##挂载vdo设备
3、测试vdo性能
vdostats --human-readable ##查看vdo设备使用情况
实验:将一大文件在挂载点复制多次,观察vdo设备使用情况
cp /run/media/root/RHEL-8-2-0-BaseOS-x86_64/images/install.img /sk ##复制大文件
4、vdo的永久挂载
vim /etc/fstab
mount -a ##立即读取/etc/fstab
5、vdo的删除
umount /dev/mapper/sk_vdo ##卸载
vim /etc/fstab ##删除挂载行
vdo remove --name sk_vdo ##删除vdo