我在 Ubuntu 11.10 64 位主机上运行 Oracle VirtualBox,该主机带有 Ubuntu Server 12.04 LTS 64 位客户机,并带有许多快照。主机重新启动后(虚拟机正在运行),虚拟机变得“无法访问”。在四处寻找并制作了几 GB 的备份后,我让它启动到无法找到启动介质的屏幕。您对如何将我的数据(包括最新快照中的数据)传输到新虚拟机或(如果可能)修复此问题有什么建议或解决方案吗?我很乐意提供更多信息。
编辑:我认为我的快照链已损坏/损坏。
编辑2:我无法修复它,我刚刚创建了一个新的虚拟机。
答案1
除非能够返回到工作快照。将您的 VM 启动到实时 CD,看看您是否可以访问其硬盘。如果可以,最坏的情况是使用新服务器构建新 VM,从旧 VM 添加硬盘;然后从硬盘中检索数据。
答案2
- 恢复最新快照
- 编辑硬盘信息并删除所有无法访问的硬盘
- 将您能找到的所有硬盘添加到虚拟机(这使它们可访问)
- 使用恢复 CD 或 Live CD 启动
- 决定如何修复它...通常你需要挂载磁盘、chroot 并安装 grub
例如 #5:
挂载分区
mkdir /mnt/fixme parted -s /dev/sda print (based on output of above, decide which device is your /boot, /, etc., and modify next mount commands accordingly) mount /dev/sda2 /mnt/fixme mount /dev/sda1 /mnt/fixme/boot ... for all your partitions
挂载特殊文件系统
mount | grep "on /proc" mount | grep "on /dev" (based on the above, decide what the "from" and "type" should be; my example below is correct for openSUSE 12.1) mount -t proc proc /mnt/fixme/proc mount -t devtmpfs devtmpfs /mnt/fixme/dev
例如,在 Ubuntu 上,dev 类型为“none”:mount -t none devtmpfs /mnt/fixme/dev
您可能还需要挂载 /sys。我忘了。当您收到错误消息时,您就会知道。
启动 chroot shell(就像启动到你的硬盘一样)(附注:如果你的系统上有另一个磁盘,那么这个功能会很差,比如你把坏了的磁盘插入另一个不是从 CD 启动而是从磁盘启动的 Linux;它会在 mtab 中查找以确定哪个是你的启动盘,并将这些 guid 放在 grub 配置中,而不是修复后的磁盘中,因此你需要使用启动提示符进行恢复,然后稍后再次运行 grub-install)
chroot /mnt/fixme
安装 grub
On openSUSE: update-bootloader On Ubuntu: update-grub2 Alternate, on most systems, but not openSUSE, use both: install stage 1 bootloader: grub-install install guids and stuff in /boot (change cfg file to whatever you find is the correct one [menu.lst on openSUSE, grub.cfg on Ubuntu, etc.]) (if you skip the -o option, it just prints to standard out and doesn't save it in any files) find /boot -name "*grub*" -or -name "*.cfg" -or -name "*menu*" grub-mkconfig -o /boot/grub/grub.cfg