Red Hat Training

A Red Hat training course is available for Red Hat Ceph Storage

第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 ワークフロープロセスです。

  1. データおよびジャーナルの論理ボリュームを許可
  2. OSD の UUID の生成
  3. 生成された UUID を再利用して OSD 識別子を取得するように Ceph Monitor に依頼
  4. OSD データディレクトリーが作成され、データボリュームがマウントされる
  5. ジャーナルは、データボリュームからジャーナルの場所へのシンボリックリンク
  6. monmap はアクティベーション用にフェッチされる
  7. デバイスがマウントされ、データディレクトリーが ceph-osd により入力される
  8. 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 ワークフロープロセスです。

  1. OSD id と OSD uuid の両方が必要
  2. 一致する OSD id および OSD uuid で systemd ユニットを有効化
  3. systemd ユニットによりすべてのデバイスが準備が整い、マウントされる
  4. 一致する 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 をデプロイします。prepareactivate を別々に行う理由は、新しい 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