VDO(Virtual Data Optimizer)について
VDOはRHEL 7.5から導入されたcompressionとdeduplicationを提供するパッケージ。ブロックストレージとファイルシステムの間で動作するため、xfsやext4などのファイルシステムでもZFSのような一部機能が実現可能になる。
確認してみる
VDOでのdedupによりパフォーマンスにどの程度の影響が出るか気になるため手元環境で確認してみることにする。
VDOの導入
CentOS7.4からCentOS 7.5にアップグレードした後にvdoパッケージを導入しようとすると既にインストール済みになっていた。アップデート時に自動的に降ってきていた様子。サービスも自動的に有効になっていた。
# yum install vdo kmod-kvdo
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
(snip)
パッケージ vdo-6.1.0.168-18.x86_64 はインストール済みか最新バージョンです
パッケージ kmod-kvdo-6.1.0.168-16.el7_5.x86_64 はインストール済みか最新バージョ ンです
何もしません
VDOボリュームの作成
RedHatのガイドに従ってVDOボリュームを作成しようとするとエラーになる。
# vdo create --name=vdovolume \
--device=/dev/disk/by-id/usb-I-O_DATA_HDPS-U_XXXXXXXXXXXX-0\:0 \
--vdoLogicalSize=1T
Creating VDO vdovolume
vdo: ERROR - Device /dev/disk/by-id/usb-I-O_DATA_HDPS-U_XXXXXXXXXXXX-0:0 excluded by a filter.
エラーの詳細を確認してみる
# vdo create --name=vdovolume \
--device=/dev/disk/by-id/usb-I-O_DATA_HDPS-U_XXXXXXXXXXXX-0\:0 \
--vdoLogicalSize=1T \
--verbose
Creating VDO vdovolume
grep MemAvailable /proc/meminfo
pvcreate -qq --test /dev/disk/by-id/usb-I-O_DATA_HDPS-U_XXXXXXXXXXXX-0:0
vdo: ERROR - Device /dev/disk/by-id/usb-I-O_DATA_HDPS-U_XXXXXXXXXXXX-0:0 excluded by a filter.
どうやらpvcreate
を実行してディスクをテストしているようなので、そちらでエラーの原因を追いかけてみるとpvcreate
はディスクボリュームに対しては実行できないらしい…fdiskで適当にパーティションを作成してテスト…ok
再度VDOボリュームの作成をしてみようとするもエラー発生。
# vdo create --name=vdovolume \
--device=/dev/disk/by-id/usb-I-O_DATA_HDPS-U_XXXXXXXXXXXX-0\:0-part1 \
--vdoLogicalSize=1T
Creating VDO vdovolume
vdo: ERROR - Kernel module kvdo not installed
vdo: ERROR - modprobe: FATAL: Module kvdo not found.
あれこれ確認するもうまくいかなかったが、CentOS 7.4から7.5にアップグレードしてから一度も再起動していないことを思い出して再起動。その後に実行するとうまくいった。
# vdo create --name=vdovolume \
--device=/dev/disk/by-id/usb-I-O_DATA_HDPS-U_XXXXXXXXXXXX-0\:0-part1 \
--vdoLogicalSize=1T
Creating VDO vdovolume
Starting VDO vdovolume
Starting compression on VDO vdovolume
VDO instance 0 volume is ready at /dev/mapper/vdovolume
# vdostats
Device 1K-blocks Used Available Use% Space saving%
/dev/mapper/vdovolume 244197540 3187900 241009640 1% N/A
# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdovolume 232.9G 3.0G 229.8G 1% N/A
とりあえずここまで。