又名:如何将 .vdi 或 .vmdk 转换为物理磁盘上的真实安装?
将虚拟机中安装的 Ubuntu 迁移到物理机上是否可行?如果可能,完成这项工作有多困难?我需要采取哪些步骤来准备迁移。
我想在虚拟机上进行一些测试,如果可行,则将该系统迁移到物理硬件,而不是重新安装所有内容。这可能吗?
答案1
是的,有可能。甚至不是那很难,它只需要一些时间、一个 Ubuntu LiveCD、背面带胶的塑料和一个外部 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 clonehd your-virtualbox-disk.vdi disk.img --format RAW
移动
/media/wherever-the-image-is/disk.img
到您不打算写入的位置。如果您打算将其写入当前所在的磁盘,则需要将其粘贴到单独的内部磁盘上,或者最坏的情况下粘贴到外部磁盘上。以下说明假设您已将其移动到
/media/dave/disk.img
(dave
是外部 USB 磁盘)在你开始任何严肃的写作之前,确保你有备份。这是一句老生常谈的话,但只要打错一个字,你的系统就很有可能被毁掉。假设事情会出错,并做好准备。如果你有地方存储这些数据,CloneZilla 可以帮助你备份整个磁盘。
将图像写入其自己的磁盘
您一定想做这样的事。这假设您将覆盖整个磁盘。如果您想在 Windows 上进行安装,请不要遵循这些说明!跳到项目符号后面。
启动 Ubuntu Live CD 并单击“试用 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 文件有时包含主引导记录和分区表,位于您可能要挂载的实际分区之前。因此,您需要找出所需分区的偏移量。为此,可以使用分开工具。例如,请查看此链接中 sisco311 的回答 http://ubuntuforums.org/archive/index.php/t-1576011.html
因此,如果你已确定偏移量为“xxx”,那么你可以使用以下方式挂载分区
sudo mount -o loop,offset=xxx /media/dave/disk.img /media/oldinstall
从那里你可以挑选文件或者将所有内容复制到新的 Ubuntu 安装上,使用以下命令:
sudo rsync /media/oldinstall/ /media/my-new-install/
重新启动,然后你应该您将看到旧的 VMWare 安装,但只是在裸机上。如果您遇到严重的 grub 问题,您可以通过以下方式修复它:回到 Live CD,chrooting 并修复问题。
答案2
或许这并不完全是您所要求的,但它或许能够完成您想要做的事情。
由于您的所有设置都存储在主目录中,因此您只需将其备份到真实磁盘上的另一个分区即可。在真实磁盘上安装全新的 Ubuntu 后,只需再次运行备份程序即可恢复您的主目录,所有设置均完好无损。
你可以使用一个非常好用的备份程序,叫做重复。
来自 Ubuntu 软件中心的信息:
Déjà Dup 是一款简单的备份工具。它隐藏了以正确方式(加密、异地和常规)备份的复杂性,并使用 duplicity 作为后端。
特征:
支持本地、远程或云备份位置,例如 Amazon S3 或 Rackspace Cloud Files
安全地加密和压缩您的数据
增量备份,让你可以从任何特定备份中恢复
安排定期备份
完美融入你的 GNOME 桌面
您将在不到两个小时内完成!
祝你好运!
答案3
尝试UDP广播
这个想法是将整个 vmdk 从虚拟机传输到物理机,然后将其写入物理硬盘。
程序概述如下。
由于您有一个 vmdk 文件,因此您可能有一个 VMWare Workstation 可供使用,甚至有完整的虚拟机与此 vmdk 连接。运行虚拟机,连接此特定的 vmdk,但不要使用普通启动,而是使用 PartedMagic liveCD 进行启动。
当 liveCD 启动后,导航到主菜单并找到UDPCast Disk Cloning
。它的对话框是不言自明的(见屏幕截图)
选择此虚拟机作为后sender
,您应该选择要广播的驱动器(使用 Unix 表示法,如 /dev/sda)。
启动后sender
,您还需要启动receiver
。由于您有一个物理硬盘,我假设您还有一台完整的 PC,该 PC 上连接着这个硬盘。这里也是一样:您需要启动 liveCD,UDPCast Disk Cloning
选择receiver
此时间以及适当的物理硬盘。
值得注意的是,您应该做好所有必要的安排,以确保虚拟机和物理硬件之间建立网络连接。如果您的 vmdk 包含私有数据,则应采取必要的预防措施,因为其内容将有效地通过网络传输。另一件事是,您的目标硬盘的存储容量不应小于您的 vmdk 的容量。很明显,但也值得注意的是,您的映像在目标硬盘上是一对一布局的,您需要使用 gparted 或类似程序执行适当的操作,以利用新硬盘的更大容量。
答案4
如果您将新的物理磁盘连接到虚拟机虚拟磁盘所在的机器,则可以将 VDI 转换为物理磁盘而无需中间转换,这可能会节省大量时间和磁盘空间。这是假设您的物理磁盘等于或大于虚拟磁盘的最大大小。就我而言,目标是将 VDI 转换为 ZFS zvol,但对于任何块设备,方法应该相同。
首先创建一个指向您的块设备的 VMDK 文件:
VBoxManage internalcommands createrawvmdk -filename physical.vmdk -rawdisk /dev/sdX
然后(关闭 VM!)您可以将 VDI 克隆到 VMDK:
VBoxManage clonemedium --existing virtual.vdi physical.vmdk
这需要一段时间... 完成后,您可以删除 VMDK 文件,因为它仅用作 VirtualBox 查找物理设备的指针。
在我的情况下,新的 zvol 与虚拟磁盘的大小完全相同。鉴于您的物理磁盘可能不同,您需要采用某种分区大小调整机制来填充整个磁盘。也许是 Gparted 之类的。您应该能够在仍连接到 VM 计算机时将其指向物理 /dev/sdX 设备,这样您就不必求助于物理主机的启动 CD。
调整大小完成后,将驱动器弹出到您的物理机器中,祈祷好运,然后启动电源。
如果您想继续在 VirtualBox 中使用物理驱动器,请保留 VMDK,并使用VBoxManage storageattach
其连接到 VM。