RHEL8_Linux虚拟数据优化器VDO

本章主要介绍虚拟化数据优化器

  • 什么是虚拟数据优化器VDO
  • 创建VDO设备以节约硬盘空间

1.了解什么是VDO

        VDO全称是Virtual Data Optimize(虚拟数据优化),主要是为了节省硬盘空间。

        现在假设有两个文件file1和 file2,大小都是10G。file1和 file2中包含了8G的相同数据, 如图中的灰色部分。这个相同数据在硬盘中存储了两份,所以这两个文件占用的硬盘空间是20G。

如果采用了VDO,效果如图

        file1和 file2大小都是10G,两个文件中都有8G的相同数据。那么,这个相同数据在硬盘中只存储一份,让filel和 file2共同使用。所以,最终在硬盘上占用的空间是12G,这样一个20G大小的硬盘,完全可以存储大于20G的文件,主要看这些文件中到底有多少相同数据。
        所以,VDO实现的效果是,多个文件中有相同数据,这个相同数据只存储一份,从而实现节省硬盘空间的目的。

2.配置VDO

        首先要安装VDO相关软件包,步骤如下。
1)挂载光盘,命令如下。
[root@node01 /]# mount /dev/cdrom /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@node01 /]
这里准备把光盘作为yum 源。
2)编写repo文件,命令如下
[root@node01 /]# cat /etc/yum.repos.d/aa.repo 
[aa]
name=aa
baseurl=file:///mnt/AppStream
enabled=1
gpgcheck=0

[bb]
name=bb
baseurl=///mnt/BaseOS
enabled=1
gpgcheck=0
[root@node01 /]# 
3)安装VDO,命令如下。
[root@node01 /]# yum -y install vdo kmod-kvdo
4)查看 VDO设备,命令如下。
[root@node01 /]# vdo list 

[root@node01 /]# 
        没有任何输出,说明现在还没有任何VDO设备。
        因为相同数据只存储一份,大大地节省了存储空间,所以本来20G的磁盘空间现在存储 30G、40G、50G的数据是完全有可能的。

    

5)面创建一个名称为vdo1、底层设备为/dev/sdc的VDO设备,逻辑大小为50G,命令如下。
[root@node01 ~]# vdo create --name vdo01 --device /dev/sdc --vdoLogicalSize 30G
Creating VDO vdo01
      The VDO volume can address 26 GB in 13 data slabs, each 2 GB.
      It can grow to address at most 16 TB of physical storage in 8192 slabs.
      If a larger maximum size might be needed, use bigger slabs.
Starting VDO vdo01
Starting compression on VDO vdo01
VDO instance 0 volume is ready at /dev/mapper/vdo01
[root@node01 ~]#
        上面提示的一堆信息不用管,最终能看到的是vdo1已经创建好了,可以通 过/dev/mapper/vdo1来使用。
6)再次查看有多少VDO设备,命令如下。
[root@node01 ~]# vdo list 
vdo01
[root@node01 ~]# 
7)格式化这个VDO设备,命令如下。
[root@node01 ~]# mkfs.xfs -K /dev/mapper/vdo01 
meta-data=/dev/mapper/vdo01      isize=512    agcount=4, agsize=1966080 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=7864320, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=3840, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@node01 ~]# 
注意:这里-K(大写)的意思类似于Windows中的快速格式化。
8)把这个 VDO设备挂载到/vdo1目录上,命令如下。
[root@node01 ~]# mkdir /vdo01
[root@node01 ~]# mount /dev/mapper/vdo01 /vdo01/
[root@node01 ~]# 
9)如果希望能永久挂载,需要写入/etc/fstab中,命令如下。
[root@node01 ~]# grep vdo /etc/fstab 
/dev/mapper/vdo01	/vdo01	xfs	defaults	0 0
[root@node01 ~]# 
10)需要注意的是,这里一定要有_netdev选项,否则重启系统时,系统是启动不起来的。 查看vdo1的空间使用情况,命令如下。
[root@node01 ~]# vdostats --hu
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdo01        30.0G      4.0G     26.0G  13%           98%
[root@node01 ~]#
        这里自身就消耗了4G空间(Used那列),因为这里不存在文件,所以空间节省率为98%
(Space saving%那列)。

3.测试VDO

1)往 node01上传一个比较大的文件,这里上传的是一个centos7的软件包,命令如下。
 wget https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso?spm=a2c6h.25603864.0.0.41be2d1cNwXIGn

这个软件包大小是11M

2)下面开始第一次把 CentOS-7拷贝到/vdo01中并命名为centos7,命令如下。
[root@node01 ~]# cp /root/CenOS-7 /vdo01/centos7
3)可以看到,现在消耗空间是8G,因为只有一个文件不存在相同数据,所以空间节省率 为3%。
[root@node01 ~]# vdostats --hu
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdo01        30.0G      8.0G     22.0G  26%            3%
[root@node01 ~]# 
4)下面开始第二次把CenOS-7拷贝到/vdo01中并命名为centos02,命令如下。
[root@node01 ~]# cp /root/CenOS-7 /vdo01/centos02
[root@node01 ~]# vdostats --hu
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdo01        30.0G      8.0G     22.0G  26%           51%
[root@node01 ~]# 
        因为是从同一个文件拷贝的,所以 file2的内容和filel的内容是完全相同的,这里磁盘使用量仍然是8G。
        因为实际写入了两个8G的文件,本来应该消耗16G的空间,但是这两个文件是相同的,所以实际消耗还是8G的空间,节省率在50%左右。
5)下面开始第三次把CentOS-7拷贝到/vdo01中并命名为centos03,命令如下。
[root@node01 ~]# cp /root/CenOS-7 /vdo01/centos03
[root@node01 ~]# vdostats --hu
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdo01        30.0G      8.0G     22.0G  26%           67%
[root@node01 ~]# 
        因为是从同一个文件拷贝的,所以 centos7、centos02、centos03三个文件的内容是完全相同的,这里磁盘使用量仍然是8G。
        因为实际写入了三个4G的文件,本来应该消耗12G的空间,但是这三个文件是相同的,所以实际消耗还是8G的空间,节省率在67%左右
6)要删除VDO设备,命令如下
[root@node01 ~]# vdo remove -n vdo01     //移除vdo01
[root@node01 ~]# vdo list        //查看是否删除

相关推荐

  1. RHCL8_Linux_ansible的使用

    2023-12-11 15:42:02       40 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-11 15:42:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-11 15:42:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-11 15:42:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-11 15:42:02       20 阅读

热门阅读

  1. React基础知识入门

    2023-12-11 15:42:02       48 阅读
  2. PTA:哈夫曼编码

    2023-12-11 15:42:02       45 阅读
  3. mysql8.x创建insert/update/delete触发器

    2023-12-11 15:42:02       41 阅读
  4. 算法通关村第十七关 | 黄金挑战 | 跳跃游戏

    2023-12-11 15:42:02       44 阅读
  5. execution unit的概念与实现----AGU

    2023-12-11 15:42:02       40 阅读
  6. C++- 格式化输出

    2023-12-11 15:42:02       43 阅读
  7. Redisson的基本使用

    2023-12-11 15:42:02       38 阅读
  8. 学习-ES

    2023-12-11 15:42:02       37 阅读
  9. 通讯录实现

    2023-12-11 15:42:02       35 阅读
  10. 央企国企相关

    2023-12-11 15:42:02       40 阅读