はじめに
本記事は RHCSA 試験対策として RHEL9 におけるストレージ機能 VDO の使い方を紹介しています。
私は RHCSA 認定試験 (EX200) を受験のため、現在は絶賛勉強中です。
2022年12月時点では RHEL8 または RHEL9 を選択でき、私は RHEL9 で受験予定です。
VDO (Virtual Data Optimizer) 機能とは
Red Hat による VDO の記述を引用します。
VDO (Virtual Data Optimizer) 機能は、ストレージ用にインラインのブロックレベルの重複排除、圧縮、およびシンプロビジョニングを提供します。
RHEL8 までは VDO 機能は Python ベースの管理ソフトウェアが提供されていました。
Qiita でもその記述があり、RHEL9 でも同様に vdo コマンドで勉強しようとしていました。
実際に RHEL9 で vdo をインストールしてから vdo コマンドを打ってみると、エラーが返ってきました。
[root@servera ~]# dnf install vdo kmod-kvdo
...
Complete!
[student@servera ~]$ vdo
bash: vdo: command not found...
RHEL9 における VDO 機能
調べてみると、Red Hat に記載があり、RHEL9 では vdo コマンドは廃止となり、lvm で使用・管理するようです。
VDO Management ソフトウェアが削除
python ベースの VDO Management ソフトウェアは、RHEL 9 では利用できなくなりました。このソフトウェアの代わりに、LVM-VDO 実装を使用して VDO ボリュームを管理します。
せっかくなので lvm-vdo 実装での VDO 作成を試してみました。
RHEL9 における VDO ボリュームの作成
VirtualBox 上に RHEL9.1 の仮想マシンを作成しました。
VDO 検証用に 5GB のストレージを /dev/sdb として追加しました。
まずは /dev/sdb を LVM として設定しました。
[root@servera ~]# parted /dev/sdb p
Error: /dev/sdb: unrecognised disk label
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
[root@servera ~]# parted /dev/sdb mklabel gpt
[root@servera ~]# parted /dev/sdb mkpart primary xfs 0% 100%
[root@servera ~]# parted /dev/sdb set 1 lvm on
[root@servera ~]# parted /dev/sdb p
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 5368MB 5367MB primary lvm
/dev/sdb1 を物理ボリューム (PV) にし、ボリュームグループ vg0 を作成しました。
[root@servera ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[root@servera ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- <5.00g <5.00g
[root@servera ~]# vgcreate vg01 /dev/sdb1
Volume group "vg01" successfully created
[root@servera ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 1 0 0 wz--n- <5.00g <5.00g
vg0 をまるまる VDO の論理ボリューム(LV) vdo01として作成しました。
VDO は最小サイズがデフォルト設定だと 4.7GB らしいのでギリギリでした。。。
VDO は lvcreate コマンドの --type オプションで vdo を指定します。
VDO ボリュームを作成すると、vpool0 の VDO プールが作られました。
[root@servera ~]# lvcreate --type vdo -n vdo01 -l 100%FREE vg01
Logical blocks defaulted to 523108 blocks.
The VDO volume can address 2 GB in 1 data slab.
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.
Logical volume "vdo01" created.
[root@servera ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root rhel -wi-ao---- <9.21g
swap rhel -wi-ao---- 1.20g
vdo01 vg01 vwi-a-v--- 1.99g vpool0 0.00
vpool0 vg01 dwi------- <5.00g 60.00
あとはファイルフォーマットしてからマウントすれば認識しました。
root@servera ~]# mkfs.xfs /dev/vg01/vdo01
meta-data=/dev/vg01/vdo01 isize=512 agcount=4, agsize=130560 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1
data = bsize=4096 blocks=522240, 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
Discarding blocks...Done.
[root@servera ~]# mkdir /vdo01
[root@servera ~]# mount /dev/vg01/vdo01 /vdo01
[root@servera ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 976M 0 976M 0% /dev/shm
tmpfs 391M 5.8M 385M 2% /run
/dev/mapper/rhel-root 9.2G 4.4G 4.9G 47% /
/dev/sda2 1014M 242M 773M 24% /boot
/dev/sda1 599M 7.0M 592M 2% /boot/efi
tmpfs 196M 40K 195M 1% /run/user/1000
/dev/mapper/vg01-vdo01 2.0G 47M 2.0G 3% /vdo01
/etc/fstab は通常のファイルシステムの記載で再起動後も自動マウントされました。
RHEL8 だと x-systemd.requires=vdo.service みたいな呪文が必要でしたが、不要なようです。
[student@servera ~]$ cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Nov 20 09:56:11 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
...
/dev/mapper/vg01-vdo01 /vdo01 xfs defaults 0 0
まとめ
RHCSA試験対策として、RHEL9における LVM-VDO 実装の使い方を紹介しました。
試験対策のため、容量削減率の確認とかはしていませんが、性能が良くなっているんでしょうか。
RHEL8 から RHEL9 になって多少機能が変わっているようなので難しいですね。