无法本地解压VHD,如何在Azure Blob上传Zip后解压生成托管磁盘?
实现步骤
1. 上传Zip包到Blob存储
先用AzCopy把16GB的Zip文件上传到目标Blob容器(比如命名为zip-uploads):
azcopy copy "本地路径\your-vhd.zip" "https://<你的存储账户名>.blob.core.windows.net/zip-uploads/your-vhd.zip" --recursive
2. 准备存放解压后VHD的容器
创建一个新的Blob容器(比如vhd-storage),用于存储解压后的500GB VHD:
az storage container create --name vhd-storage --account-name <你的存储账户名>
3. 用Azure容器实例(ACI)挂载Blob并解压
ACI可以直接挂载Blob容器作为本地卷,在容器内执行解压操作,适合处理大文件解压需求。需要配置足够的CPU、内存和临时磁盘空间(至少550GB,保证解压过程有足够临时存储)。
部署ACI执行解压
用Azure CLI启动ACI容器,挂载两个Blob容器,同时安装解压工具并执行解压命令:
az container create \ --name unzip-vhd-task \ --resource-group <你的资源组名> \ --image ubuntu:latest \ --cpu 4 \ --memory 16 \ --os-disk-size-gb 550 \ --azure-file-volume-account-name <你的存储账户名> \ --azure-file-volume-account-key <你的存储账户密钥> \ --azure-file-volume-share-name zip-uploads \ --azure-file-volume-mount-path /mnt/zip \ --azure-file-volume-account-name <你的存储账户名> \ --azure-file-volume-account-key <你的存储账户密钥> \ --azure-file-volume-share-name vhd-storage \ --azure-file-volume-mount-path /mnt/vhd \ --command-line "apt-get update && apt-get install -y unzip && unzip /mnt/zip/your-vhd.zip -d /mnt/vhd/"
说明:如果使用托管身份而非存储密钥,需要提前为ACI配置存储账户的访问权限,避免明文传递密钥。
4. 从Blob中的VHD创建托管磁盘
解压完成后,直接从Blob存储的VHD文件创建托管磁盘:
az disk create \ --resource-group <你的资源组名> \ --name <目标托管磁盘名> \ --source https://<你的存储账户名>.blob.core.windows.net/vhd-storage/your-vhd.vhd \ --os-type <Windows/Linux> \ --sku Premium_LRS \ --size-gb 500
替代方案:Azure Batch(适合重复任务)
如果需要多次执行这类大文件解压+磁盘创建操作,Azure Batch更适合。创建Batch池并挂载Blob存储,定义解压任务,流程和ACI类似,但支持批量调度和资源复用。
注意事项
- 完成解压后及时删除ACI实例,避免不必要的资源费用。
- 确保存储账户的网络配置允许ACI访问(比如不要限制为特定IP,或把ACI加入允许列表)。
- 解压过程耗时较长,可通过Azure门户或CLI查看ACI的日志进度。
内容的提问来源于stack exchange,提问作者Brandon
相关产品推荐
相关产品推荐

