PowerStore:无法复制基于 vVol 的虚拟机的停顿读写快照(用户可更正)
Summary: PowerStore 不支持复制读写 vVol 快照。这会导致在复制基于 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
- VMware Site Recovery Manager (SRM) 不 支持将虚拟机添加到保护组,并发出错误“Virtual machine '' file '' type 'diskDescriptor' is not replicated”:
- 如果虚拟机已添加到 SRM 保护组,则其状态切换为“Not configured”,并显示错误“Virtual machine '' file '' type 'diskDescriptor' is not replicated”:
- 计划迁移在 SRM 中失败,并显示错误“Cannot prepare protection group for failover。它包含不可恢复的虚拟机。此操作可能会导致数据丢失。虚拟机“”文件“”类型“diskDescriptor”未复制”
- 灾难恢复部分完成,并在步骤“Prepare protected site VMs for migration”中出现错误:“Cannot prepare protection group for failover。它包含不可恢复的虚拟机。此操作可能会导致数据丢失。虚拟机“”文件“”类型“diskDescriptor”未复制”
- 虚拟机的快照列表在故障切换后为空,该虚拟机在故障切换之前具有快照
- 故障切换前的虚拟机快照列表:
- 故障切换后的虚拟机快照列表:

Cause
上述所有症状都可能是虚拟机磁盘存在读写快照所致。PowerStore 不支持复制读写快照。这会导致复制的目标站点上的虚拟机快照树不完整。因此,无法在故障切换操作后恢复快照树,这会导致在为具有 RW 快照的虚拟机执行故障切换时丢失所有快照。SRM 中显示的错误警告,如果存在故障切换,快照将丢失。
注意:此问题由 SRM 引起。如果使用其他类型的 vVol 复制流程编排器,快照将会丢失。也就是说,如果通过另一个工具执行基于 vVol 的虚拟机的故障切换,快照仍将丢失。
上述错误并不一定意味着问题是由于存在 RW 快照所导致的。如果某些虚拟机磁盘未添加到复制组,或者它们已添加但尚未拷贝到目标端,则会显示类似的错误。
为了检查错误是否是由于复制的 vVol 的 RW 快照导致的,您可以利用 PowerStore REST。
可以通过使用以下 URL 执行 GET 请求来列出 RW 快照: https:///virtual_volume?select=id,name,parent_id&type=eq。快照&creator_type=eq。user&is_readonly=eq.false ,其中 是 PowerStore 群集 IP 示例输出:
获得 RW 快照列表后,您可以通过查看其父 vVol 的replication_group_id属性来验证它们是否是复制的 vVol 的子项。如果replication_group_id不是 null,则复制 vVol。可以使用以下 REST 请求: https:///virtual_volume?select=id,name,replication_group_id&id=eq.其中,应替换为parent_id
。)下面是 bash 脚本的示例,其中打印了具有 RW 快照的所有复制 vVol 的名称。
示例输出:
此数据可用于标识 vVol 所属的虚拟机。以下两个选项可用。
PowerStore REST:通过使用筛选器instance_uuid=eq.对 /api/rest/virtual_machine 执行 GET 请求,可以找到虚拟机。例如:
注意:此问题由 SRM 引起。如果使用其他类型的 vVol 复制流程编排器,快照将会丢失。也就是说,如果通过另一个工具执行基于 vVol 的虚拟机的故障切换,快照仍将丢失。
上述错误并不一定意味着问题是由于存在 RW 快照所导致的。如果某些虚拟机磁盘未添加到复制组,或者它们已添加但尚未拷贝到目标端,则会显示类似的错误。
为了检查错误是否是由于复制的 vVol 的 RW 快照导致的,您可以利用 PowerStore REST。
可以通过使用以下 URL 执行 GET 请求来列出 RW 快照: https:///virtual_volume?select=id,name,parent_id&type=eq。快照&creator_type=eq。user&is_readonly=eq.false ,其中 是 PowerStore 群集 IP 示例输出:
[
{
"id": "13ecfcef-8676-4605-ac83-478703346824",
"name": "vss_demo_vm.vmdk",
"parent_id": "8f9d26b9-007e-4d51-8255-3dad7fc243d1"
}
]
获得 RW 快照列表后,您可以通过查看其父 vVol 的replication_group_id属性来验证它们是否是复制的 vVol 的子项。如果replication_group_id不是 null,则复制 vVol。可以使用以下 REST 请求: https:///virtual_volume?select=id,name,replication_group_id&id=eq.其中,应替换为parent_id
。)下面是 bash 脚本的示例,其中打印了具有 RW 快照的所有复制 vVol 的名称。
#!/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 所属的虚拟机。以下两个选项可用。
-
按名称查找虚拟机
-
在 PowerStore GUI 或 REST 中按 uuid 查找虚拟机。如果在 PowerStore 上注册了 vCenter Server,则此选项可用。如果是这种情况,您可以按如下所示找到虚拟机:
PowerStore REST:通过使用筛选器instance_uuid=eq.对 /api/rest/virtual_machine 执行 GET 请求,可以找到虚拟机。例如:
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
为了能够恢复复制目标站点上的快照,我们建议不要为基于 vVol 的复制虚拟机创建停顿的快照。停顿的虚拟机快照创建会导致创建 vVol 的 RW 快照,从而导致上述问题。
问题解决方案包含 2 个部分:
这可以通过将虚拟机迁移到临时数据存储区,然后返回到原始数据存储区来完成。
步骤:
问题解决方案包含 2 个部分:
- 删除现有 RW 快照或将 RW vVol 快照转换为 ReadOnly vVol 快照
- 避免将来创建 RW 快照
将 RW 快照转换为 RO 快照
这可以通过将虚拟机迁移到临时数据存储区,然后返回到原始数据存储区来完成。
步骤:
- 在 PowerStore 上创建临时存储容器
- 将临时存储容器装载到 ESXi 主机
- 对临时数据存储区执行存储 vMotion 操作。VMware 文档中的更多详细信息 https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.vcenterhost.doc/GUID-A15EE2F6-AAF5-40DC-98B7-0DF72E166888.html
- 将虚拟机迁移回原始数据存储区
删除现有 RW 快照
- 识别具有 RW 快照的复制虚拟机。“原因”部分提供了有关如何执行此操作的说明
- 在 vSphere GUI 中:单击虚拟机并打开“Snapshots”列表
- 在“停顿来宾文件系统”字段中删除“是”的快照
避免将来创建 RW 快照
vSphere 在创建停顿的虚拟机快照时创建 vVol 的 RW 快照,因此为了避免创建 RW 快照,您可以在创建虚拟机快照时将停顿标记设置为 false。
下面的屏幕截图演示 vSphere GUI 中的“Take Snapshot”窗口。如果未选中该复选框,则快照不会停顿。
停顿标记在 vSphere createSnapshot API 以及 PowerCLI 中的 New-Snapshot cmdlet 中可用
Affected Products
PowerStoreArticle 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.