2.4. 障害のある OSD ディスクの置き換え
OSD を置き換える一般的な手順には、OSD をストレージクラスターから削除し、ドライブを置き換えてから OSD を再作成する必要があります。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- 障害の発生したディスク。
手順
ストレージクラスターの正常性を確認します。
[root@mon ~]# ceph healthCRUSH 階層で OSD の場所を特定します。
[root@mon ~]# ceph osd tree | grep -i downOSD ノードで、OSD の起動を試行します。
構文
systemctl start ceph-osd@OSD_IDコマンドが OSD がすでに実行されていることを示す場合、ハートビートまたはネットワークの問題がある可能性があります。OSD を再起動できない場合は、ドライブが失敗する可能性があります。
注記OSD が
downすると、OSD は最終的にoutとマークされます。Ceph Storage では、これは通常の動作です。OSD がoutとマークすると、失敗した OSD のデータのコピーが含まれる他の OSD がバックフィルを開始し、必要な数のコピーがストレージクラスター内に存在していることを確認します。ストレージクラスターがバックフィル状態である間、クラスターの状態はdegradedになります。Ceph のコンテナー化されたデプロイメントでは、OSD_ID で OSD コンテナーの起動してみてください。
構文
systemctl start ceph-osd@OSD_IDコマンドが OSD がすでに実行されていることを示す場合、ハートビートまたはネットワークの問題がある可能性があります。OSD を再起動できない場合は、ドライブが失敗する可能性があります。
注記OSD に関連付けられたドライブは、コンテナー OSD ID をドライブにマッピング して判断できます。
失敗した OSD のマウントポイントを確認します。
注記Ceph のコンテナー化されたデプロイメントでは、OSD がダウンし、OSD ドライブのマウントが解除されるため、
dfを実行してマウントポイントを確認することはできません。別の方法を使用して、OSD ドライブが失敗したかどうかを判別します。たとえば、コンテナーノードからドライブでsmartctlを実行します。[root@osd ~]# df -hOSD を再起動できない場合は、マウントポイントを確認できます。マウントポイントが表示されない場合は、OSD ドライブを再マウントして OSD を再起動することができます。マウントポイントを復元できない場合は、OSD ドライブが失敗している可能性があります。
smartctlユーティリティー cab を使用して、ドライブが正常かどうかを確認します。構文
yum install smartmontools smartctl -H /dev/BLOCK_DEVICE例
[root@osd ~]# smartctl -H /dev/sdaドライブに障害が発生した場合は、それを置き換える必要があります。
OSD プロセスを停止します。
構文
systemctl stop ceph-osd@OSD_IDCeph のコンテナー化されたデプロイメントの場合は、OSD コンテナーを停止します。
構文
systemctl stop ceph-osd@OSD_IDストレージクラスターから OSD を削除します。
構文
ceph osd out OSD_ID失敗した OSD がバックフィルされていることを確認します。
[root@osd ~]# ceph -wCRUSH マップから OSD を削除します。
構文
ceph osd crush remove osd.OSD_ID注記この手順は、OSD を永続的に削除し、再デプロイしない場合にのみ必要になります。
OSD の認証キーを削除します。
構文
ceph auth del osd.OSD_IDOSD のキーがリスト表示されていないことを確認します。
例
[root@osd ~]# ceph auth listストレージクラスターから OSD を削除します。
構文
ceph osd rm osd.OSD_ID障害が発生したドライブパスのマウントを解除します。
構文
umount /var/lib/ceph/osd/CLUSTER_NAME-OSD_ID例
[root@osd ~]# umount /var/lib/ceph/osd/ceph-0注記Ceph のコンテナー化されたデプロイメントでは、OSD がコンテナーがダウンし、OSD ドライブのマウントが解除されます。この場合、マウント解除するものがないため、この手順はスキップできます。
物理ドライブを置き換えます。ノードのハードウェアベンダーのドキュメントを参照してください。ドライブのホットスワップが可能である場合は、障害が発生したドライブを新しいドライブに置き換えます。ドライブがホットスワップできず、ノードに複数の OSD が含まれている場合は、物理ドライブを交換するためにノードを停止する必要がある場合があります。ノードを一時的に停止する必要がある場合は、バックフィルを防ぐためにクラスターを
nooutに設定できます。例
[root@osd ~]# ceph osd set nooutドライブを置き換えて、ノードとその OSD をオンラインに戻したら、
noout設定を削除します。例
[root@osd ~]# ceph osd unset noout新しいドライブを
/dev/ディレクトリーの下に表示されるように、ドライブパスを書き留めて作業を続行します。- OSD ドライブを特定し、ディスクをフォーマットします。
OSD を再作成します。
- Ceph Ansible の使用
- コマンドラインインターフェイス の使用
CRUSH 階層をチェックして、これが正確であることを確認します。
例
[root@osd ~]# ceph osd treeCRUSH 階層の OSD の場所が適切でない場合は、
moveコマンドを使用して移動できます。構文
ceph osd crush move BUCKET_TO_MOVE BUCKET_TYPE=PARENT_BUCKET- OSD がオンラインであることを確認します。