第6章 ceph-volume ユーティリティーを使用した OSD のデプロイ
ceph-volume ユーティリティーは、論理ボリュームを OSD としてデプロイするための単一の目的コマンドラインツールです。プラグインタイプのフレームワークを使用して、異なるデバイス技術を持つ OSD をデプロイします。ceph-volume ユーティリティーは、OSD のデプロイに使用する ceph-disk ユーティリティーと同様のワークフローに従います。これは、OSD の準備、アクティブ化、および起動を可能にする予測可能で堅牢な方法です。現在、ceph-volume ユーティリティーは lvm プラグインのみをサポートします。また、今後、その他のテクノロジーをサポートする予定があります。
ceph-disk コマンドは非推奨となりました。
6.1. ceph-volume LVM プラグインの使用 リンクのコピーリンクがクリップボードにコピーされました!
LVMタ グを利用することで、lvm サブコマンドは OSD に関連付けられたデバイスを照会して保存し、再検出できるため、それらをアクティブにすることができます。これには、dm-cache などの lvm ベースのテクノロジーもサポートします。
ceph-volume を使用する場合は、dm-cache の使用は透過的になり、dm-cache は論理ボリュームのように処理されます。dm-cache を使用した場合のパフォーマンスの損益は、特定のワークロードに依存します。一般的に、ランダムおよび連続読み取りは、ブロックサイズが小さいほどパフォーマンスが向上し、ランダムおよび連続書き込みは、ブロックサイズが大きいほどパフォーマンスが低下します。
LVM プラグインを使用するには、lvm をサブコマンドとして ceph-volume コマンドに追加します。
ceph-volume lvm
ceph-volume lvm
以下のように lvm サブコマンドには 3 つのサブコマンドがあります。
create サブコマンドを使用すると、prepare および activate サブコマンドが 1 つのサブコマンドに統合されます。詳細は、create サブコマンドのセクションを参照してください。
6.1.1. OSD の準備 リンクのコピーリンクがクリップボードにコピーされました!
prepare サブコマンドは OSD バックエンドオブジェクトストアを準備し、OSD データとジャーナル両方の論理ボリュームを使用します。デフォルトのオブジェクトストレージタイプはありません。オブジェクトストレージタイプには、準備時に --filestore オプションまたは --bluestore オプションのいずれかを設定する必要があります。Red Hat Ceph Storage 3.2 以降、BlueStore オブジェクトストレージタイプのサポートが利用可能になりました。prepare サブコマンドは、LVM タグを使用して追加のメタデータを追加する以外に、論理ボリュームを作成または変更しません。
LVM タグを使用すると、ボリュームを後で発見しやすくなり、ボリュームが Ceph システムの一部であることや、どのようなロールを持っているかを識別しやすくなります。ceph-volume lvm prepare コマンドは、以下の LVM タグの一覧を追加します。
-
cluster_fsid -
data_device -
journal_device -
encrypted -
osd_fsid -
osd_id -
journal_uuid
prepare プロセスは非常に厳格で、使用可能な論理ボリュームが 2 つ必要であり、OSD データとジャーナルの最小サイズを必要とします。ジャーナルデバイスは、論理ボリュームまたはパーティションのいずれかになります。
以下は、prepare ワークフロープロセスです。
- データおよびジャーナルの論理ボリュームを許可
- OSD の UUID の生成
- 生成された UUID を再利用して OSD 識別子を取得するように Ceph Monitor に依頼
- OSD データディレクトリーが作成され、データボリュームがマウントされる
- ジャーナルは、データボリュームからジャーナルの場所へのシンボリックリンク
-
monmapはアクティベーション用にフェッチされる -
デバイスがマウントされ、データディレクトリーが
ceph-osdにより入力される - LVM タグが OSD データおよびジャーナルボリュームに割り当てられる
LVM を使用して簡単な OSD デプロイメントを準備するには、以下の手順を OSD ノード上で、root ユーザーとして実行します。
ceph-volume lvm prepare --bluestore --data $VG_NAME/$LV_NAME
ceph-volume lvm prepare --bluestore --data $VG_NAME/$LV_NAME
以下に例を示します。
ceph-volume lvm prepare --bluestore --data example_vg/data_lv
# ceph-volume lvm prepare --bluestore --data example_vg/data_lv
BlueStore の場合、RocksDB に別のデバイスを使用するには、--block.db および --block.wal オプションを指定することもできます。
以下は、パーティションでジャーナルデバイスとして FileStore を使用する例です。
ceph-volume lvm prepare --filestore --data example_vg/data_lv --journal /dev/sdc1
# ceph-volume lvm prepare --filestore --data example_vg/data_lv --journal /dev/sdc1
パーティションを使用する場合は、blkid コマンドで検出可能な PARTUUID を含める必要があります。これにより、デバイス名またはパスに関係なく正しく特定できます。
ceph-volume LVM プラグインは、raw ディスクデバイスにパーティションを作成しません。OSD ジャーナルデバイスのパーティションを使用する前に、このパーティションを作成する必要があります。
6.1.2. OSD のアクティブ化 リンクのコピーリンクがクリップボードにコピーされました!
prepare プロセスが完了すると、OSD はアクティブになります。アクティベーションプロセスでは、起動時に Systemd ユニットが有効になります。これにより、正しい OSD ID とその UUID を有効化およびマウントできるようになります。
以下は、activate ワークフロープロセスです。
- OSD id と OSD uuid の両方が必要
- 一致する OSD id および OSD uuid で systemd ユニットを有効化
- systemd ユニットによりすべてのデバイスが準備が整い、マウントされる
-
一致する
ceph-osdsystemd ユニットが開始される
OSD を起動するには、OSD ノードで root ユーザーとして以下の手順を実行します。
ceph-volume lvm activate --filestore $OSD_ID $OSD_UUID
ceph-volume lvm activate --filestore $OSD_ID $OSD_UUID
以下に例を示します。
ceph-volume lvm activate --filestore 0 0263644D-0BF1-4D6D-BC34-28BD98AE3BC8
# ceph-volume lvm activate --filestore 0 0263644D-0BF1-4D6D-BC34-28BD98AE3BC8
このコマンドを複数回実行しても、それに伴う影響はありません。
6.1.3. OSD の作成 リンクのコピーリンクがクリップボードにコピーされました!
create サブコマンドは 2 段階のプロセスをラップし、prepare サブコマンドを呼び出してから、activate サブコマンドを 1 つのサブコマンドに呼び出し、新しい OSD をデプロイします。prepare と activate を別々に行う理由は、新しい OSD をストレージクラスターに徐々に導入し、大量のデータがリバランスされるのを避けるためです。完成後すぐに OSD が up および in になること以外は、何も違いはありません。
root ユーザーとして、OSD ノードで FileStore に対して以下の手順を実行します。
ceph-volume lvm create --filestore --data $VG_NAME/$LV_NAME --journal $JOURNAL_DEVICE
ceph-volume lvm create --filestore --data $VG_NAME/$LV_NAME --journal $JOURNAL_DEVICE
以下に例を示します。
ceph-volume lvm create --filestore --data example_vg/data_lv --journal example_vg/journal_lv
# ceph-volume lvm create --filestore --data example_vg/data_lv --journal example_vg/journal_lv
root ユーザーとして、OSD ノードで BlueStore に対して以下の手順を実行します。
ceph-volume lvm create --bluestore --data <device>
# ceph-volume lvm create --bluestore --data <device>
以下に例を示します。
ceph-volume lvm create --bluestore --data /dev/sda
# ceph-volume lvm create --bluestore --data /dev/sda
6.1.4. batch モードの使用 リンクのコピーリンクがクリップボードにコピーされました!
batch サブコマンドは、単一デバイスが提供されると複数の OSD の作成を自動化します。 ceph-volume コマンドは、ドライブの種類に応じて最適な OSD の作成方法を決定します。この最適な方法は、オブジェクトストア形式である BlueStore または FileStore によって異なります。
BlueStore は、OSD のデフォルトのオブジェクトストアタイプです。BlueStore を使用する場合、OSD の最適化は、使用されているデバイスに基づいた 3 つの異なるシナリオによります。すべてのデバイスが従来のハードドライブの場合、デバイスごとに OSD が 1 つ作成されます。すべてのデバイスがソリッドステートドライブの場合は、デバイスごとに OSD が 2 つ作成されます。従来のハードドライブとソリッドステートドライブが混在している場合、データは従来のハードドライブに配置され、ソリッドステートドライブには可能な限り大きな block.db が作成されます。
batch サブコマンドは、ログ先行書き込み (block.wal) デバイスの別の論理ボリュームの作成をサポートしません。
BlusStore の例
ceph-volume lvm batch --bluestore /dev/sda /dev/sdb /dev/nvme0n1
# ceph-volume lvm batch --bluestore /dev/sda /dev/sdb /dev/nvme0n1
FileStore を使用する場合、OSD の最適化は、使用されているデバイスに基づいた 2 つの異なるシナリオによります。すべてのデバイスが従来のハードドライブであるか、またはソリッドステートドライブである場合、デバイスごとに 1 つの OSD が作成され、同じデバイス上でジャーナルを併置します。従来のハードドライブとソリッドステートドライブが混在している場合、データは従来のハードドライブに置かれ、ジャーナルは Ceph 設定ファイルで指定されたサイジングパラメーター (デフォルトではceph.conf) を使用してソリッドステートドライブに作成されます (デフォルトのジャーナルサイズは 5GB)。
FileStore の例
ceph-volume lvm batch --filestore /dev/sda /dev/sdb
# ceph-volume lvm batch --filestore /dev/sda /dev/sdb