今天快速介绍一个快速方便的方法实现 Azure Managed Disk 跨区域/跨 Country Cloud 拷贝的方法。Day1 Azure Managed Disk 是不支持直接从源 Managed Disk 拷贝到目的区域或Country Cloud 存储为 Managed Disk 的,通常为了实现该目标需要先将 Managed Disk 拷贝至目的区域或 Country Cloud 的存储账号下存储为 Page Blob,然后再通过该 Page Blob 生成 Managed Disk。最新的 Managed Disk 提供了 Direct-Upload 功能,即直接上传生成 Managed Disk,源可以为跨区域/跨 Country Cloud 的 Managed Disk,也可以是本地的 VHD 文件。下面我们以 Azure 上跨区域/跨 Country Cloud 拷贝 Managed Disk 为例,快速开始:
1. 安装最新版本的 Azure Cli 工具
2. 在目的区域/目的 Country Cloud 创建 Create Option 类型为 Upload 的 Managed Disk
az disk create -n $DESTDISKNAME -g $DESTRESOURCEGROUPNAME -l $DESTREGION --for-upload --upload-size-bytes $DISKSIZEINMB --sku Standard_LRS --os-type $OSTYPE
其中 --upload-size-bytes 来指定创建的 Managed Disk 大小,可以以源 Managed Disk 大小作为参考,但需要注意该大小需要保持为 512 的整数倍
3. 获取目的 Managed Disk 的上传访问地址
az disk grant-access -n $DESTDISKNAME -g $DESTRESOURCEGROUPNAME --access-level Write --duration-in-seconds 86400
实例 Output 如下:
{ "accessSas": "https://md-impexp-qb5jwbtg0tss.blob.core.windows.net/c0ctrh4ptwlx/abcd?sv=2017-04-17&sr=b&si=f3ecec6f-88c9-4dae-a5e8-1906497caf96&sig=xqoAb8HThuCTVE4GTN8v3UttUX7P3vSb%2Bdm%2Fsi%2F%2FBCE%3D" }
记录下 accessSas 中的内容
4. 获取源 Managed Disk 的访问地址
az disk grant-access -n $SOURCETDISKNAME -g $SOURCERESOURCEGROUPNAME --access-level Read --duration-in-seconds 86400
同上记录下 accessSas 中的内容
5. 使用 Azcopy 将源 Managed Disk 拷贝至 目的 Managed Disk
azcopy copy "$SOURCEACCESSSAS" "DESTACCESSSAS" --blob-type PageBlob
将 $SOURCEACCESSSAS 替换为源 Managed Disk 的访问地址,$DESTACCESSSAS 替换为目的 Managed Disk 的访问地址
6. 拷贝完毕后,撤销 accessSas 访问授权
az disk revoke-access -n $DISKNAME -g $RESOURCEGROUPNAME
此步分别对源 Managed Disk 和 目的 Managed Disk 做操作
7. 完成,目标区域或目标 Country Cloud 内的 Managed Disk 就可以直接生成主机啦。
如果大家不喜欢上述脚本的方式,在最新版本的 Azure Storage Explorer 1.10.1 中已经支持了对 Managed Disk 的访问,大家可以直接在 ADE 中通过 GUI 的方式直接对 Managed Disk 做 Copy Paste 操作,脚本中涉及的磁盘大小计算,访问地址授权,授权撤销操作都会自动完成。
好了小文一篇,希望对大家日常使用有所帮助。