11.9. ceph-blustore-tool の使用
ceph-bluestore-tool
は、BlueStore インスタンスに対して低レベルの管理操作を実行するユーティリティーです。
ceph-bluestore-tool
では以下のコマンドを使用できます。
構文
すべての BlueStore ブロックデバイスでは、デバイスの先頭に 1 つのブロックラベルがあります。ラベルの内容をダンプするには、以下を実行します。
ceph-bluestore-tool show-label --dev DEVICE
メインデバイスには、以前は OSD データディレクトリー内の小さなファイルに保存されていた情報を含め、多くのメタデータが含まれています。補助デバイス (db および wal) には、必要最小限のフィールド (OSD UUID、size、device type、birth time) のみがあります。
prime-osd-dir
コマンドを使用して、BlueStore OSD を起動できる OSD データディレクトリーのコンテンツを生成します。
ceph-bluestore-tool prime-osd-dir --dev MAIN_DEVICE --path /var/lib/ceph/osd/ceph-ID
コマンド | 説明 |
---|---|
| ヘルプを表示 |
| オプション: on、off、yes、no、1 と 0、または true と false。BlueStore メタデータの一貫性チェックを実行します。--deep が指定されている場合は、すべてのオブジェクトデータも読み取り、チェックサムを検証します。 |
| 一貫性チェックを実行し、エラーがあれば修復します。 |
| アロケーターデータと ONodes の状態を比較して、BlueStore メタデータの一貫性チェックを実行します。アロケーターデータは、存在する場合は RocksDB CFB から取得され、存在しない場合は allocation-file が使用されます。 |
|
|
|
新しい NCB コードによって ( |
| BlueFS の内容を出力ディレクトリーにエクスポートします。 |
| BlueFS が認識するデバイスサイズを stdout に出力します。 |
| BlueFS に、ブロックデバイスのサイズをチェックし、拡張されている場合は追加のスペースを使用するように指示します。十分な空き領域がある場合、BlueFS が作成した新しいファイルのみが指定したブロックデバイスに割り当てられ、低速デバイスにスピルオーバーした既存のファイルは、RocksDB がコンパクションを実行する際に徐々に削除される点に注意してください。つまり、低速デバイスにデータがスピルオーバーした場合、それは時間の経過とともに高速デバイスに移動されます。 |
| BlueFS に WAL デバイスを追加します。WAL デバイスがすでに存在する場合は失敗します。 |
| BlueFS に DB デバイスを追加します。DB デバイスがすでに存在する場合は失敗します。 |
| BlueFS データをソースデバイスからターゲットデバイスに移動します。成功すると、ソースデバイス (メインデバイスを除く) は削除されます。ターゲットデバイスは、すでに接続されているデバイスでも、新しいデバイスでもかまいません。後者の場合、ソースデバイスの 1 つを置き換えて OSD に追加されます。次の置換ルールが適用されます (優先される順に表示、一致するとそこで止まります)。(1) ソースリストに DB ボリュームがある場合、ターゲットデバイスがそれを置き換えます。(2) ソースリストに WAL ボリュームがある場合、ターゲットデバイスがそれを置き換えます。(3) ソースリストに低速ボリュームしかない場合、操作は許可されず、new-db/new-wal コマンドを実行して明示的に割り当てる必要があります。 |
| デバイスラベルを表示します。 |
| アロケーター内のすべての空きリージョンをダンプします。 |
| アロケーター内の断片化の品質を表す [0-1] の数値を指定します。0 は、すべての空き領域が 1 つのチャンク内にあることを表します。1 は、最悪の断片化を表します。 |
|
BlueStore の RocksDB のシャーディングを変更します。シャーディングは RocksDB 列ファミリーの上に構築されます。このオプションを使用すると、OSD を再デプロイすることなく、新しいシャーディングのパフォーマンスをテストできます。通常、リシャーディングは長いプロセスで、RocksDB キー空間全体を走査し、その一部を別の列ファミリーに移動することも含まれています。 |
| BlueStore の RocksDB に現在適用されているシャーディングを表示します。 |
コマンドオプション | 説明 |
---|---|
| 対象デバイスのリストに デバイス を追加します。 |
|
OSD OSD_ID として動作します。OSD 固有のオプションについてはモニターに接続します。モニターが利用できない場合は、代わりに |
| 移行のソースとして検討するデバイスのリストに デバイス を追加します。 |
| 新しい DB/WAL を追加するため、ターゲット デバイスの移行操作、または追加するデバイスを指定します。 |
|
OSD パスを指定します。ほとんどの場合、デバイスリストは、osd パスに存在するシンボリックリンクから推測されます。これは通常、--dev を使用してデバイスを明示的に指定するよりも簡単です。 |
|
|
| ログを記録するファイル。 |
| デバッグログレベル。デフォルトは 30 (非常に詳細)、20 はとても詳細、10 は詳細、1 はあまり詳細ではありません。 |
| ディープスクラブ/修復 (メタデータだけでなく、オブジェクトデータに対しても読み取りと検証を実行)。 |
| free-dump や free-score のアクションに役立ちます。アロケーターを選択します。 |
|
リシャーディングプロセスを制御します。RocksDB イテレーターの更新頻度と、RocksDB にコミットする前のコミットバッチのサイズを指定します。オプション形式: デフォルト: 10000000/10000/1000000/1000 |
手順
ceph-bluestore-tool
を使用する前に OSD を停止します。構文
ceph orch daemon stop osd.ID
ceph orch daemon stop osd.ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
[ceph: root@host01 /]# ceph orch daemon stop osd.2
[ceph: root@host01 /]# ceph orch daemon stop osd.2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD ノードから、ターゲット OSD コンテナーにログインします。
構文
cephadm shell --name osd.ID
cephadm shell --name osd.ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
[ceph: root@host01 /]# ceph shell --name osd.2
[ceph: root@host01 /]# ceph shell --name osd.2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 必要なコマンドを実行します。
例
[ceph: root@host01 /]# ceph-bluestore-tool bluefs-bdev-new-wal --dev-target /dev/test/newdb --path /var/lib/ceph/osd/ceph-0
[ceph: root@host01 /]# ceph-bluestore-tool bluefs-bdev-new-wal --dev-target /dev/test/newdb --path /var/lib/ceph/osd/ceph-0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記この例では、新しい wal デバイスを追加する方法を示します。
cephadm シェルから OSD を再起動します。
構文
ceph orch daemon start osd.ID
ceph orch daemon start osd.ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
[ceph: root@host01 /]# ceph orch daemon start osd.2
[ceph: root@host01 /]# ceph orch daemon start osd.2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow