6.11. Ceph Orchestrator を使用した OSD の置き換え
ディスクに障害が発生した場合は、物理ストレージデバイスを交換し、同じ OSD ID を再利用することで、CRUSH マップを再設定する必要がなくなります。
--replace
オプションを使用して、クラスターから OSD を置き換えることができます。
単一の OSD を置き換える場合は、特定のデバイスおよびホストへの Ceph OSD のデプロイ を参照してください。利用可能なすべてのデバイスに OSD をデプロイする場合は、すべての利用可能なデバイスへの Ceph OSD のデプロイ を参照してください。
このオプションは、ceph orch rm
コマンドを使用して OSD ID を保存します。OSD は CRUSH 階層から永続的に削除されませんが、destroyed
フラグが割り当てられます。このフラグは、次の OSD デプロイメントで再利用できる OSD ID を判断するために使用されます。destroyed
フラグは、次の OSD デプロイメントで再利用される OSD ID を判断するために使用されます。
rm
コマンドと同様に、クラスターから OSD を置き換えるには、次の 2 つの手順が必要です。
- クラスターからすべての配置グループ (PG) を退避します。
- クラスターから PG のない OSD を削除します。
導入に OSD 仕様を使用する場合、交換されるディスクの OSD ID は、新しく追加されたディスクが挿入されるとすぐに自動的に割り当てられます。
OSD を削除した後、OSD がデプロイメントされたドライブが再び使用可能になった場合、既存のドライブグループの仕様と一致する場合、cephadm
はこれらのドライブにさらに OSD をデプロイメントしようとする可能性があります。削除する OSD を仕様とともにデプロイメントし、削除後に新しい OSD をドライブにデプロイメントしたくない場合は、削除する前にドライブグループの仕様を変更します。OSD のデプロイメント中に --all-available-devices
オプションを使用した場合は、unmanaged: true
を設定して、新しいドライブをまったく取得しないようにします。他のデプロイメントの場合は、仕様を変更してください。詳細は、高度なサービス仕様を使用した Ceph OSD のデプロイ を参照してください。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- ホストがクラスターに追加されている。
- Monitor、Manager、および OSD デーモンはストレージクラスターにデプロイされます。
- 削除された OSD を置き換える新しい OSD は、OSD が削除されたのと同じホストで作成する必要があります。
手順
Cephadm シェルにログインします。
例
[root@host01 ~]# cephadm shell
今後の参照のために、OSD 設定のマッピングを必ずダンプして保存してください。
例
[ceph: root@node /]# ceph osd metadata -f plain | grep device_paths "device_paths": "sde=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:1,sdi=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:1", "device_paths": "sde=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:1,sdf=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:1", "device_paths": "sdd=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:2,sdg=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:2", "device_paths": "sdd=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:2,sdh=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:2", "device_paths": "sdd=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:2,sdk=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:2", "device_paths": "sdc=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:3,sdl=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:3", "device_paths": "sdc=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:3,sdj=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:3", "device_paths": "sdc=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:3,sdm=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:3", [.. output omitted ..]
OSD を置き換える必要のあるデバイスとノードを確認します。
例
[ceph: root@host01 /]# ceph osd tree
cephadm
マネージドクラスターから OSD を削除します。重要ストレージクラスターに
health_warn
またはそれに関連するその他のエラーがある場合は、データの損失を回避するために、OSD を交換する前にエラーを確認して修正してください。構文
ceph orch osd rm OSD_ID --replace [--force]
--force
オプションは、ストレージクラスターで進行中の操作がある場合に使用できます。例
[ceph: root@host01 /]# ceph orch osd rm 0 --replace
次の OSD 仕様を適用して、新しい OSD を再作成します。
例
service_type: osd service_id: osd placement: hosts: - myhost data_devices: paths: - /path/to/the/device
OSD 置き換えのステータスを確認します。
例
[ceph: root@host01 /]# ceph orch osd rm status
オーケストレーターを停止して、既存の OSD 仕様を適用します。
例
[ceph: root@node /]# ceph orch pause [ceph: root@node /]# ceph orch status Backend: cephadm Available: Yes Paused: Yes
削除された OSD デバイスをザップします。
例
[ceph: root@node /]# ceph orch device zap node.example.com /dev/sdi --force zap successful for /dev/sdi on node.example.com [ceph: root@node /]# ceph orch device zap node.example.com /dev/sdf --force zap successful for /dev/sdf on node.example.com
Orcestrator を一時停止モードから再開する
例
[ceph: root@node /]# ceph orch resume
OSD 置き換えのステータスを確認します。
例
[ceph: root@node /]# ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.77112 root default -3 0.77112 host node 0 hdd 0.09639 osd.0 up 1.00000 1.00000 1 hdd 0.09639 osd.1 up 1.00000 1.00000 2 hdd 0.09639 osd.2 up 1.00000 1.00000 3 hdd 0.09639 osd.3 up 1.00000 1.00000 4 hdd 0.09639 osd.4 up 1.00000 1.00000 5 hdd 0.09639 osd.5 up 1.00000 1.00000 6 hdd 0.09639 osd.6 up 1.00000 1.00000 7 hdd 0.09639 osd.7 up 1.00000 1.00000 [.. output omitted ..]
検証
Ceph OSD が置き換えられるデバイスとノードの詳細を確認します。
例
[ceph: root@host01 /]# ceph osd tree
置き換えたものと同じ ID を持つ OSD が同じホスト上で実行されていることがわかります。
新しくデプロイされた OSD の
db_device
が置き換えられたdb_device
であることを確認します。例
[ceph: root@host01 /]# ceph osd metadata 0 | grep bluefs_db_devices "bluefs_db_devices": "nvme0n1", [ceph: root@host01 /]# ceph osd metadata 1 | grep bluefs_db_devices "bluefs_db_devices": "nvme0n1",
関連情報
- 詳細は、Red Hat Ceph Storage Operations Guide の Deploying Ceph OSDs on all available devices セクションを参照してください。
- 詳細は、Red Hat Ceph Storage Operations Guide の eploying Ceph OSDs on specific devices and hosts セクションを参照してください。