PowerStore: Não é possível replicar snapshots de leitura/gravação desativados de VMs baseadas em vVol (corrigível pelo usuário)

Summary: O PowerStore não dá suporte à replicação de snapshots do vVol de leitura e gravação. Isso causa vários problemas com a replicação de snapshots desativados de VMs baseadas em 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

  • O VMware Site Recovery Manager (SRM) não dá suporte à adição de uma VM a um grupo de proteção e gera o erro "'Virtual machine '' file '' do tipo 'diskDescriptor' is not replicated" :
image.png
 
  • Se a VM já tiver sido adicionada ao grupo de proteção do SRM, seu status alternará para "Not configured" com o erro "'Virtual machine '' file '' do tipo 'diskDescriptor' is not replicated":
image.png

image.png

 
  • A migração planejada falha no SRM com o erro "Cannot prepare protection group for failover. Ele contém máquinas virtuais não recuperáveis. A operação pode causar perda de dados. O arquivo "" da máquina virtual "" do tipo "diskDescriptor" não é replicado"
image.png
 
  • A recuperação de desastres é parcialmente concluída com o erro na etapa "Prepare protected site VMs for migration": "Não é possível preparar o nome < grupo de proteção> para failover. Ele contém máquinas virtuais não recuperáveis. A operação pode causar perda de dados. O arquivo "" da máquina virtual "" do tipo "diskDescriptor" não é replicado"
image.png
 
  • A lista de snapshots da máquina virtual fica vazia após o failover de uma VM que tinha snapshots antes do failover
    • Lista de snapshots da VM antes do failover:
image.png
  • Lista de snapshots da VM após o failover: 
image.png

Cause

Todos os sintomas acima podem ser o resultado da existência de snapshots de leitura e gravação de discos de VM. O PowerStore não dá suporte à replicação de snapshots de leitura e gravação. Isso faz com que a árvore de snapshots da VM seja incompleta no local de destino da replicação. Devido a isso, não é possível recuperar a árvore de snapshots após a operação de failover, o que leva à perda de todos os snapshots caso o failover seja executado para a VM com snapshots de RW. Os erros exibidos no SRM são avisos de que os snapshots serão perdidos caso haja um failover.

Nota: O problema é causado pelo SRM. Os snapshots seriam perdidos caso outro tipo de orquestrador de replicação de vVol fosse usado. Ou seja, se o failover de VMs baseadas em VVol for realizado por meio de outra ferramenta, os snapshots ainda serão perdidos.

Os erros acima não significam necessariamente que os problemas se devem à existência de snapshots de RW. Erros semelhantes seriam exibidos se alguns dos discos da VM não fossem adicionados a um grupo de replicação ou se fossem adicionados, mas ainda não copiados no lado do destino.



Para verificar se os erros são causados por snapshots de RW de vVols replicados, você pode aproveitar o POWERStore REST.

Os snapshots de RW podem ser listados executando a solicitação GET usando a seguinte URL: https:///virtual_volume?select=id,name,parent_id&type=eq. Snapshot&creator_type=eq. User&is_readonly=eq.false, em que é um resultado de EXEMPLO de IP do cluster do PowerStore:
[
  {
    "id": "13ecfcef-8676-4605-ac83-478703346824",
    "name": "vss_demo_vm.vmdk",
    "parent_id": "8f9d26b9-007e-4d51-8255-3dad7fc243d1"
  }
]

Depois de ter uma lista de snapshots de RW, você pode verificar se eles são filhos de vVols replicados analisando a propriedade replication_group_id de seus vVols pai. Se replication_group_id não for nulo, o vVol será replicado. A seguinte solicitação REST pode ser usada: https:///virtual_volume?select=id,name,replication_group_id&id=eq. em que o ID do deve ser substituído pelo parent_id do resultado anterior.

Veja abaixo um exemplo de script bash que imprime o nome de todos os vVols replicados que têm snapshots de 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  

Exemplo de resultado:
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

Esses dados podem ser usados para identificar a VM à qual o vVol pertence. As duas opções a seguir estão disponíveis.
  1. Localizar uma VM por nome

Na maioria dos casos, o nome do vVol contém um nome da VM. No exemplo abaixo, o vVol pertence à VM "vss_demo_vm"
  1. Localize uma VM por uuid na GUI ou REST do PowerStore. Essa opção está disponível caso o vCenter Server esteja registrado no PowerStore. Se esse for o caso, você pode encontrar a VM da seguinte forma:

GUI do PowerStore: Navegue até Compute → Virtual Machines, torne a coluna "UUID" visível e localize a VM na lista:
image.png

PowerStore REST: A VM pode ser encontrada executando a solicitação GET para /api/rest/virtual_machine com instance_uuid=eq.. Por exemplo:
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

Para poder recuperar os snapshots no local de destino de replicação, recomendamos nunca criar snapshots desativados de VMs replicadas baseadas em vVol. A criação de snapshots de VMs desativadas causa a criação de snapshots de RW de vVols, o que causa problemas mencionados acima.

A solução do problema consiste em duas partes:
  1. Remover snapshots de RW existentes ou converter snapshots VVol RW em snapshots ReadOnly vVol
  2. Evite criar snapshots de RW no futuro


Converter snapshots de RW em snapshots de RO

Isso pode ser feito migrando uma VM para um datastore temporário e, em seguida, de volta para a original.

Passos:
  1. Criar um contêiner de armazenamento temporário no PowerStore
  2. Montar o contêiner de armazenamento temporário em hosts ESXi
  3. Execute a operação do vMotion de armazenamento para o datastore temporal. Mais detalhes na documentação do VMware https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.vcenterhost.doc/GUID-A15EE2F6-AAF5-40DC-98B7-0DF72E166888.html
  4. Migrar as VMs de volta para o datastore original


Remover snapshots de RW existentes

  1. Identifique as máquinas virtuais replicadas que têm snapshots de RW. As instruções sobre como fazer isso são fornecidas na seção "Causa"
  2. Na GUI do vSphere: Clique na VM e abra a lista "Snapshots"
  3. Exclua snapshots com "Yes" no campo "Quiesce guest file system"
image.png
 


Evite a criação de snapshots de RW no futuro

O vSphere cria snapshots de RW do vVol em caso de criação de snapshots de VM desativados, portanto, para evitar a criação de snapshots de RW, você pode definir o indicador de desativação como falso ao criar um snapshot de VM.

A captura de tela abaixo demonstra a janela "Take Snapshot" na GUI do vSphere. O snapshot não será desativado se a caixa de seleção não estiver marcada.
image.png

O indicador de desativação está disponível no vSphere createSnapshot API , bem como no cmdlet New-Snapshot no 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.