目录
一、逻辑卷
1、几个概念
pv | 物理卷,被处理过的物理分区 |
vg | 物理卷组,多个pv捆绑到一个起称为物理卷组 |
lv | 逻辑卷,分配最终的使用设备 |
pe | 物理扩展,设定存储最小单元 |
2、建立监控过程
第一步:这里先在根下创建一个目录</data>,稍后进行的实验都在这里进行。
watch -n 1 "pvs;echo ====;vgs;echo ===;lvs;echo ===;df -h /data"
第二步: 为虚拟机添加一个新硬盘。
3、lvm设备建立
这里先理解一下概念,也就是为什么要建立lvm设备?在之前的学习中,空间容量一旦指定下来就不能再改变大小了,而实际情况中,当服务器给客户指定一定空间的存储容量后,如果用户数据过多,导致容量不够,那么接下来就应该在原有的容量基础上再加一些;那么这就需要涉及到硬盘存储的弹性空间了,用户数据过多时,适当增加容量,数据过少时,适当减少容量。按需分配。这样既可以满足用户需求,又可以避免服务器存储成本过大。
建立物理分区并设定分区type为lvm:
第一步:在<fdisk>命令下创建分区,将创建好的分区类型设置为<Linux LVM>
第二步:创建pv
使用<pvcreat >命令将刚才的新分区建立为pv的分区
pvcreate /dev/vdb1 #创建pv
第二步:创建vg
vgcreate -s 2M vg0 /dev/vdb1 #创建vg,并将pe大小设置为2M
使用<vgcreate>命令将刚才的分区创建为vg分区,其中参数<-s>为pe大小,不设置时默认为4M,这里设置为2M。
第三步:创建lvm
lvcreate -L 200M -n lv0 vg0 #创建lvm,-L指定大小,-n指定名称
使用<lvcreate>命令在刚才创建的vg(物理卷组)上建立lvm分区,参数<-L>指定分区大小,参数<-n>指定lvm分区的名称。
第四步:格式化
以上三步新建立的lvm分区需要格式化以后才能使用
mkfs.xfs /dev/vg0/lv0 #将lvm分区格式化
第五步:挂载
mount /dev/vg0/lv0 /data #将lvm分区挂载在/data目录下
到了这里lvm分区就建立好了,接下来就是调整分区大小了。
4、lvm拉伸
(1)当vg中的容量充足时
第一步:先拉伸lvm设备
lvextend -L 500M /dev/vg0/lv0 #拉伸设备
第二步:再拉伸文件系统(rhel8中只能使用设备或挂载点都可以)
xfs_growfs /dev/vg0/lv0 #拉伸文件系统
注意:如果是ext文件系统,只能使用<resize2fs>命令
resize2fs /dev/vg0/lv0 500M #重置容量为500M
(2)当vg中的容量不足时
当vg中容量不足时,就需要在vg组中添加新的物理卷pv以拓展vg组的容量。
以下图所示,当lvm请求1500M的空间时,vg总共只有1000M,就会显示空间不足而报错。所以要给vg组中再加入一块pv分区。
第一步:按照上述步骤的方法,再建立一个格式为<Linux LVM>的分区,并使用<pvcreate>命令转化为pv设备后再<vgcreate>命令加到<vg0>物理卷组中。
第二步:再使用<lvcreate>命令拉伸设备后,接着用<xfs_growfs>命令拉伸文家系统。新的LVM设备容量就调整好了。
5、lvm缩减
注意:xfs文件系统不支持缩减,ext文件系统支持缩减。(所以在刚开始设置的时候应该优先选择ext文件系统)
在把分区的文件系统格式化为<ext4>后,以下为缩减步骤:
第一步:卸载设备,并查看设备占用情况
umount /data #卸载设备
e2fsck -f /dev/vg0/lv0 #查看设备占用情况
第二步:重设分区大小,并缩减lvm分区
resize2fs /dev/vg0/lv0 100M #重设分区大小
lvreduce -L 100M /dev/vg0/lv0 #缩减lvm设备大小
<resize2fs>命令是在物理上限制<dev/vg0/lv0>的大小,然后使用<lvreduce>缩减lvm设备的大小。
第三步:重新挂载
可以看到重新挂载后的lvm设备大小只有100M了,实际显示67M是因为文件系统等等因素占用。
6、lvm删除
lvm删除操作本着“正着建,倒着删”的原则,即建立lvm的时候按照<pv-----vg--------lv>的顺序进行,那么删除的时候就按照<lv------vg------pv>的顺序进行。
(1)在删除之前先考虑一个问题:
刚才在硬盘上新建了两个分区<dev/vdb1>和</dev/vdb2>,大小都是1G,现在lvm设备只占用了第一个分区的一部分,第二个分区没有使用,可以直接删除。那么问题来了,如果我想删除第一个设备该怎么办呢?
这就需要先将第一个分区上的东西全部移动到第二个分区上,让第一个分区闲置,就可以删除了。具体操作步骤如下:
第一步:移动设备
pvmove /dev/vdb1 /dev/vdb2 #从vdb1中移动pv设备到vdb2中
移动完成后,通过命令监视窗口可以看到,</dev/vdb1>的已经完全闲置,</dev/vdb2>开始被占用了。
第二步:从vg组中解除设备占用
pvreduce vg0 /dev/vdb1 #解除vdb1的vg0组的占用
命令执行后,可以看到</dev/vdb1>已经不属于物理卷组“vg0”了。
第三步:移除闲置分区
pvremove /dev/vdb1 #移除vdb1设备
执行命令后,可以看到lvm使用的分区就只有一个</dev/vdb2>了。
最后总结一下lvm设备删除的常规操作:
(1)解除设备占用: umount /dev/vg0/lv0
(2)解除lvm占用:lvremove /dev/vg0/lv0
(3)解除vg占用:vgremove vg0(移除vg0物理卷组以后,设备就自动退出vg0组了,不必再<vgreduce vg0 /dev/vdb1>了)
(4)解除pv占用:pvremove /dev/vdb1
二、vdo(Virtual Data Optimize)
vdo(Virtual Data Optimize)虚拟数据优化器:
kvdo ##压缩数据
uds ##优化重复数据
vdo设备建议新加一块硬盘,在新的硬盘上进行测试
1、vdo设备的建立
第一步:安装vdo
dnf install vdo -y #安装vdo服务/应用
第二步:创建vdo设备
(1)检查系统内当前硬盘
(2)创建vdo设备
vdo creat --name=westos_vdo1 --device=/dev/vdb #创建vdo设备
vdo status --name=westos_vdo1 | less #查看vdo设备
#####vdo状态中检查以下两项#####
Deduplication: enabled #vdo检测并删除重复数据的功能时开启
Compression: enabled #vdo数据压缩功能开启
创建vdo设备:
查询vdo状态:
使用vdo设备:
vdo设备创建好以后,还需要先进行格式化,然后挂载才可以使用。
mkfs.xfs -K /dev/mapper/westos_vdo1 #格式化vdo设备
mkdir /westos_vdo #创建挂载目录
mount /dev/mapper/westos_vdo1 /westos_vdo #挂载vdo设备
第三步:测试vdo性能
使用下边命令可以查看vdo设备的存储状态,为了方便观察,我们把它监视起来。
vdostats --human-readale #查看vdo设备的存储状态
先下载一个文件,然后向目录</westos_vdo>中复制一份,再改变文件名重新复制一份。
第一次复制文件时,vdo设备的空间减小了。
第二次复制文件时,虽然改变了文件名,但是文件和第一个文件一模一样,就不会重复占用空间,所以vdo设备的容量不变。
第四步:vdo设备开机启动
开机自动挂载vdo设备,需要更改</etc/fstab>文件。
由于vdo设备比较特殊,如果直接和普通设备的挂载方法,将会导致系统启动失败。所以先<man vdo>查询“fstab”挂载帮助,然后在</etc/fstab>文件中编写开机自动挂载命令。
/dev/mapper/westos_vdo1 /westos_vdo xfs default,x-systemd.requires=vdo.service 0 0
vdo设备名 挂载目录 文件系统类型 参数 不备份 不检测
2、vdo设备的删除
先卸载,再移除(如果更改了“fstab”文件,一定要先还原)
1>>>>>umount /westos_vdo #卸载
2>>>>>vdo stop --name westos_vdo1 #停止do设备
3>>>>>vdo remove --name westos_vdo1 #删除vdo设备
三、本章总结
1、vdo设备的文件删除后,内存并不会被释放,在复制新文件后会直接覆盖掉已删文件所占用的内存
2、