使用StarWind V2V Converter进行虚拟机镜像之间的互相转换

本篇文章是家庭网络的不归路系列的补充文章,主要使用StarWind V2V Converter软件对不同格式的虚拟机镜像进行互相转换。

因为我的主要宿主机都为ESXi,因此本篇文章将会以ESXi为主,如需转换至其他虚拟机格式,可能选项或要求会有所不同

StarWind V2V Converter是一款在Windows下运行的免费软件,在官网只需要填写一个表单即可下载,软件功能还是比较强大,支持VMDK(VMWare Virtual Machine Disk Format)、VHD/VHDX(Microsoft Virtual Hard Disk format)、IMG(Raw Image)、QCOW2(QEMU Copy On Write)4种虚拟机镜像之间的互相转换。

安装

安装过程我就略了,官网下载然后无脑Next就好

使用

运行后,会先让你选择源(source),这里我的源在本地磁盘里,所以我就选择“Local file”了,如果源在ESXi或Hyper-V里,软件还可以通过提供用户名&密码&IP的方式直接连接到远端源

选择“Local file”后“Next”

然后需要选择源文件的位置,这个没啥难度,点一点就好了。注意如果source选择了远端的话这一步会让你输入用户名和密码,以及IP

选择待转换的文件后“Next”

接下来需要选择目标位置(destination location),这里我就转换到本地好了。同理,如果选择了远端源则需要输入用户名和密码,以及IP

选择目标位置后“Next”

这一步需要选择目标格式(destination image format),这里根据我的需要选择了VMDK

选择目标格式后“Next”

接下来需要选择镜像属性(image format option),不同的目标格式选项也不尽相同。这里我就根据我的需要选择了“ESXi Server image”。

注意,VMware Workstations和ESXi Server的VMDK略有一些区别,它们之间可无法相互通用,具体的现象包括文件系统损坏,文件系统异常,系统无法启动等。千万不要选错了。

选择镜像属性后“Next”

这一步会让你选择磁盘模式,支持growable(自增长)和pre-allocated(预分配)两种模式。如果在目标位置那一步选择了本地,则只能转换为pre-allocated模式,如果选择了远端,则可以转换为growable或pre-allocated。这里我就只能选择“ESXi pre-allocated image”了

选择磁盘格式后“Next”

最后一步就是设置转换后的文件名了,没什么问题直接“Convert”就好

设置完转换后文件名直接“Convert”

转换耗时取决于源镜像和目标镜像,通常来讲还是很快的

至此,转换过程已经结束,尽情使用吧!


针对VMDK补充内容

为什么一个源镜像转换完后产生了两个文件?

转换完成的VMDK有两个文件,它们会使用以下命名格式:

  • <image name>.vmdk
  • <image name>-flat.vmdk

默认情况下,如果要将该vmdk导入至ESXi的存储中,必须保证这两个文件同时存在且存放在同一路径,否则无法构成完整的vmdk。

<image name>.vmdk是用于存储该vmdk的各种声明信息,可以通过文本编辑工具来打开查看,具体内容我就不展开了。

注意这里记录了“虚拟磁盘”的文件名,如果人为修改了虚拟磁盘文件名的话,这里也要一并修改

而<image name>-flat.vmdk才是真正广义上的“虚拟磁盘”,切记不要随便编辑。

为什么重命名vmdk文件后虚拟机无法正常启动或报找不到磁盘文件?

问题就出在vmdk的声明文件,即<image name>.vmdk,该文件记录了虚拟磁盘的文件名。如果你只修改了<image naem>-flat.vmdk的文件名称,但未同步更新<image-name>.vmdk的声明内容的话,是无济于事的。

解决办法也很简单,如果你想野路子一点:看上面那张图,把引号内的文件名改成实际文件名即可。如果你想优雅一点:则需要将文件导入至ESXi,并通过SSH登陆至对应主机,使用vmkfstools进行重命名,具体内容就不展开了。

vmkfstools -E –renamevirtualdisk srcDisk

注意:操作vmdk前务必将虚拟机停机并做好备份,如果该文件已经投放到生产环境当中使用,不建议修改虚拟磁盘名称,除非你知道自己在做什么。

1 个评论
来吐个槽(ノ*・ω・)ノ)