5.5. OSD ドライブの交換
Ceph は耐障害性を確保できるように設計されているため、データを損失せずに動作が degraded の状態になっています。そのため、データストレージドライブに障害が発生しても、Ceph は動作します。障害が発生したドライブのコンテキストでは、パフォーマンスが degraded した状態は、他の OSD に保存されているデータの追加コピーが、クラスター内の他の OSD に自動的にバックフィルされることを意味します。ただし、このような場合は、障害の発生した OSD ドライブを交換し、手動で OSD を再作成します。
ドライブに障害が発生すると、Ceph は OSD を down として報告します。
HEALTH_WARN 1/3 in osds are down osd.0 is down since epoch 23, last address 192.168.106.220:6800/11080
HEALTH_WARN 1/3 in osds are down
osd.0 is down since epoch 23, last address 192.168.106.220:6800/11080
Ceph は、ネットワークやパーミッションの問題により OSD を down とマークすることもできます。詳細は、Down OSD を参照してください。
最近のサーバーは、ホットスワップ対応のドライブを搭載しているのが一般的であり、ノードをダウンさせることなく、障害が発生したドライブを抜き取り、新しいドライブと交換することができます。手順全体には、以下のステップが含まれます。
- Ceph クラスターから OSD を取り除きます。詳細は、Ceph クラスターからの OSD の削除の手順を参照してください。
- ドライブを交換します。詳細は、物理ドライブの置き換え セクションを参照してください。
- OSD をクラスターに追加します。詳細は、OSD の Ceph クラスターへの追加の手順を参照してください。
前提条件
- Ceph Monitor ノードへのルートレベルのアクセス。
downになっている OSD を特定します。ceph osd tree | grep -i down
[root@mon ~]# ceph osd tree | grep -i down ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY 0 0.00999 osd.0 down 1.00000 1.00000Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD プロセスが停止していることを確認します。OSD ノードから以下のコマンドを使用します。
systemctl status ceph-osd@_OSD_NUMBER_
[root@mon ~]# systemctl status ceph-osd@_OSD_NUMBER_Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD_NUMBERをdownとマークされた OSD の ID に置き換えます。以下に例を示します。systemctl status ceph-osd@osd.0
[root@mon ~]# systemctl status ceph-osd@osd.0 ... Active: inactive (dead)Copy to Clipboard Copied! Toggle word wrap Toggle overflow ceph-osdデーモンが実行しているかどうか。downとマークされているが対応するceph-osdデーモンが実行している OSD のトラブルシューティングに関する詳細は、Down OSDs を参照してください。
手順: Ceph クラスターからの OSD の削除
OSD を
outとしてマークを付けます。ceph osd out osd.OSD_NUMBER
[root@mon ~]# ceph osd out osd.OSD_NUMBERCopy to Clipboard Copied! Toggle word wrap Toggle overflow OSD_NUMBERを、downとマークされている OSD の ID に置き換えます。以下に例を示します。ceph osd out osd.0
[root@mon ~]# ceph osd out osd.0 marked out osd.0.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記OSD が
downしている場合、OSD からハートビートパケットを受信しない場合、Ceph は 600 秒後に自動的にoutとマークします。この場合、障害が発生した OSD データのコピーを持つ他の OSD がバックフィルを開始し、クラスター内部に必要な数のコピーが存在するようにします。クラスターがバックフィル状態である間、クラスターの状態はdegradedします。障害が発生した OSD がバックフィルされていることを確認します。出力には、以下のような情報が含まれます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CRUSH マップから OSD を削除します。
ceph osd crush remove osd.OSD_NUMBER
[root@mon ~]# ceph osd crush remove osd.OSD_NUMBERCopy to Clipboard Copied! Toggle word wrap Toggle overflow OSD_NUMBERを、downとマークされている OSD の ID に置き換えます。以下に例を示します。ceph osd crush remove osd.0
[root@mon ~]# ceph osd crush remove osd.0 removed item id 0 name 'osd.0' from crush mapCopy to Clipboard Copied! Toggle word wrap Toggle overflow OSD に関連する認証キーを削除します。
ceph auth del osd.OSD_NUMBER
[root@mon ~]# ceph auth del osd.OSD_NUMBERCopy to Clipboard Copied! Toggle word wrap Toggle overflow OSD_NUMBERを、downとマークされている OSD の ID に置き換えます。以下に例を示します。ceph auth del osd.0
[root@mon ~]# ceph auth del osd.0 updatedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Ceph Storage Cluster から OSD を削除します。
ceph osd rm osd.OSD_NUMBER
[root@mon ~]# ceph osd rm osd.OSD_NUMBERCopy to Clipboard Copied! Toggle word wrap Toggle overflow OSD_NUMBERを、downとマークされている OSD の ID に置き換えます。以下に例を示します。ceph osd rm osd.0
[root@mon ~]# ceph osd rm osd.0 removed osd.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD を正常に削除した場合は、以下のコマンドの出力には表示されません。
ceph osd tree
[root@mon ~]# ceph osd treeCopy to Clipboard Copied! Toggle word wrap Toggle overflow ベアメタルデプロイメントの場合は、障害が発生したドライブをアンマウントします。
umount /var/lib/ceph/osd/CLUSTER_NAME-OSD_NUMBER
[root@mon ~]# umount /var/lib/ceph/osd/CLUSTER_NAME-OSD_NUMBERCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターの名前と OSD の ID を指定します。以下に例を示します。
umount /var/lib/ceph/osd/ceph-0/
[root@mon ~]# umount /var/lib/ceph/osd/ceph-0/Copy to Clipboard Copied! Toggle word wrap Toggle overflow ドライブを正常にアンマウントした場合は、次のコマンドの出力には表示されません。
df -h
[root@mon ~]# df -hCopy to Clipboard Copied! Toggle word wrap Toggle overflow
手順: 物理ドライブの交換
物理ドライブの交換方法の詳細については、ハードウェアノードのマニュアルを参照してください。
- ドライブがホットスワップ可能な場合は、故障したドライブを新しいものと交換します。
- ドライブがホットスワップに対応しておらず、ノードに複数の OSD が含まれる場合は、ノード全体をシャットダウンして物理ドライブを交換する必要がある場合があります。クラスターのバックフィルを防ぐことを検討してください。詳細は、Red Hat Ceph Storage トラブルシューティングガイドの リバランスの停止および開始 の章を参照してください。
-
ドライブが
/dev/ディレクトリー配下に表示されたら、ドライブパスを書き留めます。 - OSD を手動で追加する必要がある場合には、OSD ドライブを見つけ、ディスクをフォーマットします。
手順: OSD の Ceph クラスターへの追加
OSD を再度追加します。
Ansible を使用してクラスターをデプロイしている場合は、Ceph 管理サーバーから Playbook
ceph-ansibleを再度実行します。ベアメタルデプロイメント
Syntax
ansible-playbook site.yml -i hosts --limit NEW_OSD_NODE_NAME
ansible-playbook site.yml -i hosts --limit NEW_OSD_NODE_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 例
ansible-playbook site.yml -i hosts --limit node03
[user@admin ceph-ansible]$ ansible-playbook site.yml -i hosts --limit node03Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーデプロイメント
Syntax
ansible-playbook site-container.yml -i hosts --limit NEW_OSD_NODE_NAME
ansible-playbook site-container.yml -i hosts --limit NEW_OSD_NODE_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 例
ansible-playbook site-container.yml -i hosts --limit node03
[user@admin ceph-ansible]$ ansible-playbook site-container.yml -i hosts --limit node03Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- OSD を手動で追加した場合には、Red Hat Ceph Storage 4 Operations Guideの コマンドラインインターフェイスで Ceph OSD の追加 セクションを参照してください。
CRUSH 階層が正確であることを確認します。
ceph osd tree
[root@mon ~]# ceph osd treeCopy to Clipboard Copied! Toggle word wrap Toggle overflow CRUSH 階層の OSD の場所が適切でない場合は、OSD を希望の場所に移動します。
ceph osd crush move BUCKET_TO_MOVE BUCKET_TYPE=PARENT_BUCKET
[root@mon ~]# ceph osd crush move BUCKET_TO_MOVE BUCKET_TYPE=PARENT_BUCKETCopy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、
sdd:row1にあるバケットを root バケットに移動するには、以下を実行します。ceph osd crush move ssd:row1 root=ssd:root
[root@mon ~]# ceph osd crush move ssd:row1 root=ssd:rootCopy to Clipboard Copied! Toggle word wrap Toggle overflow
関連情報
- Red Hat Ceph Storage トラブルシューティングガイドの Down OSD セクションを参照してください。
- Red Hat Ceph Storage オペレーションガイドの ストレージクラスターサイズの管理 の章を参照してください。
- Red Hat Ceph Storage インストールガイド