RHEL 8 上のストレージデバイスに VDO ボリュームを作成する方法
RHEL 7.5 以降で RedHat によって導入された VDO は Virtual Date Optimizer の略で、次の機能を提供するブロック仮想化テクノロジーです。ブロックデバイスレベルでのデータのインライン重複排除と圧縮。
重複排除の考え方は非常に単純です。重複データのコピーを削除し、1 つのコピーだけを残すというものです。同一のファイルがブロック デバイスに追加されると、そのファイルは重複としてマークされ、代わりに元のファイルが参照されます。その際、VDO はブロック ボリュームのスペースを節約するのに役立ちます。
このチュートリアルでは、RHEL 8 システム上のストレージ デバイスに VDO ボリュームを作成する方法を学習します。
ステップ 1: RHEL 8 に VDO をインストールする
まず、サーバーにログインし、dnf コマンドを使用してRHEL を更新します。
sudo dnf update -y
パッケージとカーネルの更新が完了したら、 コマンドを使用してVDO カーネル モジュールと依存関係をインストールします。
sudo dnf install kmod-kvdo vdo
- vdo – これは、Virtual Data Optimizer の管理ツールのセットです。
- kmod-kvdo – これは、Virtual Data Optimizer 用のカーネル モジュールのグループです。
インストールが成功したら、vdo デーモンを起動し、有効にして検証します。
sudo systemctl start vdo
sudo systemctl enable vdo
sudo systemctl status vdo
ステップ 2: RHEL 8 で VDO ボリュームを作成する
vdo ボリュームを作成する前に、システムに追加のハード ドライブがあることを確認してください。このチュートリアルでは、追加のボリューム xvdb
をアタッチしました。これは、以下の lsblk コマンドを実行することで確認できます。
lsblk
出力から、2 番目のディスクの容量が100GBであることが明確にわかります。
ここで、/dev/xvdb
ディスクに空のVDO ボリュームを作成します。
sudo vdo create --name=vdo1 --device=/dev/xvdb --vdoLogicalSize=300G
表示されたエラーが発生します。
これはよくあるバグで、回避策はサーバーを再起動するだけです。
sudo reboot
2 回目の試行では、コマンドが実行され、デバイス /dev/xvdb
上に空のVDO ボリュームが作成されます。
sudo vdo create --name=vdo1 --device=/dev/xvdb --vdoLogicalSize=300G
コマンドを分解して、使用されるオプションを見てみましょう。
- 作成 – これにより、VDO ボリュームの作成が開始されます。
- –name=vdo1 – これにより、ボリュームに vdo1 というラベルが付けられます。任意の名前を自由に付けてください。
- –device=/dev/xvdb – device オプションは、ボリュームが作成されるディスクを指定します。
- –vdoLogicalSize=300G – これは、オペレーティング システムが使用する有効なボリューム容量を示します。この場合は 300G です。
ステップ 3: 新しい VDO ボリュームのプローブ
前の手順で確認した出力に従って、新しいVDO ボリュームが /dev/mapper/vdo1
に作成されました。示されているように ls コマンドを使用して、ファイルのアクセス許可と所有権を調査できます。
ls -l /dev/mapper/vdo1
より洞察に富んだ情報を取得するには、vdostats コマンドを使用して、ボリュームのサイズと使用状況に関する統計を取得します。
vdostats --hu
--hu
フラグは、人間が読める形式、つまり、非常に読みやすく解読しやすい形式で情報を表示します。デバイス名、追加ディスクのサイズ、使用済みおよび利用可能なスペースなどの属性を %
使用率として表示できます。
%
保存が該当なし (N/A) と表示されていることを注意深く観察してください。
また、すでにボリューム使用量 4.1G があり、これは 4% に相当しますが、ボリュームには何も書き込んでいないことにも注意してください。何故ですか?これは、ユニバーサル重複排除がすでにディスクに書き込まれており、それによって重複排除が可能になるためです。
vdostats コマンドを --verbose
フラグとともに使用すると、次のように詳細な情報を取得できます。
sudo vdostats --verbose /dev/mapper/vdo1 | grep -B6 ‘saving percent’
表示されるデータは基本的に前の例と同じデータですが、形式が異なります。
ステップ 4: VDO ボリュームのパーティション分割
ボリュームから十分な情報を取得したら、ボリュームをパーティション分割し、後で通常のディスクとして使用できるようにファイルシステムを作成する必要があります。
次のコマンドを実行して、図に示すように物理ボリュームとボリューム グループを作成しましょう。
sudo pvcreate /dev/mapper/vdo1
sudo vgcreate vdo1vg /dev/mapper/vdo1
ボリューム グループの統計を表示するには、次のコマンドを実行します。
sudo vgdisplay vdo1vg
次に、 それぞれ50Gの容量を持つ、同じサイズの論理ボリュームを 2 つ作成します。
sudo lvcreate -n vdo1v01 -L 50G vdo1vg
sudo lvcreate -n vdo1v02 -L 50G vdo1vg
後でコマンドを実行すると、新しく作成されたボリュームの統計を表示できます。
sudo lvs
ステップ 4: ファイル システムのフォーマットとマウント
通常、ファイルシステムが作成されると、デバイス上でトリム操作が実行されます。これはVDOの場合には望ましくありません。 mkfs コマンドを使用してフォーマットする場合、-K
オプションを使用して、ファイル システムの作成中にブロックを破棄しないようにコマンドに指示します。
sudo mkfs.xfs -K /dev/vdo1vg/vdo1v01
sudo mkfs.xfs -K /dev/vdo1vg/vdo1v02
EXT$ ファイルシステムを使用している場合は、「-E nodiscard 」オプションを使用します。
ボリュームをマウントするためのマウント ポイントを作成します。
sudo mkdir /data/v01
sudo mkdir /data/v02
次に、図に示すように、ファイルシステムをマウント ポイントにマウントします。
sudo mount -o discard /dev/vdo1vg/vdo1v01 /data/v01
sudo mount -o discard /dev/vdo1vg/vdo1v02 /data/v02
ここで VDO ボリュームを検査すると、%
の節約率が 99% に変わっていることがわかります。これは非常に印象的です。これは、重複排除が期待どおりに機能していることを意味します。
sudo vdostats --hu
df -Th コマンドを使用してさらに調査できます。下部のセクションには、それぞれ /data/v01
と /data/v02
にマウントされたファイルシステムが表示されます。
df -hT
このチュートリアルでは、RHEL 8 上の追加のストレージ デバイスから VDO ボリュームを作成する方法を説明しました。その後、さらにボリュームを作成し、それらのボリュームからファイルシステムを作成する方法をデモしました。