將 Block Storage for VPC 磁碟區從 Gen-1 遷移到 Gen-2 設定檔
虛擬私有雲
將您的 Block Storage for VPC 磁碟區從第 1 代 (以層級為基礎) 設定檔遷移至第 2 代 (軟體定義效能) 設定檔,以利用改進的效能、動態 IOPS 調整和更佳的成本最佳化。
瞭解輪廓世代
Block Storage for VPC 已從第 1 代 (以層級為基礎) 演變到第 2 代 (軟體定義效能) 設定檔。
- 第 1 代 (以層級為基礎)
- IOPS 依據磁碟區大小計算。 如需詳細資訊,請參閱 Block Storage profile。
- 第 2 代 (SDP)
- 自訂 IOPS 與磁碟區大小無關。 如需詳細資訊,請參閱 SDP Block Storage profile。
有關區塊儲存配置檔及其功能的最新詳細資訊,請參閱 Block Storage profiles。
開始之前
遷移磁碟區之前,請完成下列步驟。
- 安裝 IBM Cloud CLI。
- 確保您有
kubectl或oc存取您的群集。 - 確認 VPC Block CSI 驅動程式附加元件的版本為 5.0 或更新版本。 若要檢查版本,請執行以下指令 IBM MobileFirst Platform Command Line Interface
oc get deployment -n kube-system vpc-block-csi-controller -o jsonpath='{.spec.template.spec.containers[0].image}' - 確保已安裝 VPC Block CSI 驅動程式附加元件。 如需詳細資訊,請參閱 安裝 VPC Block CSI 驅動程式附加元件。
- 確保已設定 VPC Block CSI 驅動程式附加元件。 如需詳細資訊,請參閱 設定 VPC Block CSI 驅動程式附加元件。
- 確保 VPC Block CSI 驅動程式附加元件正在執行。 如需詳細資訊,請參閱 驗證 VPC Block CSI 驅動程式附加元件。
- 確保 VPC Block CSI 驅動程式附加元件為最新版本。 如需詳細資訊,請參閱 升級 VPC Block CSI 驅動程式附加元件。
- 記錄您目前的效能需求。
- 建立資料的備份或快照。 如需詳細資訊,請參閱 使用 Block Storage for VPC 群集附加元件設定快照。
識別需要遷移的卷冊
尋找使用 Gen-1 區塊儲存配置文件的 PVC。
-
列出群集中的所有區塊儲存 PVC。
oc 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=$(oc get pvc <pvc-name> -n <namespace> -o jsonpath='{.spec.volumeName}') VOLUME_ID=$(oc 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
- 個人資料:
開始遷移
遷移過程在背景中執行,而您的磁碟區仍連接至 pod,且您的應用程式繼續執行。 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 profile。
oc 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"} ]' -
驗證更新。
oc get pv $PV_NAME -o jsonpath='{.spec.storageClassName}'預期輸出
ibmc-vpc-block-sdpPVC 繼續顯示原來的 StorageClass 名稱。 此行為是預期的,因為 PVC 中的
storageClassName欄位是不可變的。 實際儲存設定檔由您在此步驟更新的 PV 決定。
驗證您的應用程式
確認您的應用程式在遷移後運作正常。
-
檢查 pod 狀態。 請確認所有 Pod 均處於「
Running」狀態。oc get pods -n <namespace> -
驗證音量附件。 確認已正確掛載磁碟區。
oc describe pod <pod-name> -n <namespace> | grep -A 5 "Volumes:" -
檢查應用程式日誌。 尋找任何與儲存或 I/O 作業相關的錯誤。
oc 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.
oc apply -f storageclass-sdp.yaml -
驗證 StorageClass 的建立。
oc 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 分鐘,因為大容量需要較長的時間來遷移。
-
檢查 IBM Cloud 狀態頁面以瞭解 VPC 服務問題。
-
如果遷移卡住超過 1 小時,請聯絡 IBM 支援並提供工作 ID。
PVC 顯示舊 StorageClass
如果 PVC 在遷移後仍引用 Gen-1 StorageClass,則此行為在預期之內,不需要任何動作。 PVC storageClassName 欄位是不可變更的。 實際的儲存設定檔由 PV 決定,您在之前的步驟中已更新 PV。 功能不受影響。
-
驗證 PV(非 PVC)是否正確。
oc 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 容量和效能,以提供最佳化指引。