(六)Linux的高级存储管理
一、lvm逻辑卷
传统的文件系统是基于分区的,一个文件系统对应一个分区。第一,不同的分区相对独立,无相互联系,各分区空间很容易利用不平衡,空间不能充分利用;第二,当一个文件系统/分区已满,无法对其进行扩充,就只能采用重新分区/建立文件系统,或者把分区中的数据迁移到另一个更大的分区中,再或者采用符号连接的方式使用其他分区的空间,十分繁琐。第三,如果要把硬盘上的多个分区合并在一起使用,只能采用再分区的方式,但这个过程需要数据的备份与恢复。
这个时候,我们可以采用LVM(Logical Volume Manager)逻辑卷管理。
用通俗易懂的话语讲解,我们可将物理设备(看做橘子),将其处理为pv物理卷(看做橙汁),再将多个pv物理分卷合成vg物理卷组(一大杯橙汁),这个物理卷组不能直接使用,需要将其划分为lvm逻辑卷(卖出去的小杯果汁),格式化成不同的文件系统后,分配给最终使用的设备,挂载后使用。
图解如下:
名称 | 解释 | 用途 |
---|---|---|
pv | 物理卷 | 被处理过的物理分区 |
pe | 物理拓展 | 设定存储最小单元 |
vg | 物理卷组 | 捆绑pv到一个组中 |
lv | 逻辑卷 | 分配最终使用的设备 |
二、lvm设备的创建及挂载
前置准备:建立监控
开启监控,便于实时查看pv,vg,lv的状态及数据目录的变化
watch -n 1 "pvs;echo ===;vgs;echo ===;lvs;echo ===;df -h /pub/"
1.lvm设备建立
实验过程
(1)首先使用fdisk /dev/sdb 交互式或者 parted脚本式建立物理分区
并设置type为lvm
command (m for help) :t pv
l
8e —> Linux LVM
(2)使用pvcreate 设备分区
创建pv物理卷;
使用vgcreate 物理卷组名字 设备分区 -s pe大小
创建vg物理卷组;
使用lvcreate -L 大小 -n 指定名称
创建lvm设备
(3)使用mkfs.文件类型 /dev/mapper/vg名称-lv名称
或者mkfs.文件类型 /dev/vg名称/lv名称
格式化为该类型文件系统
(4)挂载该逻辑卷到数据目录中,lvm设备创建完成
pvcreate /dev/sdb1 ##创建pv物理卷
vgcreate westosvg -s 2M /dev/sdb1 ##创建vg物理卷组 -s设定pe大小为2M
lvcreate -L 100M -n westoslv westosvg ##创建lvm -L指定大小 -n指定名称
mkfs.xfs /dev/mapper/westosvg-westoslv ##将lvm格式化为xfs文件系统
mount /dev/westosvg/westoslv /pub/ ##挂载到数据目录中
vgdisplay
vgdisplay
查看vg的属性信息
同理,还有lvdisplay
2.lvm拉伸
1)vg容量充足
lvm设备创建完成后,将其挂载到数据目录中,此时可以对该逻辑卷物理大小进行拉伸
lvextend -L 拉伸到的大小
对逻辑卷物理大小进行拉伸,此时文件系统仍然为原大小
xfs_growfs 挂载点
对文件系统进行拉伸
lvextend -L 200M /dev/mapper/westosvg-westoslv ##拉伸设备
xfs_growfs /pub/ ##拉伸文件系统,rhel7中可以使用挂载点或者设备
#rhel8中只能用挂载点
xfs_growfs /dev/mapper/westosvg-westoslv
#或者xfs_growfs /dev/westosvg/westoslv
2)vg容量不足
在拉伸lvm时,如果指定拉伸大小超出vg剩余容量的时候,无法进行拉伸
此时需要建立另一个分区,并使fdisk /dev/sdb2
将其类型改为Linux LVM
建立pv物理卷
使用vgextend vg名称 新分区
将新pv添加进vg
此时可以进行lvm设备的拉伸,拉伸方法同上
划分新分区
pvcreate /dev/sdb2
vgextend westosvg /dev/sdb2
lvextend -L 2500M /dev/westosvg/westoslv
xfs_growfs /dev/westosvg/westoslv ##同上,rehl8.0只能用设备,rehl7可以用挂载点
3.类型为ext4文件系统拉伸
当类型为ext4而非xfs(拉伸用xfs_growfs)时,使用resize2fs
拉伸文件系统
resize2fs /dev/mapper/westosvg-westoslv
或者
resize2fs /dev/westosvg/westoslv
4.lvm缩减
xfs文件系统不支持缩减
ext文件系统才可以缩减
(1)取消挂载,将lvm设备格式化为ecy4文件系统
umount /pub/
mkfs.ext4 /dev/westosvg/westolv
(2)缩减(顺序反过来)
使用e2fsck -f /dev/vg名称/lv名称
扫描空间大小
使用resize2fs /dev/vg名称/lv名称 缩减到的大小
缩减文件系统
使用lvreduce -L 缩减到的大小 /dev/vg名称/lv名称
缩减物理设备大小
挂载
vgreduce vg名称 分区
缩减vg
pvreduce 分区
缩减pv
e2fsck -f /dev/westovg/westoslv ##扫描空间大小,以防止缩减出错
resize2fs /dev/westosvg/westoslv 1500M ##缩减文件系统
lvreduce -L 1500M /dev/westosvg/westoslv ##缩减lvm物理设备大小
mount /dev/westosvg/westoslv /pub/
vgreduce westosvg /dev/sdb2
pvremove /dev/sdb2
5.lvm快照文件
lvm逻辑卷支持快照功能,快照可以保存原始lvm设备里的内容,读取设备的时候是从母盘读取,但写数据会写入快照
所以,我们可以将lvm设备的快照挂载到指定数据目录中,避免在数据目录中执行操作时对原lvm设备的数据造成损坏
lvcreate -s 关键选项,创建snap快照的意思
-L 快照大小的容量
-n 指定名称
-l 指定pe数量
(1)创建快照
lvcreate -L 快照大小的容量 -n
指定名称 -s /dev/vg名称/lv名称
(2)当不小心操作不当,删除部分文件,可恢复快照
取消挂载
lvremove /dev/vg名称/lv快照名称(创建时指定的)
lvcreate -L 50M -n
指定名称 -s /dev/vg名称/lv名称
重新挂载
5.lvm设备的删除
pvremove /dev/sdb1 #移除物理卷
lvremove /dev/westosvg/westoslv #移除lvm设备
vgremove /dev/westosvg #移除物理卷组
三、vdo虚拟数据优化器
虚拟数据优化器vdo(Virtual Data Oprimize)可以对数据进行优化压缩处理
1.vdo设备的建立
dnf install vdo -y #此处需要配置本地软件仓库
vdo create --name=westos_vdo1 --device=/dev/sdb
vdo status --name=westos_vdo1 | less ##查看服务是否开启
输入:/Deduplication
Deduplication: enabled ##vdo 检测并删除重复数据的功能开启
输入:/Compression
Compression: enabled ##vdo数据压缩功能开启
2.挂载vdo设备
前置条件:开启监控
watch -n 1"df -H /westosdir/;echo ===;vdostats --human-readable"
临时挂载
mkfs.xfs -K /dev/mapper/westos_vdo1
mkdir /westos_vdo
mount /dev/mapper/westos_vdo1 /westos_vdo
永久挂载
编辑文件vim /etc/fstab
,设置永久挂载
3.测试vdo性能
vdosatas --human-readable
4.vdo设备的删除
vdo stop --name 设备名称 ##关闭vdo设备
vdo start --name 设备名称 ##开启vdo设备
vdo remove --name 设备名称 ##移除vdo设备