参考:启动导出映像任务
export-image
修改调整VHD/VHDX虚拟磁盘大小 - IT摇篮曲
是这样的,穷比的学生用不起正价大厂云产品,所以每年只能辗转于不同大厂给出的免费试用资格,但是迁移的过程中除了传文件,还要重新配一次环境。这在我看来是极度麻烦的事情,如果不是没钱,我宁愿一直续期下去而不是迁移。有一些服务是用docker还好,但鬼知道我还配了什么其他服务。docker可以把我们的环境打包成镜像,那同样我们也可以向上一层,直接把整个系统打包成镜像,直接全部迁移。
本文以Azure为例,介绍云厂商实例导出磁盘映像,转移镜像,以及通过镜像启用新的云实例。
导出磁盘镜像
Azure
打开虚拟机绑定的磁盘,可以看到如下界面。
这时候,我们点击侧边栏的 设置 - > 导出磁盘,这时候就会发现此时是无法导出的。上面提示:
仅当已取消分配 VM 或磁盘未附加,或者磁盘未处于 ReadyToUpload 或 ActiveUpload 状态时,才允许导出磁盘。
即云实例VM关机了后才能导出。
若是我们运行着一些关键服务,服务器并不能关机导出,这时候我们便需要快照 Snapshot了。
磁盘页面选择上方创建快照,快照类型选择全量。
在快照页面,设置 -> 导出快照,取消勾选 启用数据访问身份验证模式, 并根据自己的带宽和磁盘容量的大小适当调整URL 到期时间(秒),点击生成URL,点击下载VHD文件,即可导出你的磁盘映像文件。
AWS
AWS这边相对麻烦一些,需要使用到CLI。
首先,你需要给磁盘创建一个快照,并通过快照创建Amazon Machine Image,AMI映像。
然后,你要创建一个S3桶,以存放映像。
下载AWS cli并登录。
若要导出映像,请使用 export-image 命令。使用以下 S3 密钥将导出的文件写入指定的 S3 存储桶:前缀 export-ami-id。 格式(例如,my-export-bucket/exports/export-ami-1234567890abcdef0.vmdk)。
aws ec2 export-image --image-id ami-id --disk-image-format VMDK --s3-export-location S3Bucket=my-export-bucket,S3Prefix=exports/
支持的镜像格式有
VMDK
RAW
VHD
然后从S3把镜像文件下载下来。
各种磁盘格式
VMDK:VMware 专用虚拟磁盘格式
VHD 和 VHDX:微软 Hyper-V 虚拟磁盘格式
VDI:VirtualBox 专用虚拟磁盘格式
微软Azure导出的镜像文件只有VHD格式,跟Azure采用Hyper-V的虚拟化架构有关。
“压缩”映像文件(Azure不可用)
注意:Azure不支持压缩的Dynamic Image
导出的磁盘映像文件大小与磁盘大小相等,但你的磁盘没存满的话,就意味着这个磁盘映像中有空白部分。空白部分对于传输很不便利,因此我们需要调整“压缩“映像文件的大小。
修改调整VHD/VHDX虚拟磁盘大小 - IT摇篮曲中提到的BOOTICE是不适用的,原因是文件零散分布在磁盘中,使用BOOTICE调整大小可能会抹除原有数据。因此常见的方法是使用DiskGenius,傲梅分区助手等工具来复制映像文件,复制时空白空间碎片可清除。
这里以DiskGenius为例。
顶栏 -> 磁盘 ->打开虚拟磁盘文件,选择下载好的映像。
顶栏 -> 磁盘 ->创建虚拟磁盘文件,选择创建Virtual PC映像 (VHD),容量与你要迁移到的云服务商的磁盘的大小一致,并且保持默认取消勾选立即分配所有控件。
顶栏 -> 工具 ->克隆磁盘,源磁盘选择下载下来的磁盘镜像,目标磁盘选择新创建的磁盘,然后复制方式选 按文件复制(可消除碎片) 完成后,新的镜像文件的大小与云实例上实际占用空间一致。
在云上导入镜像文件
这里还是以Azure为例。
对于在同Azure帐号上的迁移,你只需要利用快照创建磁盘并附加在VM上即可。
而对于跨账号或者跨服务商的迁移,在导入时则需要重新上传VHD映像文件并创建映像,并且利用映像开启新的虚拟机。
- 上传映像文件
值得注意的是,上传镜像文件的账号需要是新的云账号。
比较明显的,映像文件暂存的地方都是各家的对象存储服务,比如Azure放在存储账号的Blob容器中,AWS放在S3中。
对于Azure我们需要新建一个存储账号.区域选择靠近或新云实例当地为宜,主要服务选择Azure文件存储,性能选择 高级,高级帐户类型 选择 页Blob.*
Azure导入镜像仅支持页Blob。
而后在存储浏览器中创建新容器,在新容器中上传压缩好的VHD映像文件。
由于映像文件过大,使用浏览器上传可能出现内存溢出等造成上传中断,可以选择使用 Microsoft Azure Storage Explorer。
- 创建映像
区域选择与前面相同,VM代系一般选择2代(UEFI的)。
而后使用映像创建VM云实例即可。