zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Vmware Esxi虚拟机转微软云----vmdk转vhd

2023-09-14 09:02:05 时间

1. 前言

公司内有几台原先用在Esxi环境下的Centos和Rhel的虚机要转去微软云,微软云也没有像阿里那样的迁移工具做转换.需要根据手册先对系统进行一些简单的设置.详见:https://docs.azure.cn/zh-cn/virtual-machines/linux/redhat-create-upload-vhd#vmware
通过以上设置后,关闭服务器即可开始后续工作.

2. 下载Exsi虚拟机文件

通过WINSCP等工具ssh到服务器上下载磁盘对应的vmdk文件.
此时你会发现一般一个硬盘是由2个文件组成的,即:虚拟机名.vmdk,虚拟机名-flat.vmdk,如果有更多的硬盘那么就是虚拟机名_1.vmdk,虚拟机名_1.vmdk,虚拟机名_2.vmdk,虚拟机名_2.vmdk.具体可以右键点编辑配置查看这里就不罗列了.
winscp连上Esxi主机后(千万注意是主机不是Vsphere),进入/vmfs/volumes/即可看到虚拟机的目录.
在这里插入图片描述

3. 拼接vmdk文件

拼接vmdk需要用到工具vmware-vdiskmanager.exe.这个工具Vmware Workstation各大版本都会自带.如果服务器上没有安装直接从其他地方复制个过来就可以了.不用安装.
在这里插入图片描述

此时我们的源文件有2个,虚拟机.vmdk和虚拟机-flat.vmdk

vmware-vdiskmanager.exe -r 虚拟机.vmdk -t 0 新文件.vmdk

这里不用管虚拟机-flat.vmdk那个文件,只要保证虚拟机.vmdk和虚拟机-flat.vmdk都在同一个目录即可

在这里插入图片描述

4. 将vmdk转换成raw

这里需要使用工具qemu-img
如果没有那么可以使用yum 安装base源就有

yum install -y qemu-img

转换命令如下:
root.vmdk是刚才合并的那个文件
rhel7.3.raw 是转换后的文件

qemu-img convert -f vmdk -O raw root.vmdk rhel7.3.raw

在这里插入图片描述

5. 将raw转换成vhd

5.1 转换前准备

微软云需要确保原始映像大小为 1 MB。 如果不是,请将大小四舍五入,使其等于 1 MB
执行下面语句:
需要注意将2处的rhel7.3.raw替换成自己的镜像名

MB=$((1024*1024))
size=$(qemu-img info -f raw --output json "rhel7.3.raw" | \
  gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
rounded_size=$((($size/$MB + 1)*$MB))
qemu-img resize rhel7.3.raw $rounded_size

5.2 开始转换

查看qemu-img版本

qemu-img |grep -w version|awk -F '[ ,]' '{print $3}'

版本小于2.6

qemu-img convert -f raw -o subformat=fixed -O vpc rhel7.3.raw rhel7.3.vhd

2.6+

qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd

在这里插入图片描述
至此已将vmdk转换成了vhd,上传微软云即可.
说实话微软云还是略显麻烦,文档写的也上上蹿下跳.使用感受不如腾讯和阿里.