Migrazione dei volumi Block Storage for VPC dai profili Gen-1 a Gen-2

Cloud privato virtuale

Migrate i volumi Block Storage for VPC dai profili di Generazione 1 (basati sui livelli) ai profili di Generazione 2 (prestazioni definite dal software) per sfruttare le prestazioni migliorate, la regolazione dinamica degli IOPS e una migliore ottimizzazione dei costi.

Comprendere le generazioni del profilo

Block Storage for VPC si è evoluto dalla Generazione 1 (basata sui livelli) alla Generazione 2 (Software Defined Performance).

Generazione 1 (basata sui livelli)
Le IOPS sono calcolate in base alle dimensioni del volume. Per ulteriori informazioni, vedere Block Storage profiles.
Generazione 2 (SDP)
IOPS personalizzati indipendenti dalle dimensioni del volume. Per ulteriori informazioni, vedere il profilo SDP Block Storage.

Per ulteriori informazioni sui profili di archiviazione a blocchi e sulle loro funzionalità, consultare la pagina Block Storage profiles.

Prima di iniziare

Prima di migrare i volumi, completare le seguenti operazioni.

Identificare i volumi da migrare

Trovare i PVC che utilizzano i profili di archiviazione a blocchi Gen-1.

  1. Elencare tutti i PVC di archiviazione a blocchi del cluster.

    kubectl get pvc --all-namespaces -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,STORAGECLASS:.spec.storageClassName,STATUS:.status.phase | grep vpc-block
    
  2. Ottenere l'ID del volume VPC da un PVC.

    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"
    

    Output di esempio

    Volume ID: r026-3afe630d-1a47-482c-aade-e37f5e0bb9f4
    

Controllare la configurazione attuale del volume

  1. Visualizza il profilo e la configurazione del volume a blocchi corrente.

    ibmcloud is vol $VOLUME_ID
    

    Esempio di output prima della migrazione

    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. Si notino i seguenti valori dell'output. Questi dati verranno utilizzati per verificare che la migrazione sia avvenuta con successo.

    • Profilo: 5iops-tier ( Gen-1 )
    • Generazione di storage: 1
    • IOPS regolabile: false

Avviare la migrazione

Il processo di migrazione viene eseguito in background, mentre il volume rimane collegato al pod e l'applicazione continua a funzionare. Le IOPS vengono regolate automaticamente sui valori predefiniti di SDP e il processo richiede in genere 5-15 minuti.

  1. Avviare la migrazione al profilo SDP.

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

Monitorare i progressi della migrazione

  1. Verifica lo stato del processo di migrazione. Se l'output indica Status: updating e Busy: true, la migrazione è in corso. Quando l'output mostra Status: available e Busy: false, la migrazione è completa.

    ibmcloud is volume-jobs $VOLUME_ID
    
  2. Controllare lo stato del volume.

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

    Esempio di output durante la migrazione

    Status                  updating
    Busy                    true
    Profile                 5iops-tier
    

Verifica del completamento della migrazione

  1. Confermare che il volume sta utilizzando il profilo Gen-2.

    ibmcloud is vol $VOLUME_ID
    

    Esempio di output dopo la migrazione

    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. Verificare i seguenti indicatori di successo:

    • Profilo: sdp
    • Generazione di storage: 2
    • IOPS regolabile: true
    • IOPS: aumento (ad esempio, da 3000 a 4000)
    • Larghezza di banda: migliorata

Aggiornamento dei metadati di PersistentVolume

  1. Aggiornare i metadati del PV per riflettere il profilo 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"}
    ]'
    
  2. Verificare l'aggiornamento.

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

    Output previsto

    ibmc-vpc-block-sdp
    

    Il PVC continua a mostrare il nome originale StorageClass. Questo comportamento è previsto perché il campo storageClassName di un PVC è immutabile. Il profilo di archiviazione effettivo è determinato dal PV, che è stato aggiornato in questo passaggio.

Convalidare l'applicazione

Verificare che l'applicazione funzioni correttamente dopo la migrazione.

  1. Controllare lo stato della capsula. Verificare che tutti i pod siano nello stato “ Running ”.

    kubectl get pods -n <namespace>
    
  2. Verificare il collegamento del volume. Verificare che il volume sia montato correttamente.

    kubectl describe pod <pod-name> -n <namespace> | grep -A 5 "Volumes:"
    
  3. Controllare i log dell'applicazione. Cercare eventuali errori relativi alle operazioni di archiviazione o I/O.

    kubectl logs <pod-name> -n <namespace> --tail=50
    
  4. Verificare l'endpoint dell'applicazione, se applicabile. Verificare che l'applicazione risponda correttamente.

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

Creare un sito Gen-2 StorageClass

Creare un SDP StorageClass per il provisioning di nuovi volumi.

  1. Creare un file YAML per il sito StorageClass. Salvare la seguente configurazione come 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. Applicare il sito StorageClass.

    kubectl apply -f storageclass-sdp.yaml
    
  3. Verificare la creazione di StorageClass.

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

Regolare gli IOPS e il throughput per ottimizzare le prestazioni

Dopo la migrazione, è possibile regolare dinamicamente gli IOPS e il throughput (larghezza di banda) in base alle esigenze del proprio carico di lavoro.

  • Iniziate con 5.000 IOPS per i carichi di lavoro generali.
  • Utilizzare 10.000 o più IOPS per i database.
  • Monitorare l'utilizzo e regolare in base alle esigenze effettive.

Aggiornamento degli IOPS

  1. Aumentate gli IOPS per ottenere prestazioni più elevate.

    ibmcloud is volume-update $VOLUME_ID --iops 8000
    
  2. Verifica l'aggiornamento degli IOPS.

    ibmcloud is vol $VOLUME_ID | grep IOPS
    

Aggiornamento della velocità di trasmissione (larghezza di banda)

Dopo la migrazione al profilo SDP, ai volumi viene assegnata una larghezza di banda predefinita. È possibile aumentare la larghezza di banda per migliorare la velocità di trasmissione nei carichi di lavoro che richiedono un uso intensivo di I/O.

  1. Verifica l'attuale assegnazione della larghezza di banda.

    ibmcloud is vol $VOLUME_ID | grep Bandwidth
    
  2. Aumentare la larghezza di banda per ottenere una maggiore velocità di trasmissione. Utilizza l'opzione " --bandwidth " per specificare la larghezza di banda desiderata in Mbps.

    ibmcloud is volume-update $VOLUME_ID --bandwidth 2000
    
  3. Verificare l'aggiornamento della larghezza di banda.

    ibmcloud is vol $VOLUME_ID | grep Bandwidth
    

    Il valore della larghezza di banda rappresenta la velocità massima in MB/s che il volume è in grado di raggiungere. Valori di larghezza di banda più elevati garantiscono prestazioni migliori nelle operazioni che richiedono un elevato volume di dati.

Risoluzione dei problemi

Migrazione bloccata nello stato di aggiornamento

Se lo stato di migrazione rimane updating per più di 30 minuti, completare i passaggi seguenti. Si noti che i volumi più grandi richiedono più tempo per la migrazione e potrebbero rimanere nello stato updating per 45 minuti.

  1. Controllare i dettagli del lavoro.

    ibmcloud is volume-jobs $VOLUME_ID
    
  2. Controllare lo stato del volume per verificare la presenza di errori o avvisi.

    ibmcloud is vol $VOLUME_ID | grep -E "Status|Busy"
    
  3. Attendere altri 15 minuti, poiché la migrazione di grandi volumi richiede più tempo.

  4. Controllare la pagina di stato di IBM Cloud per i problemi del servizio VPC.

  5. Se la migrazione rimane bloccata per più di 1 ora, contattate l 'assistenza IBM indicando l'ID del lavoro.

Il PVC mostra i vecchi StorageClass

Se il PVC fa ancora riferimento a Gen-1 StorageClass dopo la migrazione, questo comportamento è previsto e non richiede alcuna azione. Il campo PVC storageClassName è immutabile. Il profilo di archiviazione effettivo è determinato dal PV, che è stato aggiornato nei passaggi precedenti. La funzionalità non è compromessa.

  1. Verificare che il PV (non il PVC) sia corretto.

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

    Output previsto

    ibmc-vpc-block-sdp
    

Le prestazioni non sono migliorate

Se non si nota un aumento delle prestazioni dopo la migrazione, completare i passaggi seguenti.

  1. Controllare l'allocazione effettiva di IOPS.

    ibmcloud is vol $VOLUME_ID | grep IOPS
    
  2. Controllare il profilo del volume.

    ibmcloud is vol $VOLUME_ID | grep Profile
    
  3. Aumentare l'allocazione di IOPS.

    ibmcloud is volume-update $VOLUME_ID --iops 10000
    
  4. Verificare l'aggiornamento.

    ibmcloud is vol $VOLUME_ID | grep IOPS
    

Passi successivi

Dopo aver completato la migrazione, considerare le seguenti fasi successive.

  • Per migrare altri volumi, ripetere l'esercitazione.
  • Monitorare le prestazioni del volume e regolare gli IOPS secondo necessità.
  • Aggiornare i modelli di distribuzione per utilizzare Gen-2 StorageClasses per i nuovi volumi.
  • Esaminare la capacità e le prestazioni di Block Storage per ottenere indicazioni sull'ottimizzazione.