ウェブサイト検索

RHEL 8 上のストレージデバイスに VDO ボリュームを作成する方法


RHEL 7.5 以降で RedHat によって導入された VDOVirtual 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 ボリュームを作成する方法を説明しました。その後、さらにボリュームを作成し、それらのボリュームからファイルシステムを作成する方法をデモしました。