我们有一个专用的裸机 debian 10 服务器,它运行一些很难设置的应用程序。现在该服务器需要迁移到基于 KVM 的虚拟机。我的计划不是再次设置这些应用程序(这将花费大量时间并且很麻烦),而是找到一种方法以某种方式将专用服务器的所有内容传输/复制到 KVM 虚拟机中。
我最初的想法是创建一个包含所有目录/
(除了/boot
)下的内容的 tarball,然后将它们粘贴到 KVM 中,看看会发生什么。这是个好主意吗?
我认为使用dd
复制整个sda
磁盘并不是一个好主意,因为某些数据在复制过程中可能会变得不一致,而且事实上,磁盘比目标上的空间大得多(实际使用的空间要少得多) KVM主机。
我们无法物理访问专用裸机服务器。
谁能给我一些关于如何完成这项工作的好建议?如何将专用裸机服务器“变身”为基于KVM的虚拟机?
答案1
像 Clonezilla 这样的东西在这里会有所帮助。基本上
- 启动 Clonezilla,因此实时系统的磁盘未被使用
- 让它为一些临时媒体创建完整的图像
- 在您方便的时候,将映像复制到您的 VM 环境
- 从连接到干净虚拟机的虚拟 USB 启动 Clonezilla
- 让它恢复完整的图像
此时,您已经有了一个精确的副本,虽然它不足以从物理到虚拟的过渡,但这将是一个好的开始。
您需要启动虚拟机(可能需要使用 SysrescueCD 等救援磁盘),并修复对以前物理设备的名称引用,例如磁盘设备名称、网卡、IP 地址以及任何其他特定于硬件的内容。
这不是一个简单的过程,但它肯定是可能的。
答案2
- 很难设置...我已经可以开始警告,在这种情况下,通常意味着您在将所有内容移动到另一台服务器时至少需要进行一些配置更改。
- 创建内容的 tarball和走着瞧吧...将会发生的是问题、问题和更多问题,因为它是一个完全不同的架构。仅举一件小事为例(但显然还有更多方法:网卡名称)
- 我会做什么后您最终遇到这种情况的方法是再次安装应用程序、
rsync
应用程序的配置文件并再次进行必要的更改 - 我会做什么真的要做的就是通过在容器中尽可能多地运行来确保您不会陷入这种情况,因为容器更容易在系统之间传输
答案3
...看看会发生什么。这是个好主意吗?
当然!只要您在成功之前不擦除原始磁盘,您就不会损失任何东西(除了时间)。
几年前我就这么做了。我拿了一台裸机,并将dd
磁盘转换为原始虚拟磁盘。我想我能够用 QEMU/KVM 很好地启动。使用包qemu-img
中的qemu-utils
内容,我还可以将原始磁盘映像转换为其他格式。它支持 KVMqcow2
并由qed
KVM 使用。
唯一的技巧是在足够大的磁盘上执行此操作,以容纳另一个磁盘的映像。
我想我当时是用 Arch Linux 来做这件事的。并不是所有的东西都是开箱即用的,我发现我需要mkinitcpio -p linux
在启动后运行来为新的虚拟硬件重新配置内核。如果 Debian 上需要这样做,您可能会使用update-initramfs -u
.
抱歉,我不记得更多细节了,但我知道这很有可能,而且比你想象的要容易得多。
目前我们正在使用 ESXI 虚拟机管理程序。它配备了一个超级有用的工具,可以将任何网络连接的 *nix 机器(裸机或非裸机)克隆到虚拟机中。它所需要的只是通过 ssh 进行 root 访问。