PowerStore: Nie można replikować szyderczych migawek odczytu i zapisu maszyn wirtualnych opartych na vVol (możliwość naprawienia przez użytkownika)

Summary: PowerStore nie obsługuje replikacji migawek vVol odczytu i zapisu. Powoduje to różne problemy z replikacją szyfrowanych migawek maszyn wirtualnych opartych na 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
 
  • Jeśli maszyna wirtualna została już dodana do grupy ochrony SRM, jej stan przełącza się na "Nieskonfigurowane" z błędem "Maszyna wirtualna "< nazwa maszyny wirtualnej>" plik "" typu "diskDescriptor" nie jest replikowany":
image.png

image.png

 
  • Planowana migracja nie powiedzie się w SRM z powodu błędu "Cannot prepare protection group for failover. Zawiera maszyny wirtualne, które nie podlegają odzyskaniu. Operacja może spowodować utratę danych. Maszyna wirtualna "" file '' of type 'diskDescriptor' is not replicaed"
image.png
 
  • Odtwarzanie po awarii częściowo kończy się błędem na etapie "Prepare protected site VMs for migration" (Przygotuj maszyny wirtualne lokalizacji chronionej do migracji): "Nie można przygotować nazwy grupy ochrony do przełączania awaryjnego. Zawiera maszyny wirtualne, które nie podlegają odzyskaniu. Operacja może spowodować utratę danych. Maszyna wirtualna "" file '' of type 'diskDescriptor' is not replicaed"
image.png
 
  • Lista migawek maszyny wirtualnej jest pusta po przełączeniu awaryjnym dla maszyny wirtualnej, która miała migawki przed przełączeniem awaryjnym
    • Lista migawek maszyny wirtualnej przed przełączaniem awaryjnym:
image.png
  • Lista migawek maszyny wirtualnej po przełączeniu awaryjnym: 
image.png

Cause

Wszystkie powyższe objawy mogą być wynikiem istnienia migawek odczytu i zapisu dysków maszyn wirtualnych. PowerStore nie obsługuje replikacji migawek odczytu i zapisu. Powoduje to, że drzewo migawek maszyny wirtualnej jest niekompletne w docelowej lokalizacji replikacji. Z tego powodu nie można odzyskać drzewa migawek po operacji przełączania awaryjnego, co prowadzi do utraty wszystkich migawek w przypadku przełączenia awaryjnego dla maszyny wirtualnej z migawkami RW. Błędy wyświetlane w SRM są ostrzeżeniem, że migawki zostaną utracone w przypadku przełączania awaryjnego.

Uwaga: Przyczyną problemu jest SRM. Migawki zostaną utracone w przypadku użycia innego rodzaju orkiestratora replikacji vVol. Oznacza to, że w przypadku przełączania awaryjnego maszyn wirtualnych opartych na vVol za pomocą innego narzędzia migawki nadal zostaną utracone.

Powyższe błędy nie muszą oznaczać, że problemy wynikają z istnienia migawek RW. Podobne błędy zostaną wyświetlone, jeśli niektóre dyski maszyny wirtualnej nie zostaną dodane do grupy replikacji lub jeśli zostały dodane, ale nie zostały jeszcze skopiowane do strony docelowej.



Aby sprawdzić, czy błędy są spowodowane migawkami RW z replikowanych vVol, można skorzystać z PowerStore REST.

Migawki RW można wyświetlić na liście, wykonując żądanie GET przy użyciu następującego adresu URL: https://< powererstore ip>/virtual_volume?select=id, name, parent_id&type=eq. Migawka&creator_type=eq. User&is_readonly=eq.false, gdzie < powerstore ip> jest przykładowym wyjściem IP klastra PowerStore:
[
  {
    "id": "13ecfcef-8676-4605-ac83-478703346824",
    "name": "vss_demo_vm.vmdk",
    "parent_id": "8f9d26b9-007e-4d51-8255-3dad7fc243d1"
  }
]

Po utworzeniu listy migawek RW można sprawdzić, czy są to dzieci replikowanych vVol, przeglądając właściwość replication_group_id nadrzędnych vVol. Jeśli replication_group_id nie jest null, vVol jest replikowany. Można użyć następującego żądania REST: https://< powererstore ip>/virtual_volume?select=id, name, replication_group_id&id=eq. gdzie należy zastąpić parent_id z poprzedniego wyniku.

Poniżej przedstawiono przykład skryptu bash, który drukuje nazwę wszystkich zreplikowanych vVol, które mają migawki 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  

Przykładowe dane wyjściowe:
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

Dane te mogą być używane do identyfikacji maszyny wirtualnej, do których należy vVol. Dostępne są dwie następujące opcje.
  1. Znajdź maszynę wirtualną według nazwy

W większości przypadków nazwa vVol zawiera nazwę maszyny wirtualnej. W poniższym przykładzie vVol należał do maszyny wirtualnej "vss_demo_vm"
  1. Znajdź maszynę wirtualną według identyfikatora uuid w graficznym interfejsie użytkownika PowerStore lub rest. Ta opcja jest dostępna w przypadku rejestracji serwera vCenter w systemie PowerStore. W takim przypadku maszynę wirtualną można znaleźć w następujący sposób:

Graficzny interfejs użytkownika PowerStore: Przejdź do sekcji Compute → Virtual Machines, zaznacz kolumnę "UUID" i znajdź maszynę wirtualną na liście:
image.png

PowerStore REST: Maszynę wirtualną można znaleźć, wykonując żądanie GET do /api/rest/virtual_machine z filtrem instance_uuid=eq.. Oto przykład:
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

Aby przywrócić migawki w docelowej lokalizacji replikacji, zalecamy, aby nigdy nie tworzyć szyfrowanych migawek replikowanych maszyn wirtualnych opartych na vVol. Utworzenie migawki szyderczej maszyny wirtualnej powoduje utworzenie migawek RW vVol, co powoduje problemy wymienione powyżej.

Rozwiązanie problemu składa się z 2 części:
  1. Usuń istniejące migawki RW lub konwertuj migawki RW vVol na migawki ReadOnly vVol
  2. Unikaj tworzenia migawek RW w przyszłości


Konwertowanie migawek RW na migawki RO

Można to zrobić, migrując maszynę wirtualną do tymczasowego magazynu danych, a następnie z powrotem do oryginalnego.

Kroki:
  1. Tworzenie tymczasowego kontenera pamięci masowej w systemie PowerStore
  2. Zamontuj tymczasowy kontener pamięci masowej na hostach ESXi
  3. Przeprowadź operację vMotion pamięci masowej do magazynu danych czasowych. Więcej informacji w dokumentacji VMware https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.vcenterhost.doc/GUID-A15EE2F6-AAF5-40DC-98B7-0DF72E166888.html
  4. Migracja maszyn wirtualnych z powrotem do oryginalnego magazynu danych


Usuń istniejące migawki RW

  1. Zidentyfikuj replikowane maszyny wirtualne z migawkami RW. Instrukcje dotyczące tego, jak to zrobić, znajdują się w sekcji "Przyczyna"
  2. W graficznym interfejsie użytkownika vSphere: Kliknij maszynę wirtualną i otwórz jej listę migawek
  3. Usuń migawki z komunikatem "Yes" w polu "Quiesce guest file system"
image.png
 


Unikanie tworzenia migawek RW w przyszłości

vSphere tworzy migawki RW vVol w przypadku tworzenia szydernych migawek maszyny wirtualnej, w związku z tym w celu uniknięcia tworzenia migawek RW można ustawić flagę quiesce na fałszywą podczas tworzenia migawki maszyny wirtualnej.

Poniższy zrzut ekranu przedstawia okno "Take Snapshot" w graficznym interfejsie użytkownika vSphere. Migawka nie będzie drzemie, jeśli pole wyboru nie jest zaznaczone.
image.png

Flaga quiesce jest dostępna w interfejsie API vSphere createSnapshot , a także w poleceń cmdlet nowej migawki w 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.