PowerStore: Stillgelegte Lese-/Schreib-Snapshots von vVol-basierten VMs können nicht repliziert werden (vom Nutzer korrigierbar)

Summary: PowerStore unterstützt keine Replikation von Lese-/Schreib-vVol-Snapshots. Dies führt zu verschiedenen Problemen bei der Replikation stillgelegter Snapshots von vVol-basierten VMs.

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
 
  • Wenn die VM bereits zur SRM-Schutzgruppe hinzugefügt wurde, wechselt ihr Status zu "Not configured" mit dem Fehler "'Virtual machine '' file '' vom Typ 'diskDescriptor' is not replicated":
image.png

image.png

 
  • Die geplante Migration schlägt in SRM mit dem Fehler "Cannot prepare protection group for failover fehl. Es enthält nicht wiederherstellbare virtuelle Maschinen. Der Vorgang kann zu Datenverlust führen. Virtual machine '' file '' des Typs 'diskDescriptor' is not replicated"
image.png
 
  • Die Disaster Recovery wird teilweise mit dem Fehler in Schritt "Prepare protected site VMs for migration" abgeschlossen: "Cannot prepare protection group for failover. Es enthält nicht wiederherstellbare virtuelle Maschinen. Der Vorgang kann zu Datenverlust führen. Virtual machine '' file '' des Typs 'diskDescriptor' is not replicated"
image.png
 
  • Die Snapshot-Liste der virtuellen Maschine ist nach dem Failover für eine VM leer, die vor dem Failover Snapshots hatte.
    • VM-Snapshot-Liste vor Failover:
image.png
  • VM-Snapshot-Liste nach Failover: 
image.png

Cause

Alle der oben genannten Symptome können das Ergebnis des Vorhandenseins von Lese-/Schreib-Snapshots von VM-Festplatten sein. PowerStore unterstützt keine Replikation von Lese-/Schreib-Snapshots. Dies führt dazu, dass die VM-Snapshot-Struktur am Zielstandort der Replikation unvollständig ist. Aus diesem Grund ist es nicht möglich, die Snapshot-Struktur nach einem Failover-Vorgang wiederherzustellen, was zum Verlust aller Snapshots führt, falls ein Failover für die VM mit RW-Snapshots durchgeführt wird. Die in SRM angezeigten Fehler sind warnungshalber, dass Snapshots verloren gehen, falls es zu einem Failover kommt.

Hinweis: Das Problem wird durch SRM verursacht. Die Snapshots gehen verloren, wenn eine andere Art von vVol-Replikationsorchestrierer verwendet wird. Das heißt, wenn ein Failover von vVol-basierten VMs über ein anderes Tool durchgeführt wird, gehen die Snapshots weiterhin verloren.

Die obigen Fehler bedeuten nicht unbedingt, dass die Probleme auf das Vorhandensein von RW-Snapshots zurückzuführen sind. Ähnliche Fehler werden angezeigt, wenn einige der VM-Festplatten nicht zu einer Replikationsgruppe hinzugefügt werden oder wenn sie hinzugefügt, aber noch nicht auf die Zielseite kopiert wurden.



Um zu überprüfen, ob die Fehler auf RW-Snapshots replizierter VVols zurückzuführen sind, können Sie PowerStore REST nutzen.

RW-Snapshots können durch Ausführen einer GET-Anforderung unter Verwendung der folgenden URL aufgelistet werden: https:///virtual_volume?select=id,name,parent_id&type=eq. Snapshot&creator_type=eq. User&is_readonly=eq.false , wobei eine PowerStore-Cluster-IP ist Beispielausgabe:
[
  {
    "id": "13ecfcef-8676-4605-ac83-478703346824",
    "name": "vss_demo_vm.vmdk",
    "parent_id": "8f9d26b9-007e-4d51-8255-3dad7fc243d1"
  }
]

Sobald Sie eine Liste der RW-Snapshots haben, können Sie überprüfen, ob sie untergeordnete Elemente replizierter VVols sind, indem Sie sich die replication_group_id Eigenschaft ihrer übergeordneten VVols ansehen. Wenn replication_group_id nicht null ist, wird das vVol repliziert. Die folgende REST-Anforderung kann verwendet werden: https:///virtual_volume?select=id,name,replication_group_id&id=eq. wobei durch parent_id aus dem vorherigen Ergebnis ersetzt werden sollte.

Im Folgenden finden Sie ein Beispiel für ein Bash-Skript, das den Namen aller replizierten VVols druckt, die RW-Snapshots haben.
#!/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  

Beispiel Ausgabe:
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

Diese Daten können verwendet werden, um die VM zu identifizieren, zu der das vVol gehört. Die folgenden beiden Optionen sind verfügbar.
  1. Suchen einer VM nach Namen

In den meisten Fällen enthält der Name des VVol einen Namen der VM. Im folgenden Beispiel gehört das vVol zur VM "vss_demo_vm"
  1. Suchen Sie eine VM nach uuid in der PowerStore-GUI oder rest. Diese Option ist für den Fall verfügbar, dass vCenter Server auf PowerStore registriert ist. Wenn dies der Fall ist, finden Sie die VM wie folgt:

PowerStore-GUI: Navigieren Sie zu Compute → Virtual Machines, machen Sie die Spalte "UUID" sichtbar und suchen Sie die VM in der Liste:
image.png

PowerStore REST: Die VM kann durch Ausführen einer GET-Anforderung an /api/rest/virtual_machine mit filter instance_uuid=eq. gefunden werden. Zum Beispiel:
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

Um die Snapshots am Zielstandort der Replikation wiederherstellen zu können, empfehlen wir, niemals stillgelegte Snapshots replizierter vVol-basierter VMs zu erstellen. Die Erstellung stillgelegter VM-Snapshots verursacht die Erstellung von RW-Snapshots von VVols, was zu oben genannten Problemen führt.

Die Problemlösung besteht aus 2 Teilen:
  1. Entfernen vorhandener RW-Snapshots oder Konvertieren von RW-VVol-Snapshots in ReadOnly-vVol-Snapshots
  2. Vermeiden Sie in Zukunft die Erstellung von RW-Snapshots.


Konvertieren von RW-Snapshots in RO-Snapshots

Dies kann durch die Migration einer VM zu einem temporären Datenspeicher und dann zurück zum ursprünglichen Datenspeicher erfolgen.

Schritte:
  1. Erstellen eines temporären Speichercontainers auf PowerStore
  2. Mounten des temporären Speichercontainers auf ESXi-Hosts
  3. Führen Sie einen vMotion-Speichervorgang zum zeitlichen Datenspeicher durch. Weitere Details finden Sie in der VMware-Dokumentation https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.vcenterhost.doc/GUID-A15EE2F6-AAF5-40DC-98B7-0DF72E166888.html
  4. Migrieren der VMs zurück zum ursprünglichen Datenspeicher


Entfernen vorhandener RW-Snapshots

  1. Identifizieren Sie die replizierten virtuellen Maschinen mit RW-Snapshots. Anweisungen dazu finden Sie im Abschnitt "Ursache".
  2. In der vSphere-GUI: Klicken Sie auf die VM und öffnen Sie die Liste "Snapshots".
  3. Löschen von Snapshots mit "Yes" im Feld "Quiesce guest file system"
image.png
 


Vermeidung der Erstellung von RW-Snapshots in Zukunft

vSphere erstellt RW-Snapshots von vVol im Falle der Erstellung stillgelegter VM-Snapshots. Um die Erstellung von RW-Snapshots zu vermeiden, können Sie das Stilllegungs-Flag bei der Erstellung eines VM-Snapshot auf "false" setzen.

Der folgende Screenshot zeigt das Fenster "Take Snapshot" in der vSphere-GUI. Der Snapshot wird nicht stillgelegt, wenn das Kontrollkästchen nicht aktiviert ist.
image.png

Das Stilllegungs-Flag ist in vSphere createSnapshot API sowie im Cmdlet New-Snapshot in PowerCLI verfügbar.

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.