デバイスの置き換え
動作中または故障したデバイスを安全に交換するための手順
概要
多様性を受け入れるオープンソースの強化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、用語の置き換えは、今後の複数のリリースにわたって段階的に実施されます。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに対するご意見をお聞かせください。ドキュメントの改善点があれば、ぜひお知らせください。
フィードバックを送信するには、Jira チケットを作成します。
- Jira にログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- Components フィールドで Documentation を選択します。
- ダイアログの下部にある Create をクリックします。
はじめに リンクのコピーリンクがクリップボードにコピーされました!
デプロイメントのタイプに応じて、以下のいずれかの手順を選択してストレージノードを置き換えることができます。
AWS にデプロイされた動的に作成されたストレージクラスターについては、以下を参照してください。
- VMware にデプロイされた動的に作成されたストレージクラスターは、「VMware インフラストラクチャーで動作するストレージデバイスまたは失敗したストレージデバイスの置き換え」 を参照してください。
- Microsoft Azure にデプロイされた動的に作成されたストレージクラスターは、「Azure のインストーラーでプロビジョニングされるインフラストラクチャーで動作するストレージデバイスまたは失敗したストレージデバイスの置き換え」を参照してください。
ローカルストレージデバイスを使用してデプロイされたストレージクラスターは、以下を参照してください。
OpenShift Data Foundation は、異なる OSD サイズをサポートしません。
第1章 AWS への OpenShift Data Foundation の動的プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
1.1. AWS のユーザーによってプロビジョニングされるインフラストラクチャーで動作するストレージデバイスまたは失敗したストレージデバイスの置き換え リンクのコピーリンクがクリップボードにコピーされました!
AWS のユーザーによってプロビジョニングされるインフラストラクチャー上の動的に作成されたストレージクラスターのデバイスを置き換える必要がある場合は、ストレージノードを置き換える必要があります。ノードを置き換える方法は、以下を参照してください。
1.2. AWS のインストーラーでプロビジョニングされるインフラストラクチャーで動作するストレージデバイスまたは失敗したストレージデバイスの置き換え リンクのコピーリンクがクリップボードにコピーされました!
AWS のインストーラーでプロビジョニングされるインフラストラクチャーの動的に作成されたストレージクラスターのデバイスを置き換える必要がある場合は、ストレージノードを置き換える必要があります。ノードを置き換える方法は、以下を参照してください。
第2章 VMware への OpenShift Data Foundation の動的プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
2.1. VMware インフラストラクチャーで動作するストレージデバイスまたは失敗したストレージデバイスの置き換え リンクのコピーリンクがクリップボードにコピーされました!
VMware インフラストラクチャーに動的にデプロイされる OpenShift Data Foundation で 1 つ以上の仮想マシンディスク (VMDK) を交換する必要がある場合は、新しいボリュームに新しい永続ボリュームクレーム (PVC) を作成し、古いオブジェクトストレージデバイス (OSD) を削除します。
前提条件
データに耐久性があることを確認する。
- OpenShift Web コンソールで、Storage → 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は Pod 名のrook-ceph-osd接頭辞の直後にくる整数です。この例では、デプロイメント名は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 注記上記のジョブが 10 分後に
Completed状態にならない場合は、ジョブを削除し、FORCE_OSD_REMOVAL=trueを指定して再実行する必要があります。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=${osd_id_to_remove} FORCE_OSD_REMOVAL=false |oc create -n openshift-storage -f -$ oc process -n openshift-storage ocs-osd-removal -p FAILED_OSD_IDS=${osd_id_to_remove} FORCE_OSD_REMOVAL=false |oc create -n openshift-storage -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3 つの OSD しかないクラスター、または 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-jobPod が失敗し、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 これまでに特定した各ノードに以下を実行します。
debugPod を作成し、ストレージノードのホストに対して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 -n openshift-storage -o=custom-columns=NODE:.spec.nodeName pod/<OSD-pod-name>
$ oc get -n openshift-storage -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 -n openshift-storage -o=custom-columns=NODE:.spec.nodeName pod/rook-ceph-osd-0-544db49d7f-qrgqm
$ oc get -n openshift-storage -o=custom-columns=NODE:.spec.nodeName pod/rook-ceph-osd-0-544db49d7f-qrgqmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NODE compute-1
NODE compute-1Copy 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章 Microsoft Azure への OpenShift Data Foundation の動的プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
3.1. Azure のインストーラーでプロビジョニングされるインフラストラクチャーで動作するストレージデバイスまたは失敗したストレージデバイスの置き換え リンクのコピーリンクがクリップボードにコピーされました!
Azure のインストーラーでプロビジョニングされるインフラストラクチャーの動的に作成されたストレージクラスターのデバイスを置き換える必要がある場合は、ストレージノードを置き換える必要があります。ノードを置き換える方法は、以下を参照してください。
第4章 Google Cloud にデプロイされた動的プロビジョニングされた OpenShift Data Foundation リンクのコピーリンクがクリップボードにコピーされました!
4.1. Google Cloud のインストーラーでプロビジョニングされるインフラストラクチャーで動作するストレージデバイスまたは失敗したストレージデバイスの置き換え リンクのコピーリンクがクリップボードにコピーされました!
Google Cloud のインストーラーでプロビジョニングされるインフラストラクチャーの動的に作成されたストレージクラスターのデバイスを置き換える必要がある場合は、ストレージノードを置き換える必要があります。ノードを置き換える方法は、以下を参照してください。
第5章 ローカルストレージデバイスを使用してデプロイされた OpenShift Data Foundation リンクのコピーリンクがクリップボードにコピーされました!
5.1. ローカルストレージデバイスがサポートするクラスターで動作するストレージデバイスまたは障害のあるストレージデバイスの置き換え リンクのコピーリンクがクリップボードにコピーされました!
以下のインフラストラクチャーでローカルストレージデバイスを使用してデプロイされた OpenShift Data Foundation のオブジェクトストレージデバイス (OSD) を置き換えることができます。
- ベアメタル
- VMware
1 つ以上の基盤となるストレージデバイスを交換する必要がある場合があります。
前提条件
- Red Hat は、交換用デバイスを、交換するデバイスと同様のインフラストラクチャーおよびリソースで設定することを推奨しています。
データに耐久性があることを確認する。
- OpenShift Web コンソールで、Storage → 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は Pod 名のrook-ceph-osd接頭辞の直後にくる整数です。この例では、デプロイメント名は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 注記次の手順に進む前に、上記のコマンドが
Completed状態に到達する必要があります。これには 10 分以上かかる場合があります。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=${osd_id_to_remove} FORCE_OSD_REMOVAL=false |oc create -n openshift-storage -f -$ oc process -n openshift-storage ocs-osd-removal -p FAILED_OSD_IDS=${osd_id_to_remove} FORCE_OSD_REMOVAL=false |oc create -n openshift-storage -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3 つの OSD しかないクラスター、または 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 これまでに特定した各ノードに以下を実行します。
debugPod を作成し、ストレージノードのホストに対して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-name>
$ cryptsetup luksClose --debug --verbose <ocs-deviceset-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <ocs-deviceset-name>前の手順で特定した PVC 名に基づいた、関連するデバイスの名前です。
重要権限が十分にないため、コマンドがスタックした場合には、以下のコマンドを実行します。
-
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 <storageclass-name> | grep Released
$ oc get pv -L kubernetes.io/hostname | grep <storageclass-name> | 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 <lvs-name>
$ oc -n openshift-local-storage describe localvolumeset <lvs-name>Copy 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 <lvs-name>
$ oc get -n openshift-storage pvc | grep <lvs-name>Copy 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 -n openshift-storage -o=custom-columns=NODE:.spec.nodeName pod/<OSD-pod-name>
$ oc get -n openshift-storage -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 -n openshift-storage -o=custom-columns=NODE:.spec.nodeName pod/rook-ceph-osd-0-544db49d7f-qrgqm
$ oc get -n openshift-storage -o=custom-columns=NODE:.spec.nodeName pod/rook-ceph-osd-0-544db49d7f-qrgqmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NODE compute-1
NODE compute-1Copy 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 Web コンソールで、Storage → 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は Pod 名のrook-ceph-osd接頭辞の直後にくる整数です。この例では、デプロイメント名は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 注記次の手順に進む前に、上記のコマンドが
Completed状態に到達する必要があります。これには 10 分以上かかる場合があります。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=${osd_id_to_remove} FORCE_OSD_REMOVAL=false |oc create -n openshift-storage -f -$ oc process -n openshift-storage ocs-osd-removal -p FAILED_OSD_IDS=${osd_id_to_remove} FORCE_OSD_REMOVAL=false |oc create -n openshift-storage -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3 つの OSD しかないクラスター、または 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 これまでに特定した各ノードに以下を実行します。
debugPod を作成し、ストレージノードのホストに対して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が使用可能になったら、LocalVolume 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 -n openshift-storage -o=custom-columns=NODE:.spec.nodeName pod/<OSD-pod-name>
$ oc get -n openshift-storage -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 -n openshift-storage -o=custom-columns=NODE:.spec.nodeName pod/rook-ceph-osd-0-544db49d7f-qrgqm
$ oc get -n openshift-storage -o=custom-columns=NODE:.spec.nodeName pod/rook-ceph-osd-0-544db49d7f-qrgqmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NODE compute-1
NODE compute-1Copy 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 または IBM LinuxONE インフラストラクチャーで動作するストレージデバイスまたは失敗したストレージデバイスの置き換え リンクのコピーリンクがクリップボードにコピーされました!
IBM Z または IBM® LinuxONE インフラストラクチャー上の動作中または障害のあるストレージデバイスを、新しい Small Computer System Interface (SCSI) ディスクに置き換えることができます。
IBM Z または IBM® 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 → 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
第6章 OpenShift Data Foundation CLI ツールを使用した OSD の削除 リンクのコピーリンクがクリップボードにコピーされました!
6.1. OpenShift Data Foundation CLI ツールを使用したオブジェクトストレージデバイスの削除 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Data Foundation コマンドラインインターフェイス (CLI) ツールを使用して、オブジェクトストレージデバイス (OSD) の削除プロセスを自動化できます。これは、OSD の削除中に発生する可能性のあるデータ損失を回避するのに役立ちます。
前提条件
- OpenShift Data Foundation コマンドラインインターフェイス (CLI) ツールをダウンロードします。Data Foundation CLI ツールを使用すると、ターミナルから Data Foundation 環境を効果的に管理およびトラブルシューティングできます。互換性のあるバージョンを見つけて、カスタマーポータル から CLI ツールをダウンロードできます。
手順
削除する必要がある OSD を特定します。削除が必要な OSD は
CrashLoopBackOffまたはErrorの状態です。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-0-6d77d6c7c6-m8xj6 0/1 CrashLoopBackOff 0 24h 10.129.0.16 compute-2 <none> <none>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して OSD
0を削除します。odf purge-osd 0
$ odf purge-osd 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
[オプション] OSD の削除が配置グループ (PG) のステータスに影響する場合は、
yes-force-destroy-osdと入力します。 -
コマンド出力の最後の行に
cephosd: completed removal of OSD 0が含まれていることを確認します。 対応するデプロイメントが削除されていることを確認します。
oc get deployment rook-ceph-osd-0
$ oc get deployment rook-ceph-osd-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow