2.3. CRUSH の Ceph OSD
OSD の CRUSH 階層を作成したら、OSD を CRUSH 階層に追加します。既存の階層から OSD を移動または削除することもできます。Ceph CLI の使用には、以下の値が使用できます。
- id
- 説明
- OSD の数値 ID。
- 型
- Integer
- 必須
- Yes
- 例
-
0
- name
- 説明
- OSD のフルネーム。
- 型
- String
- 必須
- Yes
- 例
-
osd.0
- weight
- 説明
- OSD の CRUSH 加重。
- 型
- Double
- 必須
- Yes
- 例
-
2.0
- root
- 説明
- OSD が存在する階層またはツリーのルートバケットの名前。
- 型
- キーと値のペア。
- 必須
- Yes
- 例
-
root=default、root=replicated_ruleなど
- bucket-type
- 説明
- 1 つ以上の name-value ペア。ここで、名前はバケットタイプで、値はバケットの名前になります。CRUSH 階層で OSD の CRUSH の場所を指定できます。
- 型
- キーと値のペア。
- 必須
- いいえ
- 例
-
datacenter=dc1 room=room1 row=foo rack=bar host=foo-bar-1
2.3.1. CRUSH での OSD の表示 リンクのコピーリンクがクリップボードにコピーされました!
ceph osd crush tree コマンドは、CRUSH バケットと項目をツリービューで出力します。このコマンドを使用して、特定のバケット内の OSD のリストを確認します。ceph osd tree のような出力が表示されます。
詳細情報を返すには、以下のコマンドを実行します。
ceph osd crush tree -f json-pretty
# ceph osd crush tree -f json-pretty
このコマンドは、以下のような出力を返します。
2.3.2. OSD の CRUSH への追加 リンクのコピーリンクがクリップボードにコピーされました!
Ceph OSD を CRUSH 階層に追加することは、OSD を起動する前の最後のステップ (up および in を編集する) であり、Ceph は配置グループを OSD に割り当てます。
Ceph OSD を準備してから、CRUSH 階層を追加する必要があります。Ceph Orchestrator などのデプロイメントユーティリティーは、この手順を実行できます。たとえば、単一ノードで Ceph OSD を作成します。
構文
ceph orch daemon add osd HOST:_DEVICE_,[DEVICE]
ceph orch daemon add osd HOST:_DEVICE_,[DEVICE]
CRUSH 階層は概念であるため、ceph osd crush add コマンドを使用すると、希望する場所の CRUSH 階層に OSD を追加できます。指定する場所は、実際の場所を反映している はず です。少なくとも 1 つのバケットを指定すると、コマンドにより OSD を指定する最も具体的なバケットに配置され、かつ そのバケットは指定した他のバケットの下に移動します。
OSD を CRUSH 階層に追加するには、以下を実行します。
構文
ceph osd crush add ID_OR_NAME WEIGHT [BUCKET_TYPE=BUCKET_NAME ...]
ceph osd crush add ID_OR_NAME WEIGHT [BUCKET_TYPE=BUCKET_NAME ...]
root バケットのみを指定した場合、このコマンドは OSD を直接ルートに割り当てます。ただし、CRUSH ルールは OSD がホストまたはシャーシの内部にあり、ホストまたはシャーシはクラスタートポロジーを反映する他のバケットの内部にある 必要 があります。
以下の例では、osd.0 を階層に追加します。
ceph osd crush add osd.0 1.0 root=default datacenter=dc1 room=room1 row=foo rack=bar host=foo-bar-1
ceph osd crush add osd.0 1.0 root=default datacenter=dc1 room=room1 row=foo rack=bar host=foo-bar-1
ceph osd crush set または ceph osd crush create-or-move を使用して、OSD を CRUSH 階層に追加することもできます。
2.3.3. CRUSH 階層内での OSD の移動 リンクのコピーリンクがクリップボードにコピーされました!
ストレージクラスタートポロジーが変更された場合は、CRUSH 階層内の OSD を移動して、実際の場所を反映させることができます。
CRUSH 階層で OSD を移動すると、Ceph は OSD に割り当てられる配置グループを再計算することを意味します。これにより、データが大幅に再分配される可能性があります。
CRUSH 階層内の OSD を移動するには、以下を実行します。
構文
ceph osd crush set ID_OR_NAME WEIGHT root=POOL_NAME [BUCKET_TYPE=BUCKET_NAME...]
ceph osd crush set ID_OR_NAME WEIGHT root=POOL_NAME [BUCKET_TYPE=BUCKET_NAME...]
ceph osd crush create-or-move を使用して、CRUSH 階層内で OSD を移動することもできます。
2.3.4. CRUSH 階層からの OSD の削除 リンクのコピーリンクがクリップボードにコピーされました!
CRUSH 階層からの OSD 削除は、クラスターから OSD を削除する場合の最初の手順となります。CRUSH マップから OSD を削除すると、CRUSH は配置グループおよびデータリバランスを取得する OSD が再計算されます。詳細は、OSD の追加/削除を参照してください。
実行中のクラスターの CRUSH マップから OSD を削除するには、以下を実行します。
構文
ceph osd crush remove NAME
ceph osd crush remove NAME