You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure跨区域复制含数据磁盘的镜像及附加数据磁盘至托管镜像方案咨询

跨区域复制含数据磁盘的托管镜像/附加数据磁盘到现有镜像解决方案

一、跨区域复制包含数据磁盘的托管镜像

方法1:用az image copy直接复制(最简便)

这个命令原生支持复制包含数据磁盘的托管镜像,无需单独处理数据磁盘:

az image copy \
  --source-resource-group <源资源组名称> \
  --source-image <源镜像名称> \
  --target-location <目标区域(如eastus)> \
  --target-resource-group <目标资源组名称> \
  --target-image <目标镜像名称> \
  --cleanup
  • --cleanup参数会自动清理复制过程中生成的临时快照,建议添加;如果源镜像是共享镜像库中的镜像,改用--source-image-id指定镜像的完整ID。

方法2:手动复制磁盘+重建镜像(适合复杂场景)

如果az image copy无法满足需求,可拆分步骤手动操作:

  1. 为源镜像的所有磁盘(OS盘+数据磁盘)创建快照
# 获取源镜像的所有磁盘ID(OS盘+数据盘)
disk_ids=$(az image show -g <源资源组> -n <源镜像名> --query 'storageProfile.dataDisks[].managedDisk.id' -o tsv)
disk_ids+=" "$(az image show -g <源资源组> -n <源镜像名> --query 'storageProfile.osDisk.managedDisk.id' -o tsv)

# 逐个创建快照
for disk_id in $disk_ids; do
  disk_name=$(echo $disk_id | awk -F '/' '{print $9}')
  az snapshot create \
    -g <临时资源组名> \
    -n "${disk_name}-snapshot" \
    --source "$disk_id"
done
  1. 跨区域复制快照到目标区域
# 获取所有快照ID
snapshot_ids=$(az snapshot list -g <临时资源组名> --query '[].id' -o tsv)

# 复制快照到目标区域
for snap_id in $snapshot_ids; do
  snap_name=$(echo $snap_id | awk -F '/' '{print $9}')
  az snapshot copy \
    --source "$snap_id" \
    --destination-resource-group <目标资源组名> \
    --destination-location <目标区域> \
    --destination-name "${snap_name}-copied"
done
  1. 在目标区域用复制后的快照创建新镜像
# 筛选OS快照和数据快照ID
os_snap_id=$(az snapshot list -g <目标资源组名> --query "[?contains(name,'osdisk')].id" -o tsv)
data_snap_ids=$(az snapshot list -g <目标资源组名> --query "[?contains(name,'datadisk')].id" -o tsv)

# 构建数据磁盘参数
data_disk_params=""
for data_snap in $data_snap_ids; do
  data_disk_params+="--data-disk $data_snap "
done

# 创建包含数据磁盘的新镜像
az image create \
  -g <目标资源组名> \
  -n <新镜像名称> \
  --os-type <Linux/Windows> \
  --source "$os_snap_id" \
  $data_disk_params

二、将数据磁盘附加到现有托管镜像

托管镜像本身是只读的,无法直接修改,需通过临时VM中转实现:

  1. 用现有镜像创建临时VM,同时挂载目标数据磁盘(用快照或现有数据磁盘均可)
az vm create \
  -g <资源组名称> \
  -n <临时VM名称> \
  --image <现有镜像名称> \
  --data-disk-snapshot <数据磁盘快照ID> \
  --os-type <Linux/Windows>
  1. 停止并解除分配VM,然后为VM的OS盘和数据盘创建快照
# 停止临时VM
az vm deallocate -g <资源组名称> -n <临时VM名称>

# 生成OS磁盘快照
az snapshot create \
  -g <资源组名称> \
  -n <OS快照名称> \
  --source $(az vm show -g <资源组名称> -n <临时VM名称> --query 'storageProfile.osDisk.managedDisk.id' -o tsv)

# 生成数据磁盘快照
az snapshot create \
  -g <资源组名称> \
  -n <数据磁盘快照名称> \
  --source $(az vm show -g <资源组名称> -n <临时VM名称> --query 'storageProfile.dataDisks[0].managedDisk.id' -o tsv)
  1. 用新的OS快照和数据快照创建包含数据磁盘的新镜像
az image create \
  -g <资源组名称> \
  -n <新镜像名称> \
  --os-type <Linux/Windows> \
  --source <OS快照ID> \
  --data-disk <数据磁盘快照ID>
  1. 清理临时资源(可选)
az vm delete -g <资源组名称> -n <临时VM名称> --yes
az snapshot delete -g <资源组名称> -n <OS快照名称> --yes
az snapshot delete -g <资源组名称> -n <数据磁盘快照名称> --yes

内容的提问来源于stack exchange,提问作者ASW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 14:47:36