5.4. 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
とマークすることもできます。詳しくは、「1 つ以上の OSD がダウンしている」 を参照してください。
現代のサーバーは通常、ホットスワップ可能なドライブでデプロイされるので、障害が発生したドライブをプルして、ノードを停止せずに新しいドライブに置き換えることができます。手順全体には、以下の手順が含まれます。
- Ceph クラスターから OSD を削除します。詳細は、「Ceph クラスターからの OSD の削除」の手順を参照してください。
- ドライブを置き換えます。詳細は「物理ドライブの置き換え」セクションを参照してください。
- OSD をクラスターに追加します。詳細は、「OSD の Ceph クラスターへの追加 」の手順を参照してください。
作業を開始する前に
down
になっている OSD を特定します。ceph osd tree | grep -i down
# ceph osd tree | grep -i down ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY 0 0.00999 osd.0 down 1.00000 1.00000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD プロセスが停止していることを確認します。OSD ノードから以下のコマンドを使用します。
systemctl status ceph-osd@<OSD-number>
# 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
# systemctl status ceph-osd@osd.0 ... Active: inactive (dead)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ceph-osd
デーモンが実行しているかどうか。ダウンとマークされているが
、対応するceph-osd
デーモンが実行されている OSD のトラブルシューティングについての詳しい情報は、「1 つ以上の OSD がダウンしている」 を参照してください。
手順: Ceph クラスターからの OSD の削除
OSD を
out
としてマークを付けます。ceph osd out osd.<OSD-number>
# ceph osd out osd.<OSD-number>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <OSD-number>
をdown
とマークされた OSD の ID に置き換えます。以下に例を示します。ceph osd out osd.0
# ceph osd out osd.0 marked out osd.0.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記OSD
がダウンしている場合
、Ceph は OSD からハートビートパケットを受信しない場合に 600秒後に自動的にマークします
。これが発生すると、失敗した OSD データのコピーを持つ他の OSD がバックフィルを開始し、必要なコピー数がクラスター内で存在することを確認します。クラスターがバックフィル状態である間、クラスターの状態はdegraded
します。失敗した OSD がバックフィルされていることを確認します。出力には、以下のような情報が含まれます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CRUSH マップから OSD を削除します。
ceph osd crush remove osd.<OSD-number>
# ceph osd crush remove osd.<OSD-number>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <OSD-number>
をdown
とマークされた OSD の ID に置き換えます。以下に例を示します。ceph osd crush remove osd.0
# ceph osd crush remove osd.0 removed item id 0 name 'osd.0' from crush map
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD に関連する認証キーを削除します。
ceph auth del osd.<OSD-number>
# ceph auth del osd.<OSD-number>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <OSD-number>
をdown
とマークされた OSD の ID に置き換えます。以下に例を示します。ceph auth del osd.0
# ceph auth del osd.0 updated
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ceph Storage クラスターから OSD を削除します。
ceph osd rm osd.<OSD-number>
# ceph osd rm osd.<OSD-number>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <OSD-number>
をdown
とマークされた OSD の ID に置き換えます。以下に例を示します。ceph osd rm osd.0
# ceph osd rm osd.0 removed osd.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD を正常に削除している場合は、以下のコマンドの出力には存在しません。
ceph osd tree
# ceph osd tree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 障害が発生したドライブをアンマウントします。
umount /var/lib/ceph/osd/<cluster-name>-<OSD-number>
# umount /var/lib/ceph/osd/<cluster-name>-<OSD-number>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターの名前と OSD の ID を指定します。以下に例を示します。
umount /var/lib/ceph/osd/ceph-0/
# umount /var/lib/ceph/osd/ceph-0/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ドライブを正常にマウントした場合は、次のコマンドの出力には存在しません。
df -h
# df -h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順: 物理ドライブの置き換え
物理ドライブの置き換えに関する詳細は、ハードウェアノードのドキュメントを参照してください。
- ドライブがホットスワップできない場合は、障害が発生したドライブを新しいドライブに置き換えます。
- ドライブがホットスワップ可能で、ノードに複数の OSD が含まれる場合は、ノード全体をシャットダウンし、物理ドライブを置き換える必要がある場合があります。クラスターのバックフィルを防止することを検討してください。詳しくは、「リバランスの停止および開始」 を参照してください。
-
ドライブが
/dev/
ディレクトリー配下に表示されたら、ドライブパスを書き留めます。 - OSD を手動で追加する必要がある場合には、OSD ドライブを見つけ、ディスクをフォーマットします。
手順: OSD の Ceph クラスターへの追加
OSD を再度追加します。
Ansible を使用してクラスターをデプロイしている場合は、Ceph 管理サーバーから Playbook
ceph-ansible
を再度実行します。ansible-playbook /usr/share/ceph-ansible site.yml
# ansible-playbook /usr/share/ceph-ansible site.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - OSD を手動で追加している場合は、Red Hat Ceph Storage 3 の _Administration Guid_e の「コマンドラインインターフェースを使用した OSD の追加 」セクションを参照してください。
CRUSH 階層が正確であることを確認します。
ceph osd tree
# ceph osd tree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CRUSH 階層の OSD の場所が分からない場合は、OSD を任意の場所に移動します。
ceph osd crush move <bucket-to-move> <bucket-type>=<parent-bucket>
ceph osd crush move <bucket-to-move> <bucket-type>=<parent-bucket>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、
sdd:row1
にあるバケットを root バケットに移動するには、以下を実行します。ceph osd crush move ssd:row1 root=ssd:root
# ceph osd crush move ssd:row1 root=ssd:root
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
関連項目
- 「1 つ以上の OSD がダウンしている」
- Red Hat Ceph Storage 3 の『管理ガイド』の「 クラスターサイズの管理」の章
- Red Hat Ceph Storage 3インストールガイド(Red Hat Enterprise Linux 用 ) またはUbuntu のインストールガイド