OpenShift Container Storage is now OpenShift Data Foundation starting with version 4.9.
デバイスの置き換え
動作中または故障したデバイスを安全に交換するための手順
概要
多様性を受け入れるオープンソースの強化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、弊社の CTO、Chris Wright のメッセージ を参照してください。
Red Hat ドキュメントへのフィードバックの提供 リンクのコピーリンクがクリップボードにコピーされました!
弊社のドキュメントについてのご意見をお聞かせください。ドキュメントの改善点があれば、ぜひお知らせください。フィードバックをお寄せいただくには、以下をご確認ください。
特定の部分についての簡単なコメントをお寄せいただく場合は、以下をご確認ください。
- ドキュメントの表示が Multi-page HTML 形式になっていていることを確認してください。ドキュメントの右上隅に Feedback ボタンがあることを確認してください。
- マウスカーソルを使用して、コメントを追加するテキストの部分を強調表示します。
- 強調表示されたテキストの下に表示される Add Feedback ポップアップをクリックします。
- 表示される指示に従ってください。
より詳細なフィードバックをお寄せいただく場合は、Bugzilla のチケットを作成してください。
- Bugzilla の Web サイトに移動します。
- Component セクションで、documentation を選択します。
- Description フィールドに、ドキュメントの改善に向けたご提案を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- Submit Bug をクリックします。
はじめに リンクのコピーリンクがクリップボードにコピーされました!
デプロイメントのタイプに応じて、以下のいずれかの手順を選択してストレージノードを置き換えることができます。
AWS にデプロイされた動的に作成されたストレージクラスターについては、以下を参照してください。
- VMware にデプロイされた動的に作成されたストレージクラスターについては、「VMware インフラストラクチャーで動作するストレージデバイスまたは失敗したストレージデバイスの置き換え」を参照してください。
- Red Hat Virtualization にデプロイされた動的に作成されたストレージクラスターについては、「Red Hat Virtualization のインストーラーでプロビジョニングされるインフラストラクチャーで動作するストレージデバイスまたは障害のあるストレージデバイスの置き換え」を参照してください。
- Microsoft Azure にデプロイされた動的に作成されたストレージクラスターについては、「Azure のインストーラーでプロビジョニングされるインフラストラクチャーで動作するストレージデバイスまたは失敗したストレージデバイスの置き換え」を参照してください。
ローカルストレージデバイスを使用してデプロイされたストレージクラスターについては、以下を参照してください。
OpenShift Data Foundation は、異なる OSD サイズをサポートしません。
第1章 AWS への OpenShift Data Foundation の動的プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
1.1. AWS のユーザーによってプロビジョニングされるインフラストラクチャーで動作するストレージデバイスまたは失敗したストレージデバイスの置き換え リンクのコピーリンクがクリップボードにコピーされました!
AWA のユーザーによってプロビジョニングされるインフラストラクチャーの動的に作成されたストレージクラスターのデバイスを置き換える必要がある場合は、ストレージノードを置き換える必要があります。ノードを置き換える方法は、以下を参照してください。
1.2. AWS のインストーラーでプロビジョニングされるインフラストラクチャーで動作するストレージデバイスまたは失敗したストレージデバイスの置き換え リンクのコピーリンクがクリップボードにコピーされました!
AWA のインストーラーでプロビジョニングされるインフラストラクチャーの動的に作成されたストレージクラスターのデバイスを置き換える必要がある場合は、ストレージノードを置き換える必要があります。ノードを置き換える方法は、以下を参照してください。
第2章 VMware への OpenShift Data Foundation の動的プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
2.1. VMware インフラストラクチャーで動作するストレージデバイスまたは失敗したストレージデバイスの置き換え リンクのコピーリンクがクリップボードにコピーされました!
VMware インフラストラクチャーに動的にデプロイされる OpenShift Data Foundation で 1 つ以上の仮想マシンディスク (VMDK) を交換する必要がある場合は、新しいボリュームに新しい永続ボリュームクレーム (PVC) を作成し、古いオブジェクトストレージデバイス (OSD) を削除します。
前提条件
データに耐久性があることを確認します。
- OpenShift Web コンソールで、Storage → OpenShift Data Foundation をクリックします。
-
Storage Systems タブをクリックし、
ocs-storagecluster-storagesystemをクリックします。 - Block and File ダッシュボードの Status card の Overview タブで、Data Resiliency に緑色のチェックマークが付いていることを確認します。
手順
置き換える必要がある OSD と、その OSD がスケジュールされている OpenShift Container Platform ノードを特定します。
oc get -n openshift-storage pods -l app=rook-ceph-osd -o wide
$ oc get -n openshift-storage pods -l app=rook-ceph-osd -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
rook-ceph-osd-0-6d77d6c7c6-m8xj6 0/1 CrashLoopBackOff 0 24h 10.129.0.16 compute-2 <none> <none> rook-ceph-osd-1-85d99fb95f-2svc7 1/1 Running 0 24h 10.128.2.24 compute-0 <none> <none> rook-ceph-osd-2-6c66cdb977-jp542 1/1 Running 0 24h 10.130.0.18 compute-1 <none> <none>
rook-ceph-osd-0-6d77d6c7c6-m8xj6 0/1 CrashLoopBackOff 0 24h 10.129.0.16 compute-2 <none> <none> rook-ceph-osd-1-85d99fb95f-2svc7 1/1 Running 0 24h 10.128.2.24 compute-0 <none> <none> rook-ceph-osd-2-6c66cdb977-jp542 1/1 Running 0 24h 10.130.0.18 compute-1 <none> <none>Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、
rook-ceph-osd-0-6d77d6c7c6-m8xj6を置き換える必要があり、compute-2は OSD がスケジュールされる OpenShift Container platform ノードです。注記置き換える OSD が正常である場合、Pod のステータスは
Runningになります。置き換えられる OSD の OSD デプロイメントをスケールダウンします。
OSD を置き換えるたびに、
osd_id_to_removeパラメーターを OSD ID に更新し、この手順を繰り返します。osd_id_to_remove=0
$ osd_id_to_remove=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale -n openshift-storage deployment rook-ceph-osd-${osd_id_to_remove} --replicas=0$ oc scale -n openshift-storage deployment rook-ceph-osd-${osd_id_to_remove} --replicas=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
osd_id_to_removeはrook-ceph-osd接頭辞の直後にくる Pod 名の整数です。この例では、デプロイメント名はrook-ceph-osd-0です。出力例:
deployment.extensions/rook-ceph-osd-0 scaled
deployment.extensions/rook-ceph-osd-0 scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow rook-ceph-osdPod が停止していることを確認します。oc get -n openshift-storage pods -l ceph-osd-id=${osd_id_to_remove}$ oc get -n openshift-storage pods -l ceph-osd-id=${osd_id_to_remove}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
No resources found.
No resources found.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要rook-ceph-osdPod がterminating状態にある場合は、forceオプションを使用して Pod を削除します。oc delete pod rook-ceph-osd-0-6d77d6c7c6-m8xj6 --force --grace-period=0
$ oc delete pod rook-ceph-osd-0-6d77d6c7c6-m8xj6 --force --grace-period=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely. pod "rook-ceph-osd-0-6d77d6c7c6-m8xj6" force deleted
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely. pod "rook-ceph-osd-0-6d77d6c7c6-m8xj6" force deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい OSD を追加できるように、クラスターから古い OSD を削除します。
古い
ocs-osd-removalジョブを削除します。oc delete -n openshift-storage job ocs-osd-removal-job
$ oc delete -n openshift-storage job ocs-osd-removal-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow openshift-storageプロジェクトに移動します。oc project openshift-storage
$ oc project openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターから以前の OSD を削除します。
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> FORCE_OSD_REMOVAL=false | oc create -n openshift-storage -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> FORCE_OSD_REMOVAL=false | oc create -n openshift-storage -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow <failed_osd_id>rook-ceph-osd接頭辞の直後の Pod 名の整数です。コマンドにコンマ区切りの OSD ID を追加して、複数の OSD を削除できます (例:FAILED_OSD_IDS=0,1,2)OSD が 3 つしかないクラスター、または OSD が削除された後にデータの 3 つのレプリカすべてを復元するにはスペースが不十分なクラスターでは、
FORCE_OSD_REMOVAL値をtrueに変更する必要があります。警告この手順により、OSD はクラスターから完全に削除されます。
osd_id_to_removeの正しい値が指定されていることを確認します。
ocs-osd-removal-jobPod のステータスをチェックして、OSD が正常に削除されたことを確認します。Completedのステータスで、OSD の削除ジョブが正常に完了したことを確認します。oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
# oc get pod -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow OSD の取り外しが完了したことを確認します。
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
$ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要ocs-osd-removal-jobが失敗し、Pod が予想されるCompletedの状態にない場合、追加のデバッグのために Pod ログを確認します。以下に例を示します。
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 暗号化がインストール時に有効にされている場合は、それぞれの OpenShift Data Foundation ノードから削除された OSD デバイスから
dm-cryptで管理されるdevice-mapperマッピングを削除します。ocs-osd-removal-jobPod のログから、置き換えられた OSD の PVC 名を取得します。oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 |egrep -i ‘pvc|deviceset’
$ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 |egrep -i ‘pvc|deviceset’Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
2021-05-12 14:31:34.666000 I | cephosd: removing the OSD PVC "ocs-deviceset-xxxx-xxx-xxx-xxx"
2021-05-12 14:31:34.666000 I | cephosd: removing the OSD PVC "ocs-deviceset-xxxx-xxx-xxx-xxx"Copy to Clipboard Copied! Toggle word wrap Toggle overflow これまでに特定した各ノードに以下を実行します。
デバッグPod を作成し、ストレージノードのホストに対してchrootを作成します。oc debug node/<node name>
$ oc debug node/<node name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node name>ノードの名前。
chroot /host
$ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow
直前の手順で特定された PVC 名に基づいて関連するデバイス名を検索します。
dmsetup ls| grep <pvc name>
$ dmsetup ls| grep <pvc name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <pvc name>PVC の名前です。
出力例:
ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt (253:0)
ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt (253:0)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
マップ済みデバイスを削除します。
cryptsetup luksClose --debug --verbose ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt
$ cryptsetup luksClose --debug --verbose ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcryptCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要権限が十分にないため、コマンドがスタックした場合には、以下のコマンドを実行します。
-
CTRL+Zを押して上記のコマンドを終了します。 スタックしたプロセスの PID を検索します。
ps -ef | grep crypt
$ ps -ef | grep cryptCopy to Clipboard Copied! Toggle word wrap Toggle overflow killコマンドを使用してプロセスを終了します。kill -9 <PID>
$ kill -9 <PID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <PID>- プロセス ID です。
デバイス名が削除されていることを確認します。
dmsetup ls
$ dmsetup lsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
ocs-osd-removalジョブを削除します。oc delete -n openshift-storage job ocs-osd-removal-job
$ oc delete -n openshift-storage job ocs-osd-removal-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
データ暗号化で外部の鍵管理システム (KMS) を使用する場合は、古い OSD 暗号化キーは孤立したキーであるために Vault サーバーから削除できます。
検証手順
新しい OSD が実行されていることを確認します。
oc get -n openshift-storage pods -l app=rook-ceph-osd
$ oc get -n openshift-storage pods -l app=rook-ceph-osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
rook-ceph-osd-0-5f7f4747d4-snshw 1/1 Running 0 4m47s rook-ceph-osd-1-85d99fb95f-2svc7 1/1 Running 0 1d20h rook-ceph-osd-2-6c66cdb977-jp542 1/1 Running 0 1d20h
rook-ceph-osd-0-5f7f4747d4-snshw 1/1 Running 0 4m47s rook-ceph-osd-1-85d99fb95f-2svc7 1/1 Running 0 1d20h rook-ceph-osd-2-6c66cdb977-jp542 1/1 Running 0 1d20hCopy to Clipboard Copied! Toggle word wrap Toggle overflow Bound状態の新しい PVC が作成されていることを確認します。oc get -n openshift-storage pvc
$ oc get -n openshift-storage pvcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE ocs-deviceset-0-0-2s6w4 Bound pvc-7c9bcaf7-de68-40e1-95f9-0b0d7c0ae2fc 512Gi RWO thin 5m ocs-deviceset-1-0-q8fwh Bound pvc-9e7e00cb-6b33-402e-9dc5-b8df4fd9010f 512Gi RWO thin 1d20h ocs-deviceset-2-0-9v8lq Bound pvc-38cdfcee-ea7e-42a5-a6e1-aaa6d4924291 512Gi RWO thin 1d20h
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE ocs-deviceset-0-0-2s6w4 Bound pvc-7c9bcaf7-de68-40e1-95f9-0b0d7c0ae2fc 512Gi RWO thin 5m ocs-deviceset-1-0-q8fwh Bound pvc-9e7e00cb-6b33-402e-9dc5-b8df4fd9010f 512Gi RWO thin 1d20h ocs-deviceset-2-0-9v8lq Bound pvc-38cdfcee-ea7e-42a5-a6e1-aaa6d4924291 512Gi RWO thin 1d20hCopy to Clipboard Copied! Toggle word wrap Toggle overflow (オプション) クラスターでクラスター全体の暗号化が有効な場合には、新規 OSD デバイスが暗号化されていることを確認します。
新規 OSD Pod が実行しているノードを特定します。
oc get -o=custom-columns=NODE:.spec.nodeName pod/<OSD pod name>
$ oc get -o=custom-columns=NODE:.spec.nodeName pod/<OSD pod name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <OSD pod name>OSD Pod の名前です。
以下に例を示します。
oc get -o=custom-columns=NODE:.spec.nodeName pod/rook-ceph-osd-0-544db49d7f-qrgqm
oc get -o=custom-columns=NODE:.spec.nodeName pod/rook-ceph-osd-0-544db49d7f-qrgqmCopy to Clipboard Copied! Toggle word wrap Toggle overflow
直前の手順で特定された各ノードに以下を実行します。
デバッグ Pod を作成し、選択したホストの chroot 環境を開きます。
oc debug node/<node name>
$ oc debug node/<node name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node name>ノードの名前。
chroot /host
$ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ocs-deviceset名の横にあるcryptキーワードを確認します。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- OpenShift Web コンソールにログインし、ストレージダッシュボードを表示します。
第3章 Red Hat Virtualization への OpenShift Data Foundation の動的プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
3.1. Red Hat Virtualization のインストーラーでプロビジョニングされるインフラストラクチャーで動作するストレージデバイスまたは障害のあるストレージデバイスの置き換え リンクのコピーリンクがクリップボードにコピーされました!
新しいボリュームに新しい永続ボリュームクレーム (PVC) を作成し、古いオブジェクトストレージデバイス (OSD) を削除します。
前提条件
データに耐久性があることを確認します。
- OpenShift Web コンソールで、Storage → OpenShift Data Foundation をクリックします。
-
Storage Systems タブをクリックし、
ocs-storagecluster-storagesystemをクリックします。 - Block and File ダッシュボードの Status card の Overview タブで、Data Resiliency に緑色のチェックマークが付いていることを確認します。
手順
置き換える必要がある OSD と、その OSD がスケジュールされている OpenShift Container Platform ノードを特定します。
oc get -n openshift-storage pods -l app=rook-ceph-osd -o wide
$ oc get -n openshift-storage pods -l app=rook-ceph-osd -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
rook-ceph-osd-0-6d77d6c7c6-m8xj6 0/1 CrashLoopBackOff 0 24h 10.129.0.16 compute-2 <none> <none> rook-ceph-osd-1-85d99fb95f-2svc7 1/1 Running 0 24h 10.128.2.24 compute-0 <none> <none> rook-ceph-osd-2-6c66cdb977-jp542 1/1 Running 0 24h 10.130.0.18 compute-1 <none> <none>
rook-ceph-osd-0-6d77d6c7c6-m8xj6 0/1 CrashLoopBackOff 0 24h 10.129.0.16 compute-2 <none> <none> rook-ceph-osd-1-85d99fb95f-2svc7 1/1 Running 0 24h 10.128.2.24 compute-0 <none> <none> rook-ceph-osd-2-6c66cdb977-jp542 1/1 Running 0 24h 10.130.0.18 compute-1 <none> <none>Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、
rook-ceph-osd-0-6d77d6c7c6-m8xj6を置き換える必要があり、compute-2は OSD がスケジュールされる OpenShift Container platform ノードです。注記置き換える OSD が正常である場合、Pod のステータスは
Runningになります。置き換えられる OSD の OSD デプロイメントをスケールダウンします。
OSD を置き換えるたびに、
osd_id_to_removeパラメーターを OSD ID に更新し、この手順を繰り返します。osd_id_to_remove=0
$ osd_id_to_remove=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale -n openshift-storage deployment rook-ceph-osd-${osd_id_to_remove} --replicas=0$ oc scale -n openshift-storage deployment rook-ceph-osd-${osd_id_to_remove} --replicas=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
osd_id_to_removeはrook-ceph-osd接頭辞の直後にくる Pod 名の整数です。この例では、デプロイメント名はrook-ceph-osd-0です。出力例:
deployment.extensions/rook-ceph-osd-0 scaled
deployment.extensions/rook-ceph-osd-0 scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow rook-ceph-osdPod が停止していることを確認します。oc get -n openshift-storage pods -l ceph-osd-id=${osd_id_to_remove}$ oc get -n openshift-storage pods -l ceph-osd-id=${osd_id_to_remove}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
No resources found.
No resources found.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要rook-ceph-osdPod がterminating状態にある場合は、forceオプションを使用して Pod を削除します。oc delete pod rook-ceph-osd-0-6d77d6c7c6-m8xj6 --force --grace-period=0
$ oc delete pod rook-ceph-osd-0-6d77d6c7c6-m8xj6 --force --grace-period=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely. pod "rook-ceph-osd-0-6d77d6c7c6-m8xj6" force deleted
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely. pod "rook-ceph-osd-0-6d77d6c7c6-m8xj6" force deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい OSD を追加できるように、クラスターから古い OSD を削除します。
古い
ocs-osd-removalジョブを削除します。oc delete -n openshift-storage job ocs-osd-removal-job
$ oc delete -n openshift-storage job ocs-osd-removal-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
job.batch "ocs-osd-removal-job"
job.batch "ocs-osd-removal-job"Copy to Clipboard Copied! Toggle word wrap Toggle overflow openshift-storageプロジェクトに移動します。oc project openshift-storage
$ oc project openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターから以前の OSD を削除します。
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> FORCE_OSD_REMOVAL=false | oc create -n openshift-storage -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> FORCE_OSD_REMOVAL=false | oc create -n openshift-storage -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow <failed_osd_id>rook-ceph-osd接頭辞の直後の Pod 名の整数です。コマンドにコンマ区切りの OSD ID を追加して、複数の OSD を削除できます (例:FAILED_OSD_IDS=0,1,2)OSD が 3 つしかないクラスター、または OSD が削除された後にデータの 3 つのレプリカすべてを復元するにはスペースが不十分なクラスターでは、
FORCE_OSD_REMOVAL値をtrueに変更する必要があります。警告この手順により、OSD はクラスターから完全に削除されます。
osd_id_to_removeの正しい値が指定されていることを確認します。
ocs-osd-removal-jobPod のステータスをチェックして、OSD が正常に削除されたことを確認します。Completedのステータスで、OSD の削除ジョブが正常に完了したことを確認します。oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
# oc get pod -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow OSD の取り外しが完了したことを確認します。
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
$ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要ocs-osd-removal-jobが失敗し、Pod が予想されるCompletedの状態にない場合、追加のデバッグのために Pod ログを確認します。以下に例を示します。
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 暗号化がインストール時に有効にされている場合は、それぞれの OpenShift Data Foundation ノードから削除された OSD デバイスから
dm-cryptで管理されるdevice-mapperマッピングを削除します。ocs-osd-removal-jobPod のログから、置き換えられた OSD の PVC 名を取得します。oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 |egrep -i ‘pvc|deviceset’
$ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 |egrep -i ‘pvc|deviceset’Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
2021-05-12 14:31:34.666000 I | cephosd: removing the OSD PVC "ocs-deviceset-xxxx-xxx-xxx-xxx"
2021-05-12 14:31:34.666000 I | cephosd: removing the OSD PVC "ocs-deviceset-xxxx-xxx-xxx-xxx"Copy to Clipboard Copied! Toggle word wrap Toggle overflow これまでに特定した各ノードに以下を実行します。
デバッグPod を作成し、ストレージノードのホストに対してchrootを作成します。oc debug node/<node name>
$ oc debug node/<node name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node name>ノードの名前。
chroot /host
$ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow
直前の手順で特定された PVC 名に基づいて関連するデバイス名を検索します。
dmsetup ls| grep <pvc name>
$ dmsetup ls| grep <pvc name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <pvc name>PVC の名前です。
出力例:
ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt (253:0)
ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt (253:0)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
マップ済みデバイスを削除します。
cryptsetup luksClose --debug --verbose ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt
$ cryptsetup luksClose --debug --verbose ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcryptCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要権限が十分にないため、コマンドがスタックした場合には、以下のコマンドを実行します。
-
CTRL+Zを押して上記のコマンドを終了します。 スタックしたプロセスの PID を検索します。
ps -ef | grep crypt
$ ps -ef | grep cryptCopy to Clipboard Copied! Toggle word wrap Toggle overflow killコマンドを使用してプロセスを終了します。kill -9 <PID>
$ kill -9 <PID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <PID>- プロセス ID です。
デバイス名が削除されていることを確認します。
dmsetup ls
$ dmsetup lsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
ocs-osd-removalジョブを削除します。oc delete -n openshift-storage job ocs-osd-removal-job
$ oc delete -n openshift-storage job ocs-osd-removal-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
データ暗号化で外部の鍵管理システム (KMS) を使用する場合は、古い OSD 暗号化キーは孤立したキーであるために Vault サーバーから削除できます。
検証手順
新しい OSD が実行されていることを確認します。
oc get -n openshift-storage pods -l app=rook-ceph-osd
$ oc get -n openshift-storage pods -l app=rook-ceph-osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
rook-ceph-osd-0-5f7f4747d4-snshw 1/1 Running 0 4m47s rook-ceph-osd-1-85d99fb95f-2svc7 1/1 Running 0 1d20h rook-ceph-osd-2-6c66cdb977-jp542 1/1 Running 0 1d20h
rook-ceph-osd-0-5f7f4747d4-snshw 1/1 Running 0 4m47s rook-ceph-osd-1-85d99fb95f-2svc7 1/1 Running 0 1d20h rook-ceph-osd-2-6c66cdb977-jp542 1/1 Running 0 1d20hCopy to Clipboard Copied! Toggle word wrap Toggle overflow Bound状態の新しい PVC が作成されていることを確認します。oc get -n openshift-storage pvc
$ oc get -n openshift-storage pvcCopy to Clipboard Copied! Toggle word wrap Toggle overflow (オプション) クラスターでクラスター全体の暗号化が有効な場合には、新規 OSD デバイスが暗号化されていることを確認します。
新規 OSD Pod が実行しているノードを特定します。
oc get -o=custom-columns=NODE:.spec.nodeName pod/<OSD pod name>
$ oc get -o=custom-columns=NODE:.spec.nodeName pod/<OSD pod name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <OSD pod name>OSD Pod の名前です。
以下に例を示します。
oc get -o=custom-columns=NODE:.spec.nodeName pod/rook-ceph-osd-0-544db49d7f-qrgqm
oc get -o=custom-columns=NODE:.spec.nodeName pod/rook-ceph-osd-0-544db49d7f-qrgqmCopy to Clipboard Copied! Toggle word wrap Toggle overflow
これまでに特定した各ノードに以下を実行します。
デバッグ Pod を作成し、選択したホストの chroot 環境を開きます。
oc debug node/<node name>
$ oc debug node/<node name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node name>ノードの名前。
chroot /host
$ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ocs-deviceset名の横にあるcryptキーワードを確認します。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- OpenShift Web コンソールにログインし、ストレージダッシュボードを表示します。
第4章 Microsoft Azure への OpenShift Data Foundation の動的プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
4.1. Azure のインストーラーでプロビジョニングされるインフラストラクチャーで動作するストレージデバイスまたは失敗したストレージデバイスの置き換え リンクのコピーリンクがクリップボードにコピーされました!
Azure のインストーラーでプロビジョニングされるインフラストラクチャーの動的に作成されたストレージクラスターのデバイスを置き換える必要がある場合は、ストレージノードを置き換える必要があります。ノードを置き換える方法は、以下を参照してください。
第5章 ローカルストレージデバイスを使用してデプロイされた OpenShift Data Foundation リンクのコピーリンクがクリップボードにコピーされました!
5.1. ローカルストレージデバイスがサポートするクラスターで動作するストレージデバイスまたは障害のあるストレージデバイスの置き換え リンクのコピーリンクがクリップボードにコピーされました!
以下のインフラストラクチャーでローカルストレージデバイスを使用してデプロイされた OpenShift Data Foundation のオブジェクトストレージデバイス (OSD) を置き換えることができます。
- ベアメタル
- VMware
- Red Hat Virtualization
基礎となるストレージデバイスを 1 つ以上置き換える必要がある場合があります。
前提条件
- Red Hat は、交換用デバイスを、交換するデバイスと同様のインフラストラクチャーおよびリソースで設定することを推奨します。
-
以前のバージョンから OpenShift Data Foundation version 4.9 にアップグレードし、
LocalVolumeDiscoveryおよびLocalVolumeSetオブジェクトを作成していない場合は、Post-update configuration changes for clusters backed by local storage に説明されている以下の手順を行います。 データに耐久性があることを確認します。
- OpenShift Web コンソールで、Storage → OpenShift Data Foundation をクリックします。
-
Storage Systems タブをクリックし、
ocs-storagecluster-storagesystemをクリックします。 - Block and File ダッシュボードの Status card の Overview タブで、Data Resiliency に緑色のチェックマークが付いていることを確認します。
手順
- 関連するワーカーノードから基礎となるストレージデバイスを削除します。
関連する OSD Pod が CrashLoopBackOff 状態になったことを確認します。
置き換える必要がある OSD と、その OSD がスケジュールされている OpenShift Container Platform ノードを特定します。
oc get -n openshift-storage pods -l app=rook-ceph-osd -o wide
$ oc get -n openshift-storage pods -l app=rook-ceph-osd -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
rook-ceph-osd-0-6d77d6c7c6-m8xj6 0/1 CrashLoopBackOff 0 24h 10.129.0.16 compute-2 <none> <none> rook-ceph-osd-1-85d99fb95f-2svc7 1/1 Running 0 24h 10.128.2.24 compute-0 <none> <none> rook-ceph-osd-2-6c66cdb977-jp542 1/1 Running 0 24h 10.130.0.18 compute-1 <none> <none>
rook-ceph-osd-0-6d77d6c7c6-m8xj6 0/1 CrashLoopBackOff 0 24h 10.129.0.16 compute-2 <none> <none> rook-ceph-osd-1-85d99fb95f-2svc7 1/1 Running 0 24h 10.128.2.24 compute-0 <none> <none> rook-ceph-osd-2-6c66cdb977-jp542 1/1 Running 0 24h 10.130.0.18 compute-1 <none> <none>Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、
rook-ceph-osd-0-6d77d6c7c6-m8xj6を置き換える必要があり、compute-2は OSD がスケジュールされる OpenShift Container platform ノードです。置き換えられる OSD の OSD デプロイメントをスケールダウンします。
osd_id_to_remove=0
$ osd_id_to_remove=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale -n openshift-storage deployment rook-ceph-osd-${osd_id_to_remove} --replicas=0$ oc scale -n openshift-storage deployment rook-ceph-osd-${osd_id_to_remove} --replicas=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
osd_id_to_removeはrook-ceph-osd接頭辞の直後にくる Pod 名の整数です。この例では、デプロイメント名はrook-ceph-osd-0です。出力例:
deployment.extensions/rook-ceph-osd-0 scaled
deployment.extensions/rook-ceph-osd-0 scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow rook-ceph-osdPod が停止していることを確認します。oc get -n openshift-storage pods -l ceph-osd-id=${osd_id_to_remove}$ oc get -n openshift-storage pods -l ceph-osd-id=${osd_id_to_remove}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
No resources found in openshift-storage namespace.
No resources found in openshift-storage namespace.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要rook-ceph-osdPod が数分以上terminating状態である場合は、forceオプションを使用して Pod を削除します。oc delete -n openshift-storage pod rook-ceph-osd-0-6d77d6c7c6-m8xj6 --grace-period=0 --force
$ oc delete -n openshift-storage pod rook-ceph-osd-0-6d77d6c7c6-m8xj6 --grace-period=0 --forceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely. pod "rook-ceph-osd-0-6d77d6c7c6-m8xj6" force deleted
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely. pod "rook-ceph-osd-0-6d77d6c7c6-m8xj6" force deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい OSD を追加できるように、クラスターから古い OSD を削除します。
古い
ocs-osd-removalジョブを削除します。oc delete -n openshift-storage job ocs-osd-removal-job
$ oc delete -n openshift-storage job ocs-osd-removal-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow openshift-storageプロジェクトに移動します。oc project openshift-storage
$ oc project openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターから以前の OSD を削除します。
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> FORCE_OSD_REMOVAL=false | oc create -n openshift-storage -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> FORCE_OSD_REMOVAL=false | oc create -n openshift-storage -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow <failed_osd_id>rook-ceph-osd接頭辞の直後の Pod 名の整数です。コマンドにコンマ区切りの OSD ID を追加して、複数の OSD を削除できます (例:FAILED_OSD_IDS=0,1,2)OSD が 3 つしかないクラスター、または OSD が削除された後にデータの 3 つのレプリカすべてを復元するにはスペースが不十分なクラスターでは、
FORCE_OSD_REMOVAL値をtrueに変更する必要があります。警告この手順により、OSD はクラスターから完全に削除されます。
osd_id_to_removeの正しい値が指定されていることを確認します。
ocs-osd-removal-jobPod のステータスをチェックして、OSD が正常に削除されたことを確認します。Completedのステータスで、OSD の削除ジョブが正常に完了したことを確認します。oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
# oc get pod -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow OSD の取り外しが完了したことを確認します。
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
$ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要ocs-osd-removal-jobが失敗し、Pod が予想されるCompletedの状態にない場合、追加のデバッグのために Pod ログを確認します。以下に例を示します。
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 暗号化がインストール時に有効にされている場合は、それぞれの OpenShift Data Foundation ノードから削除された OSD デバイスから
dm-cryptで管理されるdevice-mapperマッピングを削除します。ocs-osd-removal-jobPod のログから、置き換えられた OSD の 永続ボリューム要求 (PVC) 名を取得します。oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 |egrep -i ‘pvc|deviceset’
$ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 |egrep -i ‘pvc|deviceset’Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
2021-05-12 14:31:34.666000 I | cephosd: removing the OSD PVC "ocs-deviceset-xxxx-xxx-xxx-xxx"
2021-05-12 14:31:34.666000 I | cephosd: removing the OSD PVC "ocs-deviceset-xxxx-xxx-xxx-xxx"Copy to Clipboard Copied! Toggle word wrap Toggle overflow これまでに特定した各ノードに以下を実行します。
デバッグPod を作成し、ストレージノードのホストに対してchrootを作成します。oc debug node/<node name>
$ oc debug node/<node name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node name>ノードの名前。
chroot /host
$ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow
直前の手順で特定された PVC 名に基づいて関連するデバイス名を検索します。
dmsetup ls| grep <pvc name>
$ dmsetup ls| grep <pvc name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <pvc name>PVC の名前です。
出力例:
ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt (253:0)
ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt (253:0)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
マップ済みデバイスを削除します。
cryptsetup luksClose --debug --verbose ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt
$ cryptsetup luksClose --debug --verbose ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcryptCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要権限が十分にないため、コマンドがスタックした場合には、以下のコマンドを実行します。
-
CTRL+Zを押して上記のコマンドを終了します。 スタックしたプロセスの PID を検索します。
ps -ef | grep crypt
$ ps -ef | grep cryptCopy to Clipboard Copied! Toggle word wrap Toggle overflow killコマンドを使用してプロセスを終了します。kill -9 <PID>
$ kill -9 <PID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <PID>- プロセス ID です。
デバイス名が削除されていることを確認します。
dmsetup ls
$ dmsetup lsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
削除する必要のある永続ボリューム (PV) を検索します。
oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
$ oc get pv -L kubernetes.io/hostname | grep localblock | grep ReleasedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1
local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow PV を削除します。
oc delete pv <pv_name>
$ oc delete pv <pv_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 物理的に新規デバイスをノードに追加します。
deviceInclusionSpecに一致するデバイスの PV のプロビジョニングを追跡します。PV をプロビジョニングするのに数分かかる場合があります。oc -n openshift-local-storage describe localvolumeset localblock
$ oc -n openshift-local-storage describe localvolumeset localblockCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PV がプロビジョニングされると、新規 OSD Pod が PV 用に自動的に作成されます。
ocs-osd-removalジョブを削除します。oc delete -n openshift-storage job ocs-osd-removal-job
$ oc delete -n openshift-storage job ocs-osd-removal-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
データ暗号化で外部の鍵管理システム (KMS) を使用する場合は、古い OSD 暗号化キーは孤立したキーであるために Vault サーバーから削除できます。
検証手順
新しい OSD が実行されていることを確認します。
oc get -n openshift-storage pods -l app=rook-ceph-osd
$ oc get -n openshift-storage pods -l app=rook-ceph-osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
rook-ceph-osd-0-5f7f4747d4-snshw 1/1 Running 0 4m47s rook-ceph-osd-1-85d99fb95f-2svc7 1/1 Running 0 1d20h rook-ceph-osd-2-6c66cdb977-jp542 1/1 Running 0 1d20h
rook-ceph-osd-0-5f7f4747d4-snshw 1/1 Running 0 4m47s rook-ceph-osd-1-85d99fb95f-2svc7 1/1 Running 0 1d20h rook-ceph-osd-2-6c66cdb977-jp542 1/1 Running 0 1d20hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要数分後に新規 OSD が
Runningと表示されない場合は、rook-ceph-operatorPod を再起動して強制的に調整を行います。oc delete pod -n openshift-storage -l app=rook-ceph-operator
$ oc delete pod -n openshift-storage -l app=rook-ceph-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
pod "rook-ceph-operator-6f74fb5bff-2d982" deleted
pod "rook-ceph-operator-6f74fb5bff-2d982" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新規 PVC が作成されていることを確認します。
oc get -n openshift-storage pvc | grep localblock
$ oc get -n openshift-storage pvc | grep localblockCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
ocs-deviceset-0-0-c2mqb Bound local-pv-b481410 1490Gi RWO localblock 5m ocs-deviceset-1-0-959rp Bound local-pv-414755e0 1490Gi RWO localblock 1d20h ocs-deviceset-2-0-79j94 Bound local-pv-3e8964d3 1490Gi RWO localblock 1d20h
ocs-deviceset-0-0-c2mqb Bound local-pv-b481410 1490Gi RWO localblock 5m ocs-deviceset-1-0-959rp Bound local-pv-414755e0 1490Gi RWO localblock 1d20h ocs-deviceset-2-0-79j94 Bound local-pv-3e8964d3 1490Gi RWO localblock 1d20hCopy to Clipboard Copied! Toggle word wrap Toggle overflow (オプション) クラスターでクラスター全体の暗号化が有効な場合には、新規 OSD デバイスが暗号化されていることを確認します。
新規 OSD Pod が実行しているノードを特定します。
oc get -o=custom-columns=NODE:.spec.nodeName pod/<OSD pod name>
$ oc get -o=custom-columns=NODE:.spec.nodeName pod/<OSD pod name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <OSD pod name>OSD Pod の名前です。
以下に例を示します。
oc get -o=custom-columns=NODE:.spec.nodeName pod/rook-ceph-osd-0-544db49d7f-qrgqm
oc get -o=custom-columns=NODE:.spec.nodeName pod/rook-ceph-osd-0-544db49d7f-qrgqmCopy to Clipboard Copied! Toggle word wrap Toggle overflow
直前の手順で特定された各ノードに以下を実行します。
デバッグ Pod を作成し、選択したホストの chroot 環境を開きます。
oc debug node/<node name>
$ oc debug node/<node name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node name>ノードの名前。
chroot /host
$ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ocs-deviceset名の横にあるcryptキーワードを確認します。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- OpenShift Web コンソールにログインし、ストレージダッシュボードで OSD のステータスを確認します。
データの完全復旧には、復元されるデータ量により、時間がかかる場合があります。
5.2. IBM Power で動作するストレージデバイスまたは障害のあるストレージデバイスの置き換え リンクのコピーリンクがクリップボードにコピーされました!
IBM Power でローカルストレージデバイスを使用してデプロイされた OpenShift Data Foundation のオブジェクトストレージデバイス (OSD) を置き換えることができます。
基礎となるストレージデバイスを 1 つ以上置き換える必要がある場合があります。
前提条件
- Red Hat は、交換用デバイスを、交換するデバイスと同様のインフラストラクチャーおよびリソースで設定することを推奨します。
-
以前のバージョンから OpenShift Data Foundation バージョン 4.9 にアップグレードし、
LocalVolumeDiscoveryオブジェクトを作成していない場合は、 ローカルストレージでサポートされるクラスターの更新後の設定の変更について以下の手順に従ってください。 データに耐久性があることを確認します。
- OpenShift Web コンソールで、Storage → OpenShift Data Foundation をクリックします。
-
Storage Systems タブをクリックし、
ocs-storagecluster-storagesystemをクリックします。 - Block and File ダッシュボードの Status card の Overview タブで、Data Resiliency に緑色のチェックマークが付いていることを確認します。
手順
置き換える必要がある OSD と、その OSD がスケジュールされている OpenShift Container Platform ノードを特定します。
oc get -n openshift-storage pods -l app=rook-ceph-osd -o wide
$ oc get -n openshift-storage pods -l app=rook-ceph-osd -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
rook-ceph-osd-0-86bf8cdc8-4nb5t 0/1 crashLoopBackOff 0 24h 10.129.2.26 worker-0 <none> <none> rook-ceph-osd-1-7c99657cfb-jdzvz 1/1 Running 0 24h 10.128.2.46 worker-1 <none> <none> rook-ceph-osd-2-5f9f6dfb5b-2mnw9 1/1 Running 0 24h 10.131.0.33 worker-2 <none> <none>
rook-ceph-osd-0-86bf8cdc8-4nb5t 0/1 crashLoopBackOff 0 24h 10.129.2.26 worker-0 <none> <none> rook-ceph-osd-1-7c99657cfb-jdzvz 1/1 Running 0 24h 10.128.2.46 worker-1 <none> <none> rook-ceph-osd-2-5f9f6dfb5b-2mnw9 1/1 Running 0 24h 10.131.0.33 worker-2 <none> <none>Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、
rook-ceph-osd-0-86bf8cdc8-4nb5tを置き換える必要があり、worker-0は OSD がスケジュールされる RHOCP ノードです。注記置き換える OSD が正常である場合、Pod のステータスは
Runningになります。置き換えられる OSD の OSD デプロイメントをスケールダウンします。
osd_id_to_remove=0
$ osd_id_to_remove=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale -n openshift-storage deployment rook-ceph-osd-${osd_id_to_remove} --replicas=0$ oc scale -n openshift-storage deployment rook-ceph-osd-${osd_id_to_remove} --replicas=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
osd_id_to_removeはrook-ceph-osd接頭辞の直後にくる Pod 名の整数です。この例では、デプロイメント名はrook-ceph-osd-0です。出力例:
deployment.extensions/rook-ceph-osd-0 scaled
deployment.extensions/rook-ceph-osd-0 scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow rook-ceph-osdPod が停止していることを確認します。oc get -n openshift-storage pods -l ceph-osd-id=${osd_id_to_remove}$ oc get -n openshift-storage pods -l ceph-osd-id=${osd_id_to_remove}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
No resources found in openshift-storage namespace.
No resources found in openshift-storage namespace.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要rook-ceph-osdPod が数分以上terminating状態である場合は、forceオプションを使用して Pod を削除します。oc delete -n openshift-storage pod rook-ceph-osd-0-86bf8cdc8-4nb5t --grace-period=0 --force
$ oc delete -n openshift-storage pod rook-ceph-osd-0-86bf8cdc8-4nb5t --grace-period=0 --forceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely. pod "rook-ceph-osd-0-86bf8cdc8-4nb5t" force deleted
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely. pod "rook-ceph-osd-0-86bf8cdc8-4nb5t" force deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい OSD を追加できるように、クラスターから古い OSD を削除します。
置き換える OSD に関連付けられた
DeviceSetを特定します。oc get -n openshift-storage -o yaml deployment rook-ceph-osd-${osd_id_to_remove} | grep ceph.rook.io/pvc$ oc get -n openshift-storage -o yaml deployment rook-ceph-osd-${osd_id_to_remove} | grep ceph.rook.io/pvcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
ceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-64xjl ceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-64xjlceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-64xjl ceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-64xjlCopy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、永続ボリューム要求 (PVC) 名は
ocs-deviceset-localblock-0-data-0-64xjlです。PVC に関連付けられた 永続ボリューム (PV) を特定します。
oc get -n openshift-storage pvc ocs-deviceset-<x>-<y>-<pvc-suffix>
$ oc get -n openshift-storage pvc ocs-deviceset-<x>-<y>-<pvc-suffix>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
x、y、およびpvc-suffixは、直前の手順で特定されたDeviceSetの値です。出力例:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE ocs-deviceset-localblock-0-data-0-64xjl Bound local-pv-8137c873 256Gi RWO localblock 24h
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE ocs-deviceset-localblock-0-data-0-64xjl Bound local-pv-8137c873 256Gi RWO localblock 24hCopy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、関連付けられた PV は
local-pv-8137c873です。置き換えるデバイスの名前を特定します。
oc get pv local-pv-<pv-suffix> -o yaml | grep path
$ oc get pv local-pv-<pv-suffix> -o yaml | grep pathCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
pv-suffixは、前のステップで特定された PV 名の値です。出力例:
path: /mnt/local-storage/localblock/vdc
path: /mnt/local-storage/localblock/vdcCopy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、デバイス名は
vdcです。置き換える OSD に関連付けられた
prepare-podを特定します。oc describe -n openshift-storage pvc ocs-deviceset-<x>-<y>-<pvc-suffix> | grep Used
$ oc describe -n openshift-storage pvc ocs-deviceset-<x>-<y>-<pvc-suffix> | grep UsedCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
x、y、およびpvc-suffixは、直前の手順で特定されたDeviceSetの値です。出力例:
Used By: rook-ceph-osd-prepare-ocs-deviceset-localblock-0-data-0-64knzkc
Used By: rook-ceph-osd-prepare-ocs-deviceset-localblock-0-data-0-64knzkcCopy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、
prepare-podの名前はrook-ceph-osd-prepare-ocs-deviceset-localblock-0-data-0-64knzkcです。古い
ocs-osd-removalジョブを削除します。oc delete -n openshift-storage job ocs-osd-removal-job
$ oc delete -n openshift-storage job ocs-osd-removal-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow openshift-storageプロジェクトを変更します。oc project openshift-storage
$ oc project openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターから以前の OSD を削除します。
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> FORCE_OSD_REMOVAL=false | oc create -n openshift-storage -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=<failed_osd_id> FORCE_OSD_REMOVAL=false | oc create -n openshift-storage -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow <failed_osd_id>rook-ceph-osd接頭辞の直後の Pod 名の整数です。コマンドにコンマ区切りの OSD ID を追加して、複数の OSD を削除できます (例:FAILED_OSD_IDS=0,1,2)OSD が 3 つしかないクラスター、または OSD が削除された後にデータの 3 つのレプリカすべてを復元するにはスペースが不十分なクラスターでは、
FORCE_OSD_REMOVAL値をtrueに変更する必要があります。警告この手順により、OSD はクラスターから完全に削除されます。
osd_id_to_removeの正しい値が指定されていることを確認します。
ocs-osd-removal-jobPod のステータスをチェックして、OSD が正常に削除されたことを確認します。Completedのステータスで、OSD の削除ジョブが正常に完了したことを確認します。oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
# oc get pod -l job-name=ocs-osd-removal-job -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow OSD の取り外しが完了したことを確認します。
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
$ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要ocs-osd-removal-jobが失敗し、Pod が予想されるCompletedの状態にない場合、追加のデバッグのために Pod ログを確認します。以下に例を示します。
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
# oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 暗号化がインストール時に有効にされている場合は、それぞれの OpenShift Data Foundation ノードから削除された OSD デバイスから
dm-cryptで管理されるdevice-mapperマッピングを削除します。ocs-osd-removal-jobPod のログから、置き換えられた OSD の PVC 名を取得します。oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 |egrep -i ‘pvc|deviceset’
$ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 |egrep -i ‘pvc|deviceset’Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
2021-05-12 14:31:34.666000 I | cephosd: removing the OSD PVC "ocs-deviceset-xxxx-xxx-xxx-xxx"
2021-05-12 14:31:34.666000 I | cephosd: removing the OSD PVC "ocs-deviceset-xxxx-xxx-xxx-xxx"Copy to Clipboard Copied! Toggle word wrap Toggle overflow これまでに特定した各ノードに以下を実行します。
デバッグPod を作成し、ストレージノードのホストに対してchrootを作成します。oc debug node/<node name>
$ oc debug node/<node name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node name>ノードの名前。
chroot /host
$ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow
直前の手順で特定された PVC 名に基づいて関連するデバイス名を検索します。
dmsetup ls| grep <pvc name>
$ dmsetup ls| grep <pvc name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <pvc name>PVC の名前です。
出力例:
ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt (253:0)
ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt (253:0)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
マップ済みデバイスを削除します。
cryptsetup luksClose --debug --verbose ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt
$ cryptsetup luksClose --debug --verbose ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcryptCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要権限が十分にないため、コマンドがスタックした場合には、以下のコマンドを実行します。
-
CTRL+Zを押して上記のコマンドを終了します。 スタックしたプロセスの PID を検索します。
ps -ef | grep crypt
$ ps -ef | grep cryptCopy to Clipboard Copied! Toggle word wrap Toggle overflow killコマンドを使用してプロセスを終了します。kill -9 <PID>
$ kill -9 <PID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <PID>- プロセス ID です。
デバイス名が削除されていることを確認します。
dmsetup ls
$ dmsetup lsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
削除する必要のある PV を検索します。
oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
$ oc get pv -L kubernetes.io/hostname | grep localblock | grep ReleasedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1
local-pv-d6bf175b 1490Gi RWO Delete Released openshift-storage/ocs-deviceset-0-data-0-6c5pw localblock 2d22h compute-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow PV を削除します。
oc delete pv <pv-name>
$ oc delete pv <pv-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <pv-name>- PV の名前です。
古いデバイスを置き換え、新規デバイスを使用して新規の OpenShift Container Platform PV を作成します。
置き換えるデバイスで OpenShift Container Platform ノードにログインします。この例では、OpenShift Container Platform ノードは
worker-0です。oc debug node/worker-0
$ oc debug node/worker-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Starting pod/worker-0-debug ... To use host binaries, run `chroot /host` Pod IP: 192.168.88.21 If you don't see a command prompt, try pressing enter. # chroot /host
Starting pod/worker-0-debug ... To use host binaries, run `chroot /host` Pod IP: 192.168.88.21 If you don't see a command prompt, try pressing enter. # chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 先に特定したデバイス名
vdcを使用して置き換える/dev/diskの内容を記録します。ls -alh /mnt/local-storage/localblock
# ls -alh /mnt/local-storage/localblockCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
total 0 drwxr-xr-x. 2 root root 17 Nov 18 15:23 . drwxr-xr-x. 3 root root 24 Nov 18 15:23 .. lrwxrwxrwx. 1 root root 8 Nov 18 15:23 vdc -> /dev/vdc
total 0 drwxr-xr-x. 2 root root 17 Nov 18 15:23 . drwxr-xr-x. 3 root root 24 Nov 18 15:23 .. lrwxrwxrwx. 1 root root 8 Nov 18 15:23 vdc -> /dev/vdcCopy to Clipboard Copied! Toggle word wrap Toggle overflow LocalVolumeCR の名前を見つけ、置き換えるデバイス/dev/diskを削除またはコメントアウトします。oc get -n openshift-local-storage localvolume
$ oc get -n openshift-local-storage localvolumeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME AGE localblock 25h
NAME AGE localblock 25hCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc edit -n openshift-local-storage localvolume localblock
# oc edit -n openshift-local-storage localvolume localblockCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CR の編集後に変更を保存するようにしてください。
置き換えるデバイスで OpenShift Container Platform ノードにログインし、古い
symlinkを削除します。oc debug node/worker-0
$ oc debug node/worker-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Starting pod/worker-0-debug ... To use host binaries, run `chroot /host` Pod IP: 192.168.88.21 If you don't see a command prompt, try pressing enter. # chroot /host
Starting pod/worker-0-debug ... To use host binaries, run `chroot /host` Pod IP: 192.168.88.21 If you don't see a command prompt, try pressing enter. # chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 置き換えるデバイス名の古い
symlinkを特定します。この例では、デバイス名はvdcです。ls -alh /mnt/local-storage/localblock
# ls -alh /mnt/local-storage/localblockCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
total 0 drwxr-xr-x. 2 root root 17 Nov 18 15:23 . drwxr-xr-x. 3 root root 24 Nov 18 15:23 .. lrwxrwxrwx. 1 root root 8 Nov 18 15:23 vdc -> /dev/vdc
total 0 drwxr-xr-x. 2 root root 17 Nov 18 15:23 . drwxr-xr-x. 3 root root 24 Nov 18 15:23 .. lrwxrwxrwx. 1 root root 8 Nov 18 15:23 vdc -> /dev/vdcCopy to Clipboard Copied! Toggle word wrap Toggle overflow symlinkを削除します。rm /mnt/local-storage/localblock/vdc
# rm /mnt/local-storage/localblock/vdcCopy to Clipboard Copied! Toggle word wrap Toggle overflow symlinkが削除されていることを確認します。ls -alh /mnt/local-storage/localblock
# ls -alh /mnt/local-storage/localblockCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
total 0 drwxr-xr-x. 2 root root 6 Nov 18 17:11 . drwxr-xr-x. 3 root root 24 Nov 18 15:23 ..
total 0 drwxr-xr-x. 2 root root 6 Nov 18 17:11 . drwxr-xr-x. 3 root root 24 Nov 18 15:23 ..Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 古いデバイスを新しいデバイスに置き換えます。
正しい OpenShift Container Platform ノードにログインし、新規ドライブのデバイス名を特定します。同じデバイスを使用しない限り、デバイス名は変更する必要があります。
lsblk
# lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、新しいデバイス名は
vddです。新しい
/dev/diskが使用可能になったら、Local Volume CR に新しいディスクエントリーを追加できます。LocalVolume CR を編集し、新規の
/dev/diskを追加します。この例では、新しいデバイスは
/dev/vddです。oc edit -n openshift-local-storage localvolume localblock
# oc edit -n openshift-local-storage localvolume localblockCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CR の編集後に変更を保存するようにしてください。
新規 PV が
Available状態にあり、正しいサイズであることを確認します。oc get pv | grep 256Gi
$ oc get pv | grep 256GiCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
local-pv-1e31f771 256Gi RWO Delete Bound openshift-storage/ocs-deviceset-localblock-2-data-0-6xhkf localblock 24h local-pv-ec7f2b80 256Gi RWO Delete Bound openshift-storage/ocs-deviceset-localblock-1-data-0-hr2fx localblock 24h local-pv-8137c873 256Gi RWO Delete Available localblock 32m
local-pv-1e31f771 256Gi RWO Delete Bound openshift-storage/ocs-deviceset-localblock-2-data-0-6xhkf localblock 24h local-pv-ec7f2b80 256Gi RWO Delete Bound openshift-storage/ocs-deviceset-localblock-1-data-0-hr2fx localblock 24h local-pv-8137c873 256Gi RWO Delete Available localblock 32mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新規デバイスの OSD を作成します。
新しい OSD をデプロイします。Operator の調整を強制的に実行するには、
rook-ceph-operatorを再起動する必要があります。rook-ceph-operatorの名前を特定します。oc get -n openshift-storage pod -l app=rook-ceph-operator
$ oc get -n openshift-storage pod -l app=rook-ceph-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME READY STATUS RESTARTS AGE rook-ceph-operator-85f6494db4-sg62v 1/1 Running 0 1d20h
NAME READY STATUS RESTARTS AGE rook-ceph-operator-85f6494db4-sg62v 1/1 Running 0 1d20hCopy to Clipboard Copied! Toggle word wrap Toggle overflow rook-ceph-operatorを削除します。oc delete -n openshift-storage pod rook-ceph-operator-85f6494db4-sg62v
$ oc delete -n openshift-storage pod rook-ceph-operator-85f6494db4-sg62vCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
pod "rook-ceph-operator-85f6494db4-sg62v" deleted
pod "rook-ceph-operator-85f6494db4-sg62v" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、rook-ceph-operator Pod 名は
rook-ceph-operator-85f6494db4-sg62vです。rook-ceph-operatorPod が再起動していることを確認します。oc get -n openshift-storage pod -l app=rook-ceph-operator
$ oc get -n openshift-storage pod -l app=rook-ceph-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME READY STATUS RESTARTS AGE rook-ceph-operator-85f6494db4-wx9xx 1/1 Running 0 50s
NAME READY STATUS RESTARTS AGE rook-ceph-operator-85f6494db4-wx9xx 1/1 Running 0 50sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新規 OSD の作成には、Operator が再起動するまでに数分かかる場合があります。
ocs-osd-removalジョブを削除します。oc delete -n openshift-storage job ocs-osd-removal-job
$ oc delete -n openshift-storage job ocs-osd-removal-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
job.batch "ocs-osd-removal-job" deleted
job.batch "ocs-osd-removal-job" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
データ暗号化で外部の鍵管理システム (KMS) を使用する場合は、古い OSD 暗号化キーは孤立したキーであるために Vault サーバーから削除できます。
検証手順
新しい OSD が実行されていることを確認します。
oc get -n openshift-storage pods -l app=rook-ceph-osd
$ oc get -n openshift-storage pods -l app=rook-ceph-osdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
rook-ceph-osd-0-76d8fb97f9-mn8qz 1/1 Running 0 23m rook-ceph-osd-1-7c99657cfb-jdzvz 1/1 Running 1 25h rook-ceph-osd-2-5f9f6dfb5b-2mnw9 1/1 Running 0 25h
rook-ceph-osd-0-76d8fb97f9-mn8qz 1/1 Running 0 23m rook-ceph-osd-1-7c99657cfb-jdzvz 1/1 Running 1 25h rook-ceph-osd-2-5f9f6dfb5b-2mnw9 1/1 Running 0 25hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新規 PVC が作成されていることを確認します。
oc get -n openshift-storage pvc | grep localblock
$ oc get -n openshift-storage pvc | grep localblockCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
ocs-deviceset-localblock-0-data-0-q4q6b Bound local-pv-8137c873 256Gi RWO localblock 10m ocs-deviceset-localblock-1-data-0-hr2fx Bound local-pv-ec7f2b80 256Gi RWO localblock 1d20h ocs-deviceset-localblock-2-data-0-6xhkf Bound local-pv-1e31f771 256Gi RWO localblock 1d20h
ocs-deviceset-localblock-0-data-0-q4q6b Bound local-pv-8137c873 256Gi RWO localblock 10m ocs-deviceset-localblock-1-data-0-hr2fx Bound local-pv-ec7f2b80 256Gi RWO localblock 1d20h ocs-deviceset-localblock-2-data-0-6xhkf Bound local-pv-1e31f771 256Gi RWO localblock 1d20hCopy to Clipboard Copied! Toggle word wrap Toggle overflow (オプション) クラスターでクラスター全体の暗号化が有効な場合には、新規 OSD デバイスが暗号化されていることを確認します。
新規 OSD Pod が実行しているノードを特定します。
oc get -o=custom-columns=NODE:.spec.nodeName pod/<OSD pod name>
$ oc get -o=custom-columns=NODE:.spec.nodeName pod/<OSD pod name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <OSD pod name>OSD Pod の名前です。
以下に例を示します。
oc get -o=custom-columns=NODE:.spec.nodeName pod/rook-ceph-osd-0-544db49d7f-qrgqm
oc get -o=custom-columns=NODE:.spec.nodeName pod/rook-ceph-osd-0-544db49d7f-qrgqmCopy to Clipboard Copied! Toggle word wrap Toggle overflow
これまでに特定した各ノードに以下を実行します。
デバッグ Pod を作成し、選択したホストの chroot 環境を開きます。
oc debug node/<node name>
$ oc debug node/<node name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node name>ノードの名前。
chroot /host
$ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ocs-deviceset名の横にあるcryptキーワードを確認します。lsblk
$ lsblkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- OpenShift Web コンソールにログインし、Storage セクションの Openshift Data Foundation ダッシュボードでステータスカードをチェックします。
データの完全復旧には、復元されるデータ量により、時間がかかる場合があります。
5.3. IBM Z または LinuxONE インフラストラクチャーで動作するストレージデバイスまたは失敗したストレージデバイスの置き換え リンクのコピーリンクがクリップボードにコピーされました!
IBM Z または Linux ONE インフラストラクチャー上の操作可能または故障したストレージデバイスを、新しい Small Computer System Interface (SCSI) ディスクと交換できます。
IBM Z または LinuxONE は、外部ディスクストレージからの永続ストレージとして SCSI FCP ディスク論理ユニット (SCSI ディスク) に対応します。SCSI ディスクは、FCP デバイス番号、2 つのターゲットワールドワイドポート名 (WWPN1 および WWPN2)、および論理ユニット番号 (LUN) を使用して識別できます。詳細は、次を参照してください。https://www.ibm.com/support/knowledgecenter/SSB27U_6.4.0/com.ibm.zvm.v640.hcpa5/scsiover.html
前提条件
データに耐久性があることを確認します。
- OpenShift Web コンソールで、Storage → OpenShift Data Foundation をクリックします。
-
Storage Systems タブをクリックし、
ocs-storagecluster-storagesystemをクリックします。 - Block and File ダッシュボードの Status card の Overview タブで、Data Resiliency に緑色のチェックマークが付いていることを確認します。
手順
すべてのディスクを一覧表示します。
lszdev
$ lszdevCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SCSI ディスクは、
IDセクションの<device-id>:<wwpn>:<lun-id>構造でzfcp-lunとして表されます。最初のディスクはオペレーティングシステムに使用されます。1 つのストレージデバイスに障害が発生した場合は、それを新しいディスクに置き換えることができます。ディスクを削除します。
ディスクで以下のコマンドを実行し、
scsi-idを、置き換えるディスクの SCSI ディスク識別子に置き換えます。chzdev -d scsi-id
$ chzdev -d scsi-idCopy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、以下のコマンドはデバイス ID
0.0.8204、WWPN0x500507630a0b50a4、および LUN0x4002403000000000のディスクを 1 つ削除します。chzdev -d 0.0.8204:0x500407630c0b50a4:0x3002b03000000000
$ chzdev -d 0.0.8204:0x500407630c0b50a4:0x3002b03000000000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい SCSI ディスクを追加します。
chzdev -e 0.0.8204:0x500507630b1b50a4:0x4001302a00000000
$ chzdev -e 0.0.8204:0x500507630b1b50a4:0x4001302a00000000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記新規ディスクのデバイス ID は、置き換えるディスクと同じである必要があります。新規ディスクは、WWPN および LUN ID で識別されます。
すべての FCP デバイスを一覧表示して、新規ディスクが設定されていることを確認します。
lszdev zfcp-lun
$ lszdev zfcp-lunCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
TYPE ID ON PERS NAMES zfcp-lun 0.0.8204:0x102107630b1b5060:0x4001402900000000 yes no sda sg0 zfcp-lun 0.0.8204:0x500507630b1b50a4:0x4001302a00000000 yes yes sdb sg1
TYPE ID ON PERS NAMES zfcp-lun 0.0.8204:0x102107630b1b5060:0x4001402900000000 yes no sda sg0 zfcp-lun 0.0.8204:0x500507630b1b50a4:0x4001302a00000000 yes yes sdb sg1Copy to Clipboard Copied! Toggle word wrap Toggle overflow