我有一个过时的 Linux 应用服务器正在运行,我想将其迁移到具有更高规格的 KVM 虚拟服务器。
我无法物理访问机器本身或其硬盘。
我只能通过网络访问服务器。
如果可以的话,我已经在服务器上安装了一个空的备用硬盘。这个第二硬盘大约是数据所在硬盘的三倍大。
请询问您可能需要的任何其他详细信息。
答案1
假设您没有远程控制台访问权限,或者通过一些糟糕的、可怕的、无用的 Java 小程序访问:
- ssh 到远程系统并关闭尽可能多的服务。基本上除了 ssh 服务器本身之外的所有服务。
从本地系统,将正在运行的磁盘映像的副本捕获回本地系统:
ssh [email protected] "dd if=/dev/sda bs=1024k" > p2v.img
等待几个小时。根据硬盘大小和可用带宽,这可能需要很长时间。
您最终将得到一个文件
p2v.img
。将其作为原始磁盘映像安装到 KVM 虚拟机fsck
,因为会有错误。
自从你做有远程控制台访问服务器,我会做这样的事情:
- 从远程控制台,将系统置于单用户模式(
init 1
以 root 身份,或使用1
添加到启动命令行重新启动)。 - 手动启动网络,例如使用适当的
ifconfig
和route
命令。 将其 P2V 到远程虚拟机管理程序(或存储服务器):
dd if=/dev/sda bs=1024k | ssh [email protected] "cat > /path/to/p2v.img"
创建一个新的 KVM 虚拟机作为
p2v.img
磁盘,启动它并进行任何必要的更改。
这virt-v2v该工具还可以将 Linux 服务器 P2V 到 KVM 虚拟机。
答案2
所有主流虚拟机管理程序都具有原生 P2V 工具。选择一个虚拟机管理程序并使用其工具。
答案3
对我有用的命令行:
dd if=/dev/sda1 | (ssh [email protected] of=/some-path-on-remote/file.img )
答案4
我写了一个详细的分步说明回答我如何解决与此问题非常相似的挑战:将正在运行的 Linux 系统转变为另一台机器上的 KVM 实例。我希望这也能为这个问题提供一个有用的答案。
答案的目标:获取P
运行实时生产的物理 Linux 节点并对其进行虚拟化。无需创建和分配多 TB 磁盘,也不必在V
客户机中使用 md raid,因为目标虚拟机管理程序 (Proxmox 5) 使用了 ZoL/ZFS。还希望减少正在运行的P
节点上的停机/重启。