前言
我们之前已经介绍了逻辑卷管理器LVM,他的主要功能就是能够伸缩文件系统,使得人们能够更加灵活的使用磁盘空间。但是LVM的出现却不能解决数据优化的问题,在我们的设备上往往会出现一些重复数据或者是空区块的情况,这会大大的浪费我们的磁盘空间,这些问题该如何解决呢?这就要使用到我们今天的主角——虚拟数据优化器VDO了
1. VDO是什么?
VDO即Virtual Data Optimize,中文名为虚拟数据优化器,它可以通过压缩或删除设备上的数据来优化存储空间。
VDO一般置于现有块存储设备(如:本地磁盘)的顶部,分为三个阶段来进行工作,从而减少存储设备上的占用空间。
- 零区块的排除
- 删除重复数据
- 压缩数据
2. 建立VDO设备
安装VDO要点:VDO设备必须安装在新盘上,当然如果你的磁盘并不是新盘的话,也可以通过初始化来获得一个新盘。
这部分用到的命令如下:
dd if=/dev/zero of=/dev/vdb bs=1M count=1 作用:初始化磁盘
dnf install vdo -y 安装vdo
vdo create --name=mars_vdo1 --device=/dev/vdb 将设备/dev/vdb创建名为mars_vdo1的vdo
vdo status --name=mars_vdo1 |less 使用less翻页阅读名为mars_vdo1的vdo功能状态
具体操作如下:
创建vdo并使用less翻页阅读相关功能状态,主要查看该vdo的两个功能:删除重复数据、数据压缩是否处于开启状态,具体如下:
当Deduplication和Compression两个功能enabled时即是功能开启状态。
3. VDO设备的挂载及使用
创建好vdo后,它并不会自动开始工作,我们还需要对vdo设备进行初始化并且将它挂载在一个空目录下才能使vdo开始它的数据优化工作。
这部分使用的命令如下:
mkfs.xfs -K /dev/mapper/mars_vdo1 初始化vdo
mkdir /mars_vdo 建立一个可以用于挂载vdo的空目录
mount /dev/mapper/mars_vdo1 /mars_vdo/ 挂载vdo
具体操作如下:
初始化挂载完成后我们就可以使用vdo了,在此,我们还有几个关于vdo设备的命令如下:
vdo stop --name 设备名称 关闭VDO设备
vdo start --name 设备名称 开启VDO设备
vdo remove --name 设备名称 删除VDO设备
4. 测试vdo
以上我们就可以使用vdo了,接下来让我们见识一下vdo的魅力吧。
基本思路是:挂载vdo后,我们建立一个与vdo中的某个文件内容相同的重复文件或者某个空白文件,然后检测建立该文件前后我们设备存储的使用率。为了使得测试效果更明显,我们需要一个大文件作为实验素材,如果你的主机中难以找到大文件,可以使用以下操作:
建立素材使用到的命令:
touch big 建立空文件
dd if=/dev/zero of=big bs=1M count=1024 使用1G空白区域覆盖该文件获得1G空文件
ls -l big
history >> big 将history内容追加到文件中
ls -l big
具体操作如下:
得到这个大文件素材后我们终于可以开始我们的测试了。
测试使用的命令如下:
df -h /mars_vdo/ 查看挂载情况
vdostats --human-readable 读取vdo存储情况
cp big /mars_vdo/big1 复制大文件
vdostats --human-readable 再次读取vdo存储情况
操作过程如下:
我们可以发现即使将big文件存入了mars_vdo中,该vdo的存储占用率等并没有发生很大的变化,这主要是因为vdo设备排除了零区块。
如果你们的主机中有非空的大文件,可以再做一次这个测试,来检测以下vdo删除重复数据的功能。需要注意的是,检测重复数据需要确保vdo中至少有两个内容相同的文件,观察出现重复文件前和重复文件后的存储占有率。
5. VDO的永久挂载
说到永久挂载,那必然要先想到我们的设备挂载策略文件/etc/fstab,想要永久挂载即在系统开机时能够自动挂载我们的vdo设备到指定目录上,需要对我们刚提到的文件进行编写,文件内容如下:
/dev/mapper/mars_vdo /mars_vdo xfs defaults,x-systemd.requires=vdo.service 0 0
需注意:x-systemd.requires=vdo.service意思是在挂载该目录前需要先开启vdo服务,一定要有它,否则在开机的时候由于vdo服务未开启,可能导致挂载失败,将会无法开机。
相关命令如下:
vim /etc/fstab 编写设备挂载策略文档/etc/fstab
reboot 重启系统
df -h 查看挂载设备
具体操作如下:
其中设备挂载策略文件中如下:
重启设备后,df
查询挂载设备,发现vdo设备已经自动挂载。
6. 删除VDO
最后,我们看来看一下关于VDO的最后一个部分,VDO的删除是如何操作的呢?
删除VDO设备流程的命令如下:
umount /mars_vdo 删除设备前需卸载
vim /etc/fstab 删除自动挂载VDO的内容
vdo stop --name mars_vdo1 关闭VDO设备
vdo remove --name mars_vdo1 删除VDO设备
ls -l /dev/mapper 查看是否删除成功
具体操作如下:
以上就是我们关于VDO的全部内容了~~~~~~~
下一篇文章见呐~