VDO Deduplication and Compression in RHEL 9

VDO manager has been deprecated in RHEL 9 (which existed in RHEL 8), and lvmvdo is newly added which supports for Virtual Data Optimizer in LVM.

Virtual Data Optimizer (VDO) driver, which optimizes the data footprint on block devices. VDO is a Linux device mapper driver that reduces disk space usage on block devices, and minimizes the replication of data, saving disk space and even increasing data throughput.

–vdo option has been added in lvcreate which specifies the command is handling VDO LV.

 

Below steps can be followed to create a storage virtual data optimizer [VDO].

1.Install the vdo package along with its dependencies to enable VDO in the system.

# yum install vdo

2. Identify the storage device that will be used for the VDO volume.

# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0    1G  0 disk 
sr0                 11:0    1 1024M  0 rom  
vda                252:0    0   18G  0 disk 
├─vda1             252:1    0    1G  0 part /boot
├─vda2             252:2    0    7G  0 part 
│ ├─rhel-root      253:0    0  5.2G  0 lvm  /
│ └─rhel-swap      253:1    0  1.8G  0 lvm  [SWAP]
└─vda3             252:3    0    2G  0 part 
  ├─testvg-testlv  253:2    0  1.5G  0 lvm  
  └─testvg-kdumplv 253:3    0  100M  0 lvm  /kdump
vdb                252:16   0    5G  0 disk                                        <==========

3. Create the VDO volume on the disk /dev/vdb using the lvmvdo, by creating a vg on the available disk /dev/vdb.

# vgcreate vdovg /dev/vdb 
  Volume group "vdovg" successfully created
  • Create a vdo by using the lvcreate command.
# lvcreate --type vdo -n vdo-lv -l 1279 -V 50G vdovg                 
  • When the VDO volume is in place, Format it with any file-system type and mount it under the file-system hierarchy on your system.
# mkfs.ext4 -E nodiscard /dev/vdovg/vdo-lv 

6. Mount the filesystem:

# mkdir /vdo
# mount /dev/vdovg/vdo-lv /vdo

7.Verify that the volume is running using the vdostats command:

# vdostats 

We can see the volume vdovg-vpool0-vpool is now ready to be used.