当前位置: 首页>>技术教程>>正文


从虚拟机(VM)迁移到物理系统

,

问题描述

又名:如何将.vdi或.vmdk转换为物理磁盘上的实际安装?

将虚拟机安装的Ubuntu迁移到物理机器上可行吗?如果可能的话,这将是多么困难,我需要采取哪些步骤来为移徙做准备。

我想在虚拟机上做一些测试,如果不能将系统迁移到物理硬件而不是重新安装所有的东西。这可能吗?

最佳解决方法

是的,这是可能的。这并不难,只需要一段时间,Ubuntu LiveCD,sticky-back-plastic和一个外部USB磁盘(如果您没有多个内置磁盘)。

预备步骤:将磁盘转换为有用的东西

VMWare和VirtualBox(以及其他)都使用不适合直接写入磁盘的磁盘格式。你可以,但我个人觉得先把它写到中间的标准图像会更方便。您可以从当前系统执行此操作,而无需启动到LiveCD。

  • 加载一个终端并进入:

    cd /media/wherever-the-image-is/
    
    # for VMWare
    sudo apt-get install qemu-kvm
    qemu-img convert your-vmware-disk.vmdk -O raw disk.img
    
    # For VirtualBox
    VBoxManage internalcommands converttoraw your-virtualbox-disk.vdi /dev/sdX
    
  • /media/wherever-the-image-is/disk.img移动到您不想写入的地方。如果您打算将其写入当前正在使用的磁盘,则需要将其保存在单独的内部磁盘上,或者worst-comes-to-最差的外部磁盘。

  • 以下说明假定您已将其移至/media/dave/disk.img(dave是外部USB磁盘)

  • 在你认真写作之前,确保你有备份。这是一个陈词滥调,但一个错字,并有一个非常现实的可能性,你会破坏你的系统。假设事情会出错并做好准备。如果您有存储数据的地方,CloneZilla可以帮助您进行整个磁盘备份。

将图像写入其自己的磁盘

你会想要做这样的事情。这假定你要覆盖整个磁盘。如果您想要安装alongside-Windows,请不要遵循这些说明!跳到子弹后面。

  • 启动到Ubuntu Live CD并点击Try Ubuntu。

  • 安装您的vmdk映像存储位置(例如,外部USB磁盘为/media/dave)。不要安装你想要写入的地方。

  • 然后我们去工作:

    sudo dd if=/media/dave/disk.img of=/dev/sdX
    

    您想用正确的路径替换sdX到目标磁盘。 sudo密码为空,只需点击返回即可。

  • 然后你可以打开gparted或其他东西,你应该看到你的Ubuntu分区坐在磁盘上。你应该能够扩展它。

将图像写入另一个操作系统旁边的磁盘

这可能是一种完全安全的做事方式。除了您正确安装Ubuntu之外,这个想法非常相似,然后仅通过来自disk.img的文件进行同步。

  • 这次您的LiveCD需要与您的虚拟安装版本相同的Ubuntu版本。启动Live CD,然后再次单击安装。

  • 按照安装程序的要求重新分配您认为合适的内容。大约10分钟后,你会被安装,它会要求你重新启动。不要重新启动。如果你不小心做到了,不要紧,只要确保你回到了LiveCD就可以获得下一条指令。

  • 将你的新安装的分区和外置磁盘装载到disk.img以前的地方(只需在Nautilus中双击它们)。

  • 将您的disk.img ISO挂载到终端中:

    sudo mkdir /media/oldinstall
    sudo mount -o loop /media/dave/disk.img /media/oldinstall
    

    注意 – 创建所需的.img文件后,有时当您尝试将其安装为循环设备时,可能会出现以下错误

    “NTFS签名丢失,无法装入’/dev/loop0’:无效参数设备’/dev/loop0’似乎没有有效的NTFS。”

    .img文件有时会包含主引导记录和分区表,然后才能装载实际分区。因此你需要找出所需分区的偏移量。为此,可以使用分开的工具。举个例子,在这个链接http://ubuntuforums.org/archive/index.php/t-1576011.html中查看sisco311的答案

    所以,如果你确定你的偏移量是’xxx’,那么你可以使用挂载你的分区

    sudo mount -o loop,offset=xxx /media/dave/disk.img /media/oldinstall
    
  • 从那里你可以使用cherry-pick文件,或者使用类似于以下内容复制新安装的Ubuntu上的所有内容:

    sudo rsync /media/oldinstall/ /media/my-new-install/
    
  • 重新启动,你应该迎接你的旧VMWare安装,但在裸机上。如果您遇到讨厌的grub问题,您可以通过going back to Live CD, chrooting and fixing things修复它。

次佳解决方法

也许这不完全是你要求的,但它可能会完成你想要做的事情。

由于所有设置都存储在主目录中,因此您可以将其备份到实际磁盘上的另一个分区。在真实磁盘上安装新的Ubuntu后,只需再次运行备份程序即可完整恢复所有设置的主目录。

您可以使用称为DéjàDup的非常整洁的备份程序。

来自ubuntu软件中心的信息:

DéjàDup是一个简单的备份工具。它隐藏了备份正确方法的复杂性(加密,off-site和常规),并使用重复性作为后端。

特征:

  • 支持本地,远程或云备份位置,例如Amazon S3或Rackspace Cloud Files

  • 安全地加密和压缩数据

  • 增量备份,让您从任何特定的备份中恢复

  • 安排定期备份

  • 很好地集成到您的GNOME桌面

virtualization,ubuntu

你将在不到两个小时内完成!

祝你好运!

第三种解决方法

试试UDPCast

这个想法是将整个vmdk从虚拟机中流出到物理机器,然后写入物理硬盘。

程序概述如下。

既然你有一个vmdk文件,你可能有一个VMWare工作站可供你使用,即使这个vmdk连接的是完整的虚拟机。使用附加的特定vmdk运行虚拟机,但不是使用普通启动,而是使用PartedMagic liveCD启动。

当liveCD启动时,导航到主菜单并找到UDPCast Disk Cloning。它的对话框是self-explanatory(见屏幕截图)

virtualization,ubuntu

选择此虚拟机成为sender后,应选择要广播的驱动器(使用Unix符号,如/dev /sda)。

在启动sender之后,还需要启动receiver。既然你有一个物理硬盘,我假设,你也有一个完整的PC与这个硬盘连接到它。同样的事情在这里:你需要启动liveCD与UDPCast Disk Cloning这次选择receiver以及适当的物理硬盘。

值得注意的是,你应该做出一切必要的安排,让虚拟机和物理硬件之间建立网络连接。如果您的vmdk包含私人数据,您应该采取必要的预防措施,因为其内容将通过您的网络进行有效流式传输。另一件事是你的目标硬盘的容量应该不会少于你的虚拟硬盘的容量。很明显,但也值得注意的是,您的映像在您的目标硬盘上布置了one-to-one,您需要使用gparted或类似的软件来执行适当的操作,以便使用更大容量的新硬盘。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/516.html,未经允许,请勿转载。