第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
以下のように 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 example_vg/data_lv
BlueStore の場合、RocksDB に別のデバイスを使用するには、--block.db
および --block.wal
オプションを指定することもできます。
以下は、パーティションでジャーナルデバイスとして FileStore を使用する例です。
# 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-osd
systemd ユニットが開始される
OSD を起動するには、OSD ノードで root
ユーザーとして以下の手順を実行します。
ceph-volume lvm activate --filestore $OSD_ID $OSD_UUID
以下に例を示します。
# 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 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 /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
FileStore を使用する場合、OSD の最適化は、使用されているデバイスに基づいた 2 つの異なるシナリオによります。すべてのデバイスが従来のハードドライブであるか、またはソリッドステートドライブである場合、デバイスごとに 1 つの OSD が作成され、同じデバイス上でジャーナルを併置します。従来のハードドライブとソリッドステートドライブが混在している場合、データは従来のハードドライブに置かれ、ジャーナルは Ceph 設定ファイルで指定されたサイジングパラメーター (デフォルトではceph.conf
) を使用してソリッドステートドライブに作成されます (デフォルトのジャーナルサイズは 5GB)。
FileStore の例
# ceph-volume lvm batch --filestore /dev/sda /dev/sdb