如果我坚持使用标准的、得到良好支持的 VM 磁盘映像之一(如原始映像、VDI、VMDK 等),Linux VM 通常是否易于在 VM 环境之间移动?例如,在 VirtualBox 和 KVM 之间,或 VMWare 和 Xen 之间?我在这里谈论的是完全虚拟化的环境,而不是需要客户操作系统支持的半虚拟化。
在我看来,现在大多数 Linux 发行版中的内核都配置为......保持开放的心态并在启动时检测事物,因此您不会遇到将 Windows VM 从一个虚拟化系统移动到另一个虚拟化系统时出现的问题(我特别想到了 Windows 存在的 HAL 问题,例如 ACPI 与非 ACPI;例如,当将 Windows VM 从 VMWare 移动到 VirtualBox 时,我也遇到过 Windows VM 通常表现异常的情况)。
我正在寻找一个通用答案,但如果有帮助的话,具体来说,我将主要使用 Ubuntu 8.04 LTS 和 10.04 LTS 客户机来执行此操作。但这可能会改变。
答案1
Linux 能够根据需要为其硬件平台加载模块(驱动程序)。只要您的内核能够找到适合您硬件的模块,您在哪个平台上启动 VM 都无关紧要,但有几点需要注意:
- 对于所有虚拟机管理程序类型,请使用通用硬件:使用 IDE 磁盘(不是 SCSI,KVM 用 SCSI 磁盘很烂)并使用 e1000 网络适配器。为了便于移植,请远离 KVM 的 vda 磁盘或 VMware vmxnet。这并非总是可行的(VMware 默认使用 SCSI),但它会有所帮助。
- 确保在新平台上迁移的虚拟机使用与旧平台上相同的 MAC 地址
- 对你的磁盘使用 LVM:引导加载程序将找到你的内核并向其提供你的 initrd;如果你使用 LVM,你就不必担心磁盘丢失(无论如何,不用担心)。
- 如果可能的话,保留你的网络配置为 DHCP
- 不要安装 VMwareTools 和类似工具
- 生成一个 initrd 并尝试在其中放入您在其他平台上所需的尽可能多的驱动程序。这将在您尝试从 KVM(IDE 磁盘)转到 VMware(SCSI 磁盘)时节省您的时间,并且您的 initrd 中已经支持 VMware 的 LSI Logic SCSCI 控制器。
答案2
我将 Linux VM 从 VMWare 移到 xen,再移到 openvz,再移到 kvm,然后再移回,没有遇到无法通过修改 /etc/ 解决的问题模块有一点,只要谷歌一下就能找到。
Windows 则不同。我已成功将 Win2003 服务器 VM 从 VMWare 移至 xen,但并非没有经过开胸手术(在 Linux 中安装映像并手动编辑引导加载程序配置)。我还成功从 xen 移至 kvm,没有任何麻烦,但这是意料之中的,因为它们都在 qemu 下运行。
答案3
我不是专业人士,但我经常在 VMware 虚拟机中使用相同的 VMDK 并将其应用到 VirtualBox 虚拟机中,因此我认为虚拟磁盘之间存在一些标准。我从未尝试过 Xen 或其他解决方案。