PowerStore: Impossibile replicare snapshot in lettura/scrittura inattive di VM basate su VVol (correggibile dall'utente)

Summary: PowerStore non supporta la replica di istantanee VVol in lettura/scrittura. Ciò causa vari problemi con la replica di snapshot inattive di VM basate su VVol.

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

image.png
 
  • Se la VM è già stata aggiunta al gruppo di protezione SRM, lo stato passa a "Not configured" con errore ''Virtual machine '' file '' di tipo 'diskDescriptor' is not replicated":
image.png

image.png

 
  • La migrazione pianificata ha esito negativo in SRM con errore "Cannot prepare protection group for failover. Contiene macchine virtuali non ripristinabili. L'operazione può causare la perdita di dati. Il file '' della macchina virtuale '' di tipo 'diskDescriptor' non è replicato"
image.png
 
  • Il disaster recovery viene completato parzialmente con errore durante il passaggio "Prepare protected site VMs for migration": "Cannot prepare protection group for failover. Contiene macchine virtuali non ripristinabili. L'operazione può causare la perdita di dati. Il file '' della macchina virtuale '' di tipo 'diskDescriptor' non è replicato"
image.png
 
  • L'elenco delle istantanee delle macchine virtuali è vuoto dopo il failover per una VM con snapshot prima del failover
    • Elenco snapshot VM prima del failover:
image.png
  • Elenco snapshot VM dopo il failover: 
image.png

Cause

Tutti i sintomi di cui sopra possono essere il risultato dell'esistenza di snapshot di lettura/scrittura dei dischi delle VM. PowerStore non supporta la replica di snapshot in lettura e scrittura. In questo modo la struttura ad albero delle istantanee delle VM è incompleta nel sito di destinazione della replica. Per questo motivo, non è possibile ripristinare la struttura ad albero delle istantanee dopo l'operazione di failover, con conseguente perdita di tutte le snapshot nel caso in cui venga eseguito il failover per la VM con snapshot RW. Gli errori visualizzati in SRM segnalano la perdita delle snapshot in caso di failover.

Nota: Il problema è causato da SRM. Le snapshot andrebbero perse nel caso in cui venga utilizzato un altro tipo di orchestrator di replica VVol. Ovvero, se il failover delle VM basate su VVols viene eseguito tramite un altro strumento, le snapshot andrebbero comunque perse.

Gli errori di cui sopra non indicano necessariamente che i problemi sono dovuti all'esistenza di snapshot RW. Errori simili vengono visualizzati se alcuni dischi delle VM non vengono aggiunti a un gruppo di replica o se sono stati aggiunti ma non ancora copiati sul lato di destinazione.



Per verificare se gli errori sono dovuti a snapshot RW di VVol replicati, è possibile sfruttare PowerStore REST.

Le snapshot RW possono essere elencate eseguendo la richiesta GET utilizzando il seguente URL: https:///virtual_volume?select=id,name,parent_id&type=eq. Snapshot&creator_type=eq. User&is_readonly=eq.false , dove è un output di esempio di IP di un cluster PowerStore:
[
  {
    "id": "13ecfcef-8676-4605-ac83-478703346824",
    "name": "vss_demo_vm.vmdk",
    "parent_id": "8f9d26b9-007e-4d51-8255-3dad7fc243d1"
  }
]

Una volta visualizzato un elenco di snapshot RW, è possibile verificare se sono elementi figlio di VVol replicati esaminando la proprietà replication_group_id dei VVol padre. Se replication_group_id non è null, il VVol viene replicato. È possibile utilizzare la seguente richiesta REST: https:///virtual_volume?select=id,name,replication_group_id&id=eq. dove deve essere sostituito con parent_id del risultato precedente.

Di seguito è riportato un esempio di script bash che stampa il nome di tutti i VVol replicati con snapshot RW.
#!/bin/bash
powerstore_rest_ip=10.249.51.38 # define IP of the PowerStore
credentials=admin:Password123! # define powerstore credentials
set -e
## helper function to execute a REST request
function rest_request() {
    url=$1
    if [[ -z $url ]]; then
      echo No url provided >&2
      exit 1
    fi
    curl -f -s --insecure -u $credentials -H 'Content-Type: application/json' "https://$powerstore_rest_ip/api/rest/$url"
}
 
# Step 1: collect all the RW snapshots
snap_list='[]'
offset=0
# loop is used here because PowerStore REST has a limit on number of entities returned in a single response
# if the number of snapshots is more than a limit then not all the snapshots are returned and we need to request others by using offset parameter
while : ; do
    tmp=$(rest_request "virtual_volume?select=id,name,parent_id,creation_timestamp,naa_name&type=eq.Snapshot&creator_type=eq.User&is_readonly=eq.falseℴ=creation_timestamp&offset=$offset")
    len=$(jq length <<< "$tmp")
    if [[ "$len" -eq "0" ]]; then break; fi
    offset=$((offset+len))
    snap_list=$(echo -e "$snap_list\n$tmp" | jq -s 'add')
done
# Step 2: Filter out vVols which are not replicated
for i in $(jq -r '.[].parent_id' <<< "$snap_list" | sort | uniq); do
  replicated_parent=$(rest_request "virtual_volume?select=id,name,replication_group_id,virtual_machine_uuid&id=eq.$i&replication_group_id=not.is.null")
  if [[ $(jq length <<< "$replicated_parent") != 0 ]]; then
    vvol_name=$(jq '.[0].name' <<< "$replicated_parent")
    vvol_id=$(jq -r '.[0].id' <<< "$replicated_parent")
    vm_uuid=$(jq -r '.[0].virtual_machine_uuid' <<< "$replicated_parent")
    vvol_rw_snap_count=$(jq "[ .[] | select(.parent_id==\"$i\") ] | length" <<< "$snap_list")
    echo "Replicated vVol $vvol_name has $vvol_rw_snap_count RW snapshots. vVol id: $vvol_id, VM uuid: $vm_uuid"
    echo "RW Snapshots:"
    echo "name,naa_name,creation_timestamp"
    jq -r '.[] | select(.parent_id=="'$i'") | [.name, .naa_name, .creation_timestamp] | @csv' <<< "$snap_list" | tr -d '"'
  fi
done  

Esempio di output:
Replicated vVol "vss_demo_vm.vmdk" has 2 RW snapshots. vVol id: e0173e85-8dc2-4104-a11d-d670ac419f88, VM uuid: 50379fa2-dda5-6a20-3156-c31bcbe30fb4
RW Snapshots:
name,naa_name,creation_timestamp
vss_demo_vm.vmdk,naa.68ccf09800f030ce0bc208d40cfbacb3,2023-09-21T15:05:59.242+00:00
vss_demo_vm.vmdk,naa.68ccf098004b0ad8048b1c326ab341a8,2023-09-21T15:39:16.518+00:00

Questi dati possono essere utilizzati per identificare la VM a cui appartiene il vVol. Sono disponibili le due opzioni seguenti.
  1. Trovare una VM per nome

Nella maggior parte dei casi il nome di vVol contiene un nome della VM. Nell'esempio riportato di seguito, vVol appartiene alla VM 'vss_demo_vm'
  1. Trovare una VM tramite uuid nella GUI di PowerStore o REST. Questa opzione è disponibile nel caso in cui il server vCenter sia registrato su PowerStore. In questo caso, è possibile trovare la VM come segue:

GUI di PowerStore: Passare a Compute → Virtual Machines, rendere visibile la colonna "UUID" e trovare la VM nell'elenco:
image.png

PowerStore REST: È possibile trovare la VM eseguendo la richiesta GET su /api/rest/virtual_machine con filter instance_uuid=eq.. Ad esempio:
curl -u $credentials 'https://$powerstore_rest_ip/api/rest/virtual_machine?instance_uuid=eq.5037dc23-56fc-29d2-d567-05ef17ffa81a&select=id,name'
[{"id":"550d0148-d123-4303-9bcc-85ef26377851","name":"vss_demo_vm"}]

Resolution

Per poter ripristinare le snapshot sul sito di destinazione della replica, si consiglia di non creare mai snapshot inattive di VM replicate basate su VVol. La creazione inattiva di snapshot di VM causa la creazione di snapshot RW di vVols, che causano problemi menzionati in precedenza.

La soluzione del problema è costituita da 2 parti:
  1. Rimuovere le istantanee RW esistenti o convertire le snapshot VVol RW in snapshot ReadOnly vVols
  2. Evitare di creare snapshot RW in futuro


Convertire le snapshot RW in snapshot RO

Questa operazione può essere eseguita eseguendo la migrazione di una VM in un datastore temporaneo e quindi tornando a quella originale.

Passi:
  1. Creazione di un contenitore di storage temporaneo in PowerStore
  2. Montare il contenitore di storage temporaneo negli host ESXi
  3. Eseguire l'operazione storage vMotion nel datastore temporaneo. Ulteriori dettagli nella documentazione VMware https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.vcenterhost.doc/GUID-A15EE2F6-AAF5-40DC-98B7-0DF72E166888.html
  4. Migrazione delle VM al datastore originale


Rimozione delle snapshot RW esistenti

  1. Identificare le macchine virtuali replicate con snapshot RW. Le istruzioni su come eseguire questa operazione sono fornite nella sezione "Causa"
  2. Nella GUI di vSphere: Fai clic sulla VM e apri l'elenco "Snapshots"
  3. Eliminare le snapshot con "Yes" nel campo "Quiesce guest file system"
image.png
 


Evitare la creazione di snapshot RW in futuro

vSphere crea snapshot RW di vVol in caso di creazione di snapshot di VM inattivate, pertanto per evitare la creazione di snapshot RW è possibile impostare il flag di disattivazione su false durante la creazione di una snapshot di VM.

La schermata seguente mostra la finestra "Take Snapshot" nella GUI di vSphere. L'istantanea non verrà disabilitata se la casella di controllo non è selezionata.
image.png

Il flag di disattivazione è disponibile in vSphere createSnapshot API nonché nel cmdlet New-Snapshot in PowerCLI

Affected Products

PowerStore
Article Properties
Article Number: 000218057
Article Type: Solution
Last Modified: 14 Jun 2025
Version:  4
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.