当系统中数据量超过单块硬盘的存储容量,仅仅通过添加存储硬件是无法解决该问题的,因为当另一个硬件设备挂载到系统中时,原来的将会被卸载,因此达不到扩展存储空间的目的。
LVM程序能够解决这个问题,它能够将不同硬件设备的存储空间连接到一起从而能被系统正常使用,就如同将两个橘子榨成汁融合在一起,两个橘子就相当于两块不同的硬盘,想喝多少果汁,就从LVM里面倒出多少
pv | 物理卷 被处理过的物理分区 |
---|---|
pe | 物理扩展 设定存储最小单元 |
vg | 物理卷组 捆绑pv到一个组中 |
lv | 逻辑卷 分配最终的使用设备 |
为了直观感受实验的每一步结果,先建立监控过程
mkdir /data
watch -n 1 "pvs;echo ====;vgs;echo =====;lvs;echo =====;df -h /data"
1)建立物理分区并设定分区type为lvm
2)pvcreate /dev/设备名 #创建pv
3)vgcreate vg0 -s 2M /dev/设备名 #创建vg,-s设定pe大小位2M
4)lvcreate -L 200M -n lv0 vg0 #创建lvm,-L指定大小 -n指定名称
5)格式化,以下两个命令中的目录其实意义一样
mkfs.xfs /dev/mapper/vg0-lv0
mkfs.xfs /dev/vg0/lv0
6)mount /dev/vg0/lv0 /指定挂载目录/ #挂载
拉伸设备:
lvextend -L 500M /dev/mapper/vg0-lv0
xfs_growfs /data
xfs_growfs /dev/vg0/lv0
lvextend -L 800M /dev/mapper/vg0-lv0
resize2fs /dev/mapper/vg0-lv0
xfs文件系统不支持缩减ext文件系统可以
mkfs.ext4 /dev/vg0/lv0 #之前已经做过就不用重复
1)卸掉挂载文件
umount /data/
2)e2fsck -f /dev/vg0/lv0
3)与拉伸顺序相反,先缩减系统文件
resize2fs /dev/vg0/lv0 100M
mount /dev/vg0/lv0 /data/
6)vgreduce vg0 /dev/vdb2
补充:此时vdb1是在被使用中,若是想卸下vdb1而不是vdb2的话,需要先将vbd1中占用的空间移动到vbd2中,从而释放vdb1的空间
pvmove /dev/vdb1 /dev/vdb2
7)pvremove /dev/设备名
在第6)步中,卸下哪个vbd,就可以移除掉哪个vdb
umount /data
3)生成LVM快照
lvcreate -L 30M -n lv0-backup -s /dev/vg0/lv0
mount /dev/vg0/lv0-backup /data
5)删掉/data下文件
6)取消快照挂载,删除这个快照并建立新的快照之后再次挂载查看文件
按如下顺序
umount /dev/mapper/vg0-lv0
lvremove /dev/vg0/lv0
vgremove vg0
pvremove /dev/vdb1
pvremove /dev/vdb2
若没有安装vdo
dnf search vdo
dnf install vdo -y
vdo create --name=vdo设备名 --device=/dev/设备名(硬盘)
vdo status --name=vdo设备名 | less
在less中 按/+关键字搜索
其中:
Deduplication: enabled | vdo检测并删除重复数据的功能时开启 |
---|---|
Compression: enabled | vdo数据压缩功能开启 |
mkfs.xfs -K /dev/mapper/vdo设备名 #格式化vdo设备的文件系统为xfs
mkdir /data #创建一个目录用于挂载vdo设备
mount /dev/mapper/vdo设备名 /指定目录 #挂载vdo设备到指定目录
这里vdo设备名是westos_vdo1
vdostats --human-readable %查看vdo设备信息
用wacth命令监控
watch -n 1 “vdostats --human-readable”
在真机中两次复制同一文件到vdo设备中,第一次用原文件名,第二次同样的文件重命名为test.img
可以看到设备内存在第二次发送后没有变化,只有saving变为50%说明两个文件内容重复,但也都保留了下来
reboot
1、umount /dev/mapper/westos_vdo1
2、vdo stop --name westos_vdo1
3、vdo remove --name westos_vdo1