10.2. コンテナー化環境での Ceph オブジェクトのトラブルシューティング
OSD コンテナーは、レスキュー/メンテナンスモードで起動して、Ceph パッケージを OSD ノードにインストールせずに Red Hat Ceph Storage 4 の OSD を修復できます。
ceph-bluestore-tool
を使用して fsck
コマンドで整合性チェックを実行するか、repair
コマンドで整合性チェックを実行し、エラーを修復できます。
この手順は、コンテナー化されたデプロイメントのみを対象としています。ベアメタルデプロイメントの場合はこのセクションをスキップしてください。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- Ceph OSD ノードへのルートレベルのアクセス。
-
ceph-osd
デーモンの停止。
手順
クラスターに
noout
フラグを設定します。例
ceph osd set noout
[root@mon ~]# ceph osd set noout
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - OSD コンテナーをホストするノードにログインします。
/etc/systemd/system/ceph-osd@.service
ユニットファイルを/root
ディレクトリーにバックアップします。例
cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup
[root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /run/ceph-osd@OSD_ID.service-cid
ファイルを/root
に移動します。例
mv /run/ceph-osd@0.service-cid /root
[root@osd ~]# mv /run/ceph-osd@0.service-cid /root
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/systemd/system/ceph-osd@.service
ユニットファイルを編集し、-it --entrypoint /bin/bash
オプションを podman コマンドに追加します。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemd
マネージャーの設定を再ロードします。例
systemctl daemon-reload
[root@osd ~]# systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD_ID
に関連付けられた OSD サービスを再起動します。Syntax
systemctl restart ceph-osd@OSD_ID.service
systemctl restart ceph-osd@OSD_ID.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD_ID
を OSD の ID に置き換えます。例
systemctl restart ceph-osd@0.service
[root@osd ~]# systemctl restart ceph-osd@0.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD_ID
に関連付けられたコンテナーにログインします。Syntax
podman exec -it ceph-osd-OSD_ID /bin/bash
podman exec -it ceph-osd-OSD_ID /bin/bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
podman exec -it ceph-osd-0 /bin/bash
[root@osd ~]# podman exec -it ceph-osd-0 /bin/bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow osd fsid
を取得し、OSD をアクティベートして OSD の論理ボリューム (LV) をマウントします。Syntax
ceph-volume lvm list |grep -A15 "osd\.OSD_ID"|grep "osd fsid" ceph-volume lvm activate --bluestore OSD_ID OSD_FSID
ceph-volume lvm list |grep -A15 "osd\.OSD_ID"|grep "osd fsid" ceph-volume lvm activate --bluestore OSD_ID OSD_FSID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow fsck
およびrepair
コマンドを実行します。Syntax
ceph-bluestore-tool fsck --path /var/lib/ceph/osd/ceph-OSD_ID ceph-bluestore-tool repair --path /var/lib/ceph/osd/ceph-OSD_ID
ceph-bluestore-tool fsck --path /var/lib/ceph/osd/ceph-OSD_ID ceph-bluestore-tool repair --path /var/lib/ceph/osd/ceph-OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
ceph-bluestore-tool fsck --path /var/lib/ceph/osd/ceph-0
[root@osd ~]# ceph-bluestore-tool fsck --path /var/lib/ceph/osd/ceph-0 fsck success
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ceph-bluestore-tool repair --path /var/lib/ceph/osd/ceph-0
[root@osd ~]# ceph-bluestore-tool repair --path /var/lib/ceph/osd/ceph-0 repair success
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーを終了したら、
/root
ディレクトリーから/etc/systemd/system/ceph-osd@.service
ユニットファイルをコピーします。例
cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.modified cp /root/ceph-osd@.service.backup /etc/systemd/system/ceph-osd@.service
[root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.modified [root@osd ~]# cp /root/ceph-osd@.service.backup /etc/systemd/system/ceph-osd@.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemd
マネージャーの設定を再ロードします。例
systemctl daemon-reload
[root@osd ~]# systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /run/ceph-osd@OSD_ID.service-cid
ファイルを/tmp
に移動します。例
mv /run/ceph-osd@0.service-cid /tmp
[root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD_ID
に関連付けられた OSD サービスを再起動します。Syntax
systemctl restart ceph-osd@OSD_ID.service
[root@osd ~]# systemctl restart ceph-osd@OSD_ID.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
systemctl restart ceph-osd@0.service
[root@osd ~]# systemctl restart ceph-osd@0.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow