PowerStore. Не удается реплицировать снимки виртуальных машин на основе vVol для чтения и записи в пассивном режиме (исправляется пользователем)

Summary: PowerStore не поддерживает репликацию снимков vVol для чтения и записи. Это вызывает различные проблемы с репликацией снимков виртуальных машин на основе vVols в пассивном режиме.

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

  • VMware Site Recovery Manager (SRM) не поддерживает добавление виртуальной машины в группу защиты и вызывает ошибку «Virtual machine '' file '' of type 'diskDescriptor' is not replicated»
image.png
 
  • Если виртуальная машина уже добавлена в SRM Protection Group, ее состояние переключается на «Not configured» с ошибкой «Virtual machine '' file '' type 'diskDescriptor' is not replicated»:
image.png

image.png

 
  • Запланированный перенос завершается сбоем в SRM с ошибкой «Cannot prepare protection group for failover. Содержит неустраируемые виртуальные машины. Операция может привести к потере данных. Файл «» «» типа «diskDescriptor» не реплицируется»
image.png
 
  • Аварийное восстановление частично завершается с ошибкой на шаге «Prepare protected site VMs for migration»: «Cannot prepare protection group for failover. Содержит неустраируемые виртуальные машины. Операция может привести к потере данных. Файл «» «» типа «diskDescriptor» не реплицируется»
image.png
 
  • После переключения при отказе список снимков виртуальной машины пуст для виртуальной машины, у которой были снимки до переключения при отказе
    • Список снимков виртуальных машин перед переключением при отказе:
image.png
  • Список снимков виртуальных машин после переключения при отказе: 
image.png

Cause

Все вышеперечисленные признаки могут быть результатом наличия снимков для чтения и записи дисков ВМ. PowerStore не поддерживает репликацию снимков для чтения и записи. Это приводит к тому, что дерево снимков виртуальной машины на целевой площадке репликации является неполным. Из-за этого восстановить дерево снимков после операции переключения при отказе невозможно, что приводит к потере всех моментальных снимков, если аварийное переключение на резервный ресурс выполняется для ВМ со снимками RW. Ошибки, отображаемых в SRM, предупреждают о том, что снимки будут потеряны в случае переключения при отказе.

Примечание: Проблема вызвана SRM. Моментальные снимки будут потеряны, если используется другой тип оркестратора репликации vVols. То есть, если переключение виртуальных машин на основе vVols при отказе выполняется с помощью другого инструмента, моментальные снимки все равно будут потеряны.

Указанные выше ошибки не обязательно означают, что проблемы вызваны наличием снимков RW. Аналогичные ошибки будут отображаться, если некоторые диски виртуальных машин не добавлены в группу репликации или если они были добавлены, но еще не скопированы на целевой стороне.



Чтобы проверить, вызваны ли ошибки снимками RW реплицируемых vVols, можно использовать PowerStore REST.

Снимки RW можно перечислены, выполнив запрос GET, используя следующий URL-адрес: https:///virtual_volume?select=id,name,parent_id&type=eq. Snapshot&creator_type=eq. User&is_readonly=eq.false , где — это вывод IP-адреса кластера PowerStore Пример вывода:
[
  {
    "id": "13ecfcef-8676-4605-ac83-478703346824",
    "name": "vss_demo_vm.vmdk",
    "parent_id": "8f9d26b9-007e-4d51-8255-3dad7fc243d1"
  }
]

После создания списка снимков RW можно проверить, являются ли они дочерними реплицируемыми vVols, просмотрев replication_group_id их родительских vVols. Если replication_group_id не null, выполняется репликация vVol. Можно использовать следующий запрос REST: https:///virtual_volume?select=id,name,replication_group_id&id=eq. где следует заменить на parent_id из предыдущего результата.

Ниже приведен пример сценария bash, который распечатает имя всех реплицированных vVols, которые имеют моментальные снимки 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  

Пример результата:
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

Эти данные можно использовать для идентификации виртуальной машины, к которым принадлежит vVol. Доступны следующие два варианта.
  1. Поиск виртуальной машины по имени

В большинстве случаев имя vVol содержит имя виртуальной машины. В приведенном ниже примере vVol принадлежит виртуальной машине «vss_demo_vm».
  1. Найдите виртуальную машину по uuid в графическом интерфейсе PowerStore или REST. Этот параметр доступен, если сервер vCenter зарегистрирован в PowerStore. В этом случае виртуальную машину можно найти следующим образом:

Графический интерфейс пользователя PowerStore: Перейдите в раздел Compute → Virtual Machines, сделайте столбец UUID видимым и найдите виртуальную машину в списке:
image.png

PowerStore REST: Виртуальную машину можно найти, выполнив запрос GET в /api/rest/virtual_machine с фильтром instance_uuid=eq.. Пример.
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

Чтобы иметь возможность восстанавливать снимки на целевой площадке репликации, рекомендуется никогда не создавать снимки реплицированных виртуальных машин на основе vVols. При создании моментального снимка виртуальной машины в пассивном режиме создаются снимки vVols RW, что вызывает вышеуказанные проблемы.

Решение проблемы состоит из двух частей:
  1. Удаление существующих снимков RW или преобразование снимков виртуальных томов RW в снимки vVols ReadOnly
  2. Избегайте создания снимков RW в будущем


Преобразование снимков RW в снимки RO

Это можно сделать, переведя виртуальную машину во временное хранилище данных, а затем обратно в исходное.

Шаги:
  1. Создание контейнера временного хранилища в PowerStore
  2. Смонтируйте временный контейнер хранилища на хостах ESXi
  3. Выполните операцию storage vMotion для временного хранилища данных. Дополнительные сведения см. в документации по VMware https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.vcenterhost.doc/GUID-A15EE2F6-AAF5-40DC-98B7-0DF72E166888.html
  4. Перенос виртуальных машин обратно в исходное хранилище данных


Удаление существующих снимков RW

  1. Определите реплицированные виртуальные машины с моментальными снимками RW. Инструкции по этому способу приведены в разделе «Причина».
  2. В графическом интерфейсе пользователя vSphere: Нажмите на виртуальную машину и откройте ее список «Snapshots».
  3. Удаление снимков с ответом «Да» в поле «Quiesce guest file system»
image.png
 


Избегайте создания снимков RW в будущем

vSphere создает снимки RW vVol в случае создания снимков виртуальных машин в пассивном режиме, поэтому во избежание создания моментальных снимков RW флаг «замещение» можно установить в значение false при создании моментального снимка виртуальной машины.

На снимке экрана ниже показано окно «Take Snapshot» в графическом интерфейсе пользователя vSphere. Если флажок не установлен, снимок не будет перезагру настроен.
image.png

Флаг «перевода в пассивное состояние» доступен в vSphere createSnapshot API , а также в командлете New-Snapshot в 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.