將 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

開始之前

遷移磁碟區之前,請完成下列步驟。

識別需要遷移的卷冊

尋找使用 Gen-1 區塊儲存配置文件的 PVC。

  1. 列出群集中的所有區塊儲存 PVC。

    oc get pvc --all-namespaces -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,STORAGECLASS:.spec.storageClassName,STATUS:.status.phase | grep vpc-block
    
  2. 從 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
    

檢查目前的音量設定

  1. 檢視目前的區塊磁碟區配置文件和組態。

    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
    
  2. 請注意輸出中的下列值。 您將使用這些資料來驗證遷移是否成功。

    • 個人資料: 5iops-tier ( Gen-1 )
    • 儲存世代:1
    • 可調整 IOPS:false

開始遷移

遷移過程在背景中執行,而您的磁碟區仍連接至 pod,且您的應用程式繼續執行。 IOPS 會自動調整為 SDP 預設值,過程通常需要 5-15 分鐘。

  1. 啟動遷移至 SDP 設定檔。

    ibmcloud is volume-job-create $VOLUME_ID --profile sdp
    

監控移轉進度

  1. 檢查遷移工作狀態。 如果輸出顯示 Status: updatingBusy: true,則遷移正在進行中。 當輸出顯示 Status: availableBusy: false 時,遷移就完成了。

    ibmcloud is volume-jobs $VOLUME_ID
    
  2. 檢查音量狀態。

    watch -n 30 "ibmcloud is vol $VOLUME_ID | grep -E 'Status|Busy|Profile'"
    

    移轉過程中的輸出範例

    Status                  updating
    Busy                    true
    Profile                 5iops-tier
    

驗證移轉完成

  1. 確認卷使用 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
    
  2. 驗證下列成功指標:

    • 設定檔: sdp
    • 儲存世代:2
    • 可調整 IOPS:true
    • IOPS: 增加 (例如,3000 至 4000)
    • 頻寬:改善

更新 PersistentVolume 元資料

  1. 更新 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"}
    ]'
    
  2. 驗證更新。

    oc get pv $PV_NAME -o jsonpath='{.spec.storageClassName}'
    

    預期輸出

    ibmc-vpc-block-sdp
    

    PVC 繼續顯示原來的 StorageClass 名稱。 此行為是預期的,因為 PVC 中的 storageClassName 欄位是不可變的。 實際儲存設定檔由您在此步驟更新的 PV 決定。

驗證您的應用程式

確認您的應用程式在遷移後運作正常。

  1. 檢查 pod 狀態。 請確認所有 Pod 均處於「Running」狀態。

    oc get pods -n <namespace>
    
  2. 驗證音量附件。 確認已正確掛載磁碟區。

    oc describe pod <pod-name> -n <namespace> | grep -A 5 "Volumes:"
    
  3. 檢查應用程式日誌。 尋找任何與儲存或 I/O 作業相關的錯誤。

    oc logs <pod-name> -n <namespace> --tail=50
    
  4. 測試應用程式端點 (如果適用)。 驗證應用程式是否正確回應。

    curl -I https://<app-endpoint>/health
    

建立 Gen-2 StorageClass

建立 SDP StorageClass 用於配置新磁碟區。

  1. 為 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
    
  2. 應用 StorageClass.

    oc apply -f storageclass-sdp.yaml
    
  3. 驗證 StorageClass 的建立。

    oc get storageclass ibmc-vpc-block-sdp-general
    

調整 IOPS 和吞吐量以優化效能

遷移完成後,您可以根據工作負載的需求,動態調整 IOPS 和吞吐量(頻寬)。

  • 一般工作負載從 5,000 IOPS 開始。
  • 資料庫使用 10,000 或更高的 IOPS。
  • 監控使用情況,並根據實際需求進行調整。

更新 IOPS

  1. 增加 IOPS 以獲得更高的效能。

    ibmcloud is volume-update $VOLUME_ID --iops 8000
    
  2. 驗證 IOPS 的更新。

    ibmcloud is vol $VOLUME_ID | grep IOPS
    

更新吞吐量(頻寬)

遷移至 SDP 配置檔後,各卷會被預設分配頻寬。 您可以增加頻寬,以提升 I/O 密集型工作負載的吞吐量。

  1. 檢查目前的頻寬分配狀況。

    ibmcloud is vol $VOLUME_ID | grep Bandwidth
    
  2. 增加頻寬以提升吞吐量。 請使用 --bandwidth 選項,以 Mbps 為單位指定所需的頻寬。

    ibmcloud is volume-update $VOLUME_ID --bandwidth 2000
    
  3. 驗證頻寬更新。

    ibmcloud is vol $VOLUME_ID | grep Bandwidth
    

    此頻寬數值代表該磁碟區所能達到的最大吞吐量(單位:MB/s)。 較高的頻寬值能為資料密集型作業提供更佳的效能。

疑難排解

遷移卡在更新狀態

如果移轉狀態保持 updating 超過 30 分鐘,請完成下列步驟。 請注意,較大的磁碟區需要較長時間遷移,可能會在 updating 狀態維持 45 分鐘。

  1. 檢查工作詳情。

    ibmcloud is volume-jobs $VOLUME_ID
    
  2. 檢查卷狀態是否有錯誤或警告。

    ibmcloud is vol $VOLUME_ID | grep -E "Status|Busy"
    
  3. 再等待 15 分鐘,因為大容量需要較長的時間來遷移。

  4. 檢查 IBM Cloud 狀態頁面以瞭解 VPC 服務問題。

  5. 如果遷移卡住超過 1 小時,請聯絡 IBM 支援並提供工作 ID。

PVC 顯示舊 StorageClass

如果 PVC 在遷移後仍引用 Gen-1 StorageClass,則此行為在預期之內,不需要任何動作。 PVC storageClassName 欄位是不可變更的。 實際的儲存設定檔由 PV 決定,您在之前的步驟中已更新 PV。 功能不受影響。

  1. 驗證 PV(非 PVC)是否正確。

    oc get pv $PV_NAME -o jsonpath='{.spec.storageClassName}'
    

    預期輸出

    ibmc-vpc-block-sdp
    

效能未改善

如果在遷移後未看到效能提升,請完成下列步驟。

  1. 檢查實際 IOPS 分配。

    ibmcloud is vol $VOLUME_ID | grep IOPS
    
  2. 檢查音量設定檔。

    ibmcloud is vol $VOLUME_ID | grep Profile
    
  3. 增加 IOPS 分配。

    ibmcloud is volume-update $VOLUME_ID --iops 10000
    
  4. 驗證更新。

    ibmcloud is vol $VOLUME_ID | grep IOPS
    

下一步

完成遷移後,請考慮以下的接續步驟。

  • 重複本教程,遷移其他磁碟區。
  • 監控磁碟區效能,並視需要調整 IOPS。
  • 更新您的部署範本,將 Gen-2 StorageClasses 用於新磁碟區。
  • 檢閱 Block Storage 容量和效能,以提供最佳化指引。