使用虚拟数据优化器(VDO)压缩和重复覆盖存储

时间:2020-02-23 14:30:16  来源:igfitidea点击:

在本教程中,我们将学习如何使用虚拟数据优化程序(VDO)压缩和重复数据删除存储设备上的数据,以确保优化存储空间。
Rhel/CentOS&Fedora Linux发行版具有虚拟数据优化器(VDO)Linux设备映射器可供安装。

VDO通过减少块设备上的磁盘空间使用,并最大限度地减少数据的复制,节省磁盘空间甚至增加数据吞吐量来优化块设备上的数据占用空间。
VDO包括两个内核模块:KVDO模块 - 透明控制数据压缩,UDS模块 - 处理数据重复数据删除。

VDO层被放置在现有块存储设备的顶部,例如本地磁盘,RAID设备,加密设备。
然后将诸如文件系统和LVM逻辑卷的存储层放置在VDO设备的顶部。

第1步:安装虚拟数据优化程序(VDO)

对于RHEL和CentOS Linux发行版,我们可以通过运行下面的命令轻松安装虚拟数据优化器(VDO)Linux设备映射器。

sudo yum -y install vdo kmod-kvdo

等待安装完成。

Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: centos.mirror.liquidtelecom.com
 * extras: centos.mirror.liquidtelecom.com
 * updates: centos.mirror.liquidtelecom.com
base                                                | 3.6 kB     00:00     
extras                                              | 2.9 kB     00:00     
updates                                             | 2.9 kB     00:00     
(1/2): extras/7/x86_64/primary_db                     | 159 kB   00:06     
(2/2): updates/7/x86_64/primary_db                    | 6.7 MB   00:40     
Resolving Dependencies
--> Running transaction check
---> Package kmod-kvdo.x86_64 0:6.1.2.41-5.el7 will be installed
---> Package vdo.x86_64 0:6.1.2.41-4.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===========================================================================
 Package          Arch          Version                  Repository   Size
===========================================================================
Installing:
 kmod-kvdo        x86_64        6.1.2.41-5.el7           base        317 k
 vdo              x86_64        6.1.2.41-4.el7           base        624 k
Transaction Summary
===========================================================================
Install  2 Packages
Total download size: 941 k
Installed size: 4.5 M
Downloading packages:
(1/2): kmod-kvdo-6.1.2.41-5.el7.x86_64.rpm            | 317 kB   00:01     
(2/2): vdo-6.1.2.41-4.el7.x86_64.rpm                  | 624 kB   00:24     
--------------------------------------------------------------------------
Total                                          38 kB/s | 941 kB  00:24     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : kmod-kvdo-6.1.2.41-5.el7.x86_64                         1/2 
  Installing : vdo-6.1.2.41-4.el7.x86_64                               2/2 
  Verifying  : kmod-kvdo-6.1.2.41-5.el7.x86_64                         1/2 
  Verifying  : vdo-6.1.2.41-4.el7.x86_64                               2/2 
Installed:
  kmod-kvdo.x86_64 0:6.1.2.41-5.el7       vdo.x86_64 0:6.1.2.41-4.el7      
Complete!

第2步:创建VDO卷

VDO批量是我们使用VDO创建的逻辑设备。
它们被视为磁盘分区。
我们只需使用文件系统格式化它们,然后可以像常规文件系统一样安装VDO卷。
如果我们喜欢LVM,可以使用VDO卷作为LVM物理卷。

我有一个10 GB的磁盘将用于此练习。

$ lsblk  /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb    8:16   0  10G  0 disk

这是我们将如何创建VDO卷:

$sudo vdo create --name myvdo --device /dev/sdb --vdoLogicalSize 5G
Creating VDO myvdo
Starting VDO myvdo
Starting compression on VDO myvdo
VDO instance 0 volume is ready at /dev/mapper/myvdo

其中:MyVDO是VDO给用户的逻辑设备的名称./dev/sdb是vdo卷的块设备是VDO卷的逻辑大小。
这是可选的,它可以超过实际块设备的物理大小。

显示启动和非启动卷的列表。

$sudo vdo list --all
myvdo

运行vdo status命令以分析卷。

$sudo vdo status -n myvdo
VDO status:
  Date: '2017-02-12 12:42:04+03:00'
  Node: repo-server-01.example.com
Kernel module:
  Loaded: true
  Name: kvdo
  Version information:
    kvdo version: 6.1.2.41
Configuration:
  File: /etc/vdoconf.yml
  Last modified: '2017-02-12 12:39:36'
VDOs:
  myvdo:
    Acknowledgement threads: 1
    Activate: enabled
    Bio rotation interval: 64
    Bio submission threads: 4
    Block map cache size: 128M
    Block map period: 16380
.......

应启用压缩和重复数据删除。

$sudo vdo status -n myvdo | egrep 'Compression|Deduplication'
    Compression: enabled
    Deduplication: enabled

我们可以使用命令Vdo Buglogical成长现有卷。
我将增加到10GB的总容量。

sudo vdo growLogical -n  myvdo --vdoLogicalSize 10G

确认:

$sudo vdo status -n myvdo | grep size
    Block map cache size: 128M
    Block size: 4096
    Logical size: 10G
    Physical size: 10G
    Read cache size: 0M
    Slab size: 2G
        block map cache size: 134217728
        block size: 4096

步骤3:使用文件系统格式化VDO卷。

我们可以使用我们选择的文件系统类型格式化VDO卷或者从中创建PV,VG和LV。

$sudo mkfs.xfs /dev/mapper/myvdo

对于LVM创建:

# Create PV
$sudo  pvcreate /dev/mapper/myvdo
Physical volume "/dev/mapper/myvdo" successfully created.
# Create VG
$sudo vgcreate vg01 /dev/mapper/myvdo
Volume group "vg01" successfully created
# Create LV
$sudo lvcreate -n lv01 -l+100%FREE vg01
Logical volume "lv01" created.
# Create a file system
$sudo mkfs -t xfs /dev/mapper/vg01-lv01 
meta-data=/dev/mapper/vg01-lv01  isize=512    agcount=4, agsize=655104 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2620416, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

我们现在可以注册新设备并安装它。

sudo udevadm settle
sudo mkdir /myvdo
--- For standard VDO volume --
$sudo mount /dev/mapper/myvdo1 /myvdo
--- For LVM --
$sudo mount /dev/mapper/vg01-lv01  /myvdo

用于持久安装,配置/etc/fstab文件。

UUID=XXXXX /myvdo xfs defaults,x-systemd.requires=vdo.service 0 0

我们还可以以人类可读形式显示统计信息。

$sudo vdostats --human-readable
Device                    Size      Used Available Use% Space saving%
/dev/mapper/myvdo        10.0G      4.0G      6.0G  40%           98%

第4步:测试重复数据删除:

我将下载ISO文件以测试重复数据删除。

wget http://mirror.centos.org/centos/7/os/x86_64/images/boot.iso

将文件复制到/myvdo目录。

sudo cp boot.iso /myvdo/boot1.iso

检查存储统计信息。

--- Before copy --
$sudo vdostats --human-readable
Device                    Size      Used Available Use% Space saving%
/dev/mapper/myvdo        10.0G      4.0G      6.0G  40%           98%
--- After copy --
$sudo vdostats --human-readable
Device                    Size      Used Available Use% Space saving%
/dev/mapper/myvdo        10.0G      4.2G      5.8G  42%            7%

我们可以注意到使用的字段的值从4.0g增加到4.2g,因为我们将文件复制到占用一些空间的卷。

让我们做同一个文件的第二份副本。

sudo cp boot.iso /myvdo/boot2.iso

再次查看卷统计信息。

$sudo vdostats --human-readable
Device                    Size      Used Available Use% Space saving%
/dev/mapper/myvdo        10.0G      4.2G      5.8G  42%           52%

我们可以看到使用过的卷空间没有改变。
相反,保存的音量空间的百分比增加到52%,证明了数据重复数据删除,以减少同一文件的冗余副本的空间消耗。