Gen-1 から Gen-2 プロファイルへの Block Storage for VPC ボリュームの移行
仮想プライベートクラウド
Block Storage for VPC ボリュームをジェネレーション 1 (ティアベース・プロファイル) からジェネレーション 2 (ソフトウェア定義パフォーマンス・プロファイル) に移行することで、パフォーマンスの向上、動的な IOPS 調整、およびコストの最適化を利用できます。
プロフィール世代を理解する
Block Storage for VPC は、ジェネレーション1(階層ベース)からジェネレーション2(ソフトウェア定義パフォーマンス)プロファイルへと進化してきた。
- ジェネレーション1(ティアベース)
- IOPSはボリュームサイズに基づいて計算されます。 詳しくは、 Block Storage プロフィールを参照。
- ジェネレーション2(SDP)
- ボリュームサイズに依存しないカスタムIOPS。 詳細については、 SDP Block Storage。
ブロックストレージプロファイルとその機能に関する最新の詳細については、「 Block Storage プロファイル 」を参照してください。
開始前に
ボリュームを移行する前に、以下の手順を完了してください。
- IBM Cloud CLI をインストールします。
- クラスタに
kubectlまたはocアクセスできることを確認してください。 - VPC Block CSI Driverアドオンのバージョンが 5.0 以降であることを確認してください。 バージョンを確認するには、次のコマンドを実行してください。 IBM MobileFirst Platform Command Line Interface
kubectl get deployment -n kube-system vpc-block-csi-controller -o jsonpath='{.spec.template.spec.containers[0].image}' - VPC Block CSI Driverアドオンがインストールされていることを確認します。 詳細については、 VPC Block CSI Driverアドオンのインストールを 参照してください。
- VPC Block CSI Driverアドオンが設定されていることを確認します。 詳細については、 VPC Block CSI Driverアドオンの設定を 参照してください。
- VPC Block CSI Driverアドオンが実行されていることを確認します。 詳細については、 VPC Block CSI Driverアドオンの検証を 参照してください。
- VPC Block CSI Driverアドオンが最新であることを確認してください。 詳細については、 VPC Block CSI Driverアドオンのアップグレードを 参照してください。
- 現在のパフォーマンス要件を文書化する。
- データのバックアップまたはスナップショットを作成します。 詳細については、 Block Storage for VPC クラスタ・アドオンによるスナップショットの設定を 参照してください。
マイグレーション対象のボリュームを特定する
Gen-1 ブロック・ストレージ・プロファイルを使用しているPVCを探す。
-
クラスタ内のすべてのブロック・ストレージPVCをリストします。
kubectl get pvc --all-namespaces -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,STORAGECLASS:.spec.storageClassName,STATUS:.status.phase | grep vpc-block -
PVCからVPCボリュームIDを取得する。
PV_NAME=$(kubectl get pvc <pvc-name> -n <namespace> -o jsonpath='{.spec.volumeName}') VOLUME_ID=$(kubectl get pv $PV_NAME -o jsonpath='{.spec.csi.volumeHandle}') echo "Volume ID: $VOLUME_ID"出力例
Volume ID: r026-3afe630d-1a47-482c-aade-e37f5e0bb9f4
現在のボリューム構成を確認する
-
現在のブロックボリュームのプロファイルと構成を表示します。
ibmcloud is vol $VOLUME_ID移行前の出力例
ID r026-3afe630d-1a47-482c-aade-e37f5e0bb9f4 Name pvc-d4a2b016-a5e4-46de-9214-a64f5fc8e344 Status available Attachment state attached Capacity 100 IOPS 3000 Bandwidth(Mbps) 393 Profile 5iops-tier Storage Generation 1 Adjustable IOPS false Busy false -
出力から以下の値に注意。 移行が成功したことを確認するために、これらを使用します。
- プロフィール:
5iops-tier( Gen-1 ) - ストレージ・ジェネレーション:
1 - 調整可能なIOPS:
false
- プロフィール:
マイグレーションを開始します
マイグレーション・プロセスはバックグラウンドで実行され、ボリュームはポッドに接続されたまま、アプリケーションは実行され続けます。 IOPSは自動的にSDPのデフォルトに調整され、通常5~15分で完了する。
-
SDPプロファイルへの移行を開始する。
ibmcloud is volume-job-create $VOLUME_ID --profile sdp
マイグレーション進捗状況の監視
-
移行ジョブのステータスを確認してください。 出力が
Status: updatingとBusy: trueを示していれば、移行は進行中である。 出力にStatus: availableとBusy: falseが表示されれば、移行は完了である。ibmcloud is volume-jobs $VOLUME_ID -
ボリュームの状態を確認してください。
watch -n 30 "ibmcloud is vol $VOLUME_ID | grep -E 'Status|Busy|Profile'"マイグレーション中の出力例
Status updating Busy true Profile 5iops-tier
移行完了の確認
-
ボリュームが Gen-2 プロファイルを使用していることを確認します。
ibmcloud is vol $VOLUME_ID移行後の出力例
ID r026-3afe630d-1a47-482c-aade-e37f5e0bb9f4 Name pvc-d4a2b016-a5e4-46de-9214-a64f5fc8e344 Status available Attachment state attached Capacity 100 IOPS 4000 Bandwidth(Mbps) 1000 Profile sdp Storage Generation 2 Adjustable IOPS true Adjustable Capacity States unattached,attached Adjustable IOPS States unattached,attached Busy false -
以下の成功指標を確認する:
- プロファイル:
sdp - ストレージ・ジェネレーション:
2 - 調整可能なIOPS:
true - IOPS:増加(例えば3000から4000へ)
- 帯域幅:向上
- プロファイル:
PersistentVolume メタデータの更新
-
PV メタデータを更新し、 Gen-2 プロファイルを反映させる。
kubectl patch pv $PV_NAME --type='json' -p='[ {"op": "replace", "path": "/spec/storageClassName", "value": "ibmc-vpc-block-sdp"}, {"op": "replace", "path": "/spec/csi/volumeAttributes/profile", "value": "sdp"}, {"op": "replace", "path": "/spec/csi/volumeAttributes/iops", "value": "4000"} ]' -
更新を検証します。
kubectl get pv $PV_NAME -o jsonpath='{.spec.storageClassName}'予期される出力
ibmc-vpc-block-sdpPVCにはオリジナルの StorageClass。 PVCの
storageClassNameフィールドは不変なので、この動作は予想される。 実際のストレージプロファイルは、このステップで更新したPVによって決定される。
アプリケーションの検証
移行後、アプリケーションが正しく機能していることを確認します。
-
ポッドの状況を確認します。 すべてのポッドが「
Running」状態にあることを確認してください。kubectl get pods -n <namespace> -
ボリュームのアタッチメントを確認する。 ボリュームが正しくマウントされていることを確認する。
kubectl describe pod <pod-name> -n <namespace> | grep -A 5 "Volumes:" -
アプリケーションのログを確認する。 ストレージやI/O操作に関するエラーを探す。
kubectl logs <pod-name> -n <namespace> --tail=50 -
該当する場合は、アプリケーションのエンドポイントをテストする。 アプリケーションが正しく応答することを確認する。
curl -I https://<app-endpoint>/health
Gen-2 StorageClass
新しいボリュームのプロビジョニング用にSDP StorageClass を作成する。
-
StorageClass 用のYAMLファイルを作成します。 以下の設定を
storageclass-sdp.yamlとして保存する。apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ibmc-vpc-block-sdp-general labels: app: ibm-vpc-block-csi-driver provisioner: vpc.block.csi.ibm.io parameters: profile: "sdp" iops: "5000" csi.storage.k8s.io/fstype: "ext4" billingType: "hourly" encrypted: "false" region: "" zone: "" tags: "generation:2,profile:sdp" reclaimPolicy: Delete allowVolumeExpansion: true volumeBindingMode: WaitForFirstConsumer -
StorageClass を適用する。
kubectl apply -f storageclass-sdp.yaml -
StorageClass の作成を確認してください。
kubectl get storageclass ibmc-vpc-block-sdp-general
IOPSとスループットを調整して、パフォーマンスを最適化します
移行後は、ワークロードの要件に応じて、IOPSやスループット(帯域幅)を動的に調整することができます。
- 一般的なワークロードには5,000 IOPSから始める。
- データベースには10,000 IOPS以上を使用する。
- 使用量を監視し、実際の要件に基づいて調整する。
IOPSの更新
-
IOPSを増加させ、より高いパフォーマンスを実現。
ibmcloud is volume-update $VOLUME_ID --iops 8000 -
IOPSの更新を確認してください。
ibmcloud is vol $VOLUME_ID | grep IOPS
スループット(帯域幅)の更新
SDPプロファイルへの移行後、ボリュームにはデフォルトの帯域幅が割り当てられます。 I/O負荷の高いワークロードでは、帯域幅を増やすことでスループットを向上させることができます。
-
現在の帯域幅の割り当て状況を確認してください。
ibmcloud is vol $VOLUME_ID | grep Bandwidth -
帯域幅を拡大して、スループットを向上させる。
--bandwidthオプションを使用して、希望する帯域幅をMbps単位で指定します。ibmcloud is volume-update $VOLUME_ID --bandwidth 2000 -
帯域幅の更新を確認してください。
ibmcloud is vol $VOLUME_ID | grep Bandwidth帯域幅の値は、そのボリュームが達成可能な最大スループット(MB/s)を表します。 帯域幅の値が大きいほど、データ処理量の多い操作においてパフォーマンスが向上します。
トラブルシューティング
マイグレーションがステータスの更新で立ち往生
移行ステータスが updating のまま30分以上経過した場合は、以下の手順を実行してください。 より大きなボリュームの場合、移行に時間がかかり、 updating の状態が45分間続くことがある。
-
仕事の詳細を確認する
ibmcloud is volume-jobs $VOLUME_ID -
ボリュームのステータスにエラーや警告がないか確認してください。
ibmcloud is vol $VOLUME_ID | grep -E "Status|Busy" -
ボリュームが大きいと移行に時間がかかるため、さらに15分待ちます。
-
VPCサービスの問題については、 IBM Cloud ステータスページを確認してください。
-
移行が1時間以上止まっている場合は、ジョブIDを明記の上、 IBM サポートまでご連絡ください。
PVCは古い StorageClass
移行後もPVCが Gen-1 StorageClass。 PVC storageClassName フィールドは不変である。 実際のストレージプロファイルは、前のステップで更新したPVによって決定される。 機能に影響はない。
-
PV(PVCではない)が正しいことを確認する。
kubectl get pv $PV_NAME -o jsonpath='{.spec.storageClassName}'予期される出力
ibmc-vpc-block-sdp
パフォーマンスは向上していない
移行後にパフォーマンスの向上が見られない場合は、以下の手順を実行してください。
-
実際のIOPS割り当てを確認する。
ibmcloud is vol $VOLUME_ID | grep IOPS -
音量プロファイルを確認する。
ibmcloud is vol $VOLUME_ID | grep Profile -
IOPSの割り当てを増やす。
ibmcloud is volume-update $VOLUME_ID --iops 10000 -
更新を検証します。
ibmcloud is vol $VOLUME_ID | grep IOPS
次のステップ
移行が完了したら、次のステップを検討してください。
- このチュートリアルを繰り返して、追加のボリュームを移行する。
- ボリュームのパフォーマンスを監視し、必要に応じてIOPSを調整する。
- 新しいボリュームに Gen-2 StorageClasses を使用するようにデプロイ テンプレートを更新します。
- Block Storage 容量とパフォーマンスを見直し、最適化の指針を得る。