您是否决定从 Oracle 切换 VirtualBox 到基于内核的虚拟机? 伟大的! 本分步指南解释了如何将 Virtualbox VM 迁移到 Linux 中的 KVM VM。
您可能运行了一些重要的访客机器 VirtualBox. 您可以轻松地将现有的 Virtualbox 机器转换为 KVM,而不是创建具有相同配置的新 KVM 来宾,如此处所述。
内容
在 Linux 中将 Virtualbox VM 迁移到 KVM VM
首先,关闭所有正在运行的虚拟机 VirtualBox.
出于本指南的目的,我将使用 CentOS 和 FreeBSD 托管在的虚拟机 VirtualBox.
您可能已经知道,KVM 虚拟机的默认磁盘映像格式是 .qcow2
和 Virtualbox VM 是 .vdi
.
我们可以通过两种方式将 vdi 磁盘映像文件转换为 qcow2。 我们可以直接转换 vdi
图像到 qcow2
格式。
如果由于任何原因它不起作用,我们可以先转换 vdi
格式为原始格式,然后将原始格式转换为 qcow2
.
1.vdi图像格式转qcow2图像格式
让我向您展示我使用创建的 CentOS VM 的磁盘映像类型 VirtualBox.
$ ls CentOS 8 Server/
示例输出:
CentOS 8 Server.vbox CentOS 8 Server.vbox-prev CentOS 8 Server.vdi Logs
您可能已经注意到,CentOS 虚拟机磁盘映像的文件类型是 .vdi. 对于那些想知道的人来说,VDI 是 VirtualBox. VirtualBox 当我们创建一个新的虚拟机时默认使用这种格式。
这是 FreeBSD 磁盘映像的文件类型:
$ ls FreeBSD 12/ FreeBSD-12.0-RELEASE-amd64.vhd freebsd12.qcow2 FreeBSD 12.vbox FreeBSD 12.vbox-prev Logs
这里,freebsd 磁盘镜像文件类型是 .vhd. VHD 是 Microsoft Virtual PC 的本机格式。
我创建了两个虚拟机 VirtualBox. 但是使用了 Virtualbox .vdi
CentOS 格式和 .vhd
FreeBSD 格式。
VDI 和 VHD 格式都得到了很好的支持 VirtualBox.并且两种图像类型都可以轻松转换为qcow2格式。
现在让我们回到主题 – 如何使用以下命令将 Virtualbox 机器磁盘映像转换为 KVM 支持的磁盘映像类型 "qemu-img"
命令?
嗯,这很容易! 这 qemu-img
命令用于将虚拟机磁盘映像转换为各种不同的格式,包括 qcow2
, raw
, vdi
, vhd
, 和 vmdk
.
转换一个 vdi
图像到 qcow2
图像使用 qemu-img
命令,运行:
$ qemu-img convert CentOS 8 Server/CentOS 8 Server.vdi -O qcow2 centos8.qcow2
上面的命令将转换给定的 vdi
归档到 qcow2
格式。
在这里,我们使用了 -O qcow2
明确指定输出格式。 当然,您不必明确指定输出格式,只需指定输入和输出格式,如下所示:
$ qemu-img convert CentOS 8 Server/CentOS 8 Server.vdi centos8.qcow2
但是,它会创建更大尺寸的图像。
同样,您可以将 vhd
图像文件到 qcow2
图像使用以下命令:
$ qemu-img convert FreeBSD 12/FreeBSD-12.0-RELEASE-amd64.vhd -O qcow2 freebsd12.qcow2
这就是我们如何将 Virtualbox 虚拟机迁移到 KVM 虚拟机。
现在前往 “从 Qcow2 镜像创建 KVM 虚拟机” 下面给出的部分了解如何使用 Qcow2 映像创建新的 KVM 虚拟机。
以防万一上述方法不起作用(这是非常不可能的),您可以使用以下方法进行转换 vdi
图像 qcow2
图片。
2.先将vdi转成raw图像格式再转qcow2图像格式
首先,使用以下命令找到可用的 virtualbox 磁盘映像及其位置的列表:
$ vboxmanage list hdds
或者,
$ VBoxManage list hdds
示例输出:
UUID: ecfb6d5c-aa10-4ffc-b40c-b871f0404da8 Parent UUID: base State: created Type: normal (base) Location: /home/sk/VirtualBox VMs/CentOS 8 Server/CentOS 8 Server.vdi Storage format: VDI Capacity: 20480 MBytes Encryption: disabled UUID: 34a5709f-188c-4040-98f9-6093628c3d88 Parent UUID: base State: created Type: normal (base) Location: /home/sk/VirtualBox VMs/Ubuntu 20.04 Server/Ubuntu 20.04 Server.vdi Storage format: VDI Capacity: 20480 MBytes Encryption: disabled
如您所见,我有两个 virtualbox VM。
现在我将使用 CentOS 8 机器的磁盘映像转换为原始磁盘格式 vboxmanage
命令:
$ vboxmanage clonehd --format RAW /home/sk/VirtualBox VMs/CentOS 8 Server/CentOS 8 Server.vdi CentOS_8_Server.img
或者,
$ VBoxManage clonehd --format RAW /home/sk/VirtualBox VMs/CentOS 8 Server/CentOS 8 Server.vdi CentOS_8_Server.img
示例输出:
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Clone medium created in format 'RAW'. UUID: afff3db8-b460-4f68-9c02-0f5d0d766c8e
RAW 图像是 太大 使用。 就我而言,RAW 图像比 Qcow2 图像大十倍。
$ du -h CentOS_8_Server.img 21G CentOS_8_Server.img
那么让我们使用 qemu-img 命令将 RAW 图像格式转换为 KVM 磁盘格式,即压缩的 qcow2:
$ qemu-img convert -f raw CentOS_8_Server.img -O qcow2 CentOS_8_Server.qcow2
完毕! 我们已经将 Virtualbox 磁盘映像格式 VDI 转换为 KVM 映像格式 qcow2。
检查 Qcow2 图像的大小:
$ du -h CentOS_8_Server.qcow2 2.1G CentOS_8_Server.qcow2
看? Qcow2 比 RAW 图像小得多。
3.从Qcow2镜像创建KVM虚拟机
您现在可以通过从命令行导入虚拟磁盘映像文件或使用任何图形 KVM 管理应用程序来创建新的 KVM 实例,例如 虚拟机管理器 或者 座舱 网络控制台。
有关更多详细信息,请参阅以下指南:
- 如何使用 Qcow2 镜像创建 KVM 虚拟机
故障排除
有时您可能在没有从 Virtualbox 媒体管理器中正确释放虚拟磁盘的情况下删除了它。
当您尝试从同一个 VDI 文件创建新的 RAM 映像时,您将收到类似 – "hard disk with UUID already exists"
.
要解决此问题,您必须从 Virtualbox 释放虚拟磁盘,然后再次尝试转换映像。 请参阅以下指南以了解如何执行此操作:
- 修复“UUID 硬盘已存在”问题 VirtualBox
结论
在本指南中,我们已经了解了如何将 Virtualbox VM 迁移到 Linux 中的 KVM VM。 我们还研究了如何通过导入 Qcow2 图像文件来创建新的 KVM 实例。
将 Virtualbox VM 转换为 KVM VMHypervisor 基于内核的虚拟机 KVMKVM 迁移Linux将 Virtualbox VM 迁移到 KVM VMVirtualBoxVirtualization