我正在尝试将虚拟机转换为物理专用服务器。
我只能访问虚拟机操作系统 (CentOS 6.7)。我无法访问虚拟机管理程序。
我想使用dd
命令转储虚拟机磁盘,然后将该映像写入dd
专用服务器的硬盘。为此,我可能需要从 Live CD 启动服务器。
我的问题是:这样可行吗?最好使用以下命令将 / 中的所有文件和目录从一台服务器复制到另一台服务器rsync
?
答案1
您应该在应用程序级别处理该迁移,以便您可以从头开始使用新服务器,并且不会留下任何迁移垃圾(例如虚拟机管理程序工具和驱动程序)。
首先列出服务器当前托管的所有内容,然后使用特定于每个应用程序的迁移程序将这些角色分别迁移到新服务器上,并为每个应用程序制定回滚计划和测试程序。然后,停用旧服务器。
答案2
我会在物理机上安装 Cent OS。这样可以减少 rsync 时间,允许您为物理机设置权限和 grub。然后从 VM 进行 rsync。我认为在这种情况下没有必要进行实时启动。您可能不想 rsync 所有 root,因此您需要一些排除项。排除的内容会因您的环境而异。此站点有一个很好的示例排除列表供您查看。
http://www.rackspace.com/knowledge_center/article/migrating-a-linux-server-from-the-command-line-0
您还可以考虑根据您的网络和服务器的大小来限制 rsync。
因此从虚拟机运行
sudo rsync -a --bwlimit=5000 --delete -exclude-from Excludefile.txt / root@physicalserver:/
-a 保留权限和时间戳。--delete 删除物理服务器上但不在虚拟机上的所有文件。--bwlimit 限制 rsync。Exclude-from 排除在排除文件中找到的模式。
潜在问题
如果您使用 ACL,它们将不会在 rsync 期间传输。但是,如果需要,您可以进行导出和导入。
如果您在 fstab 中使用磁盘 ID,并且覆盖了新的 fstab,则您的分区将无法挂载。如果您不确定,只需从 rsync 中排除 fstab 文件,然后在文件中添加任何所需的行。
就像 fstab 一样,您的网络配置脚本需要被排除或查看是否存在潜在问题。
还有其他方法也可以同样有效地解决此问题,但这种方法对我来说效果很好。
答案3
由于物理服务器的硬件会有所不同,因此我不建议克隆磁盘。我建议将相同版本的 CentOS 安装到物理服务器,然后复制相关文件夹/目录。复制 /etc 和其他系统文件夹时要有选择性。
答案4
简单的 dd 不起作用 - 客户机没有正确的启动分区。而且 dd 很慢。手动方式 - 在系统上安装最小的 centos 6.7 - 确保使用单独的 /boot 分区,并预先创建所有其他分区(包括 fs,但不一定是挂载点)。
现在 livecd 你的最小 centos,并使用 nc 和 tar 一次一个分区地覆盖除 /boot 分区之外的所有内容。这也比 dd 快得多。
物理机器上的 nc/tar 调用示例:
nc -l 1234 | tar xvf -
在虚拟方面:
tar cvjf - . | nc <physical ip> 1234
对除启动之外的每个分区重复此操作。
Eric 的警告此处也请保留 - 您可能需要修改任何硬件特定文件,包括网络、fstab 和 udev 规则。您必须注意 modprobe,因为 paravirt 网络驱动程序与其实际对应者不同。
其他选择-在网上搜索 v2p 解决方案。