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

时间:2020-02-23 14:37:51  来源:igfitidea点击:

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

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

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

安装虚拟数据优化器(VDO)

对于RHEL和CentOS Linux发行版,我们可以通过运行以下命令轻松安装Virtual Data Optimizer(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!

创建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卷要使用的块设备。5G是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 growLogical扩展现有卷。容量增加到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

使用文件系统格式化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%

测试重复数据删除:

不良下载一个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%,证明发生了重复数据删除以减少同一文件的冗余副本的空间消耗。