克隆正在运行的虚拟机的磁盘并在 VirtualBox 上运行它

克隆正在运行的虚拟机的磁盘并在 VirtualBox 上运行它

我处于以下情况:

我需要通过 SSH“克隆”正在运行的 CentOS 虚拟机的磁盘(sda、sdb)(我按照以下步骤完成了此步骤本指南)并将它们部署在 VirtualBox 之类的东西上。

我尝试过,但不幸的是,在获取 sda 和 sdb 的原始映像并使用 VBoxManage 将它们转换为 VHD 后,我将它们添加到新的 VM 中,启动时出现“无可启动媒体”。

您有什么建议吗?

我尝试使用 CentOS live CD 进行自动恢复,但没有找到任何可恢复磁盘;我还尝试使用 fdisk 获取任何信息,但不幸的是它似乎无法读取任何分区......

非常感谢您的帮助!

答案1

如果您可以从 Live CD 启动进行网络访问,您应该能够执行如下操作:

  1. 在 VirtualBox VM 上运行的 Live CD 中获取 root shell

  2. 根据需要对虚拟磁盘进行分区和格式化。如果 LVM 工具位于 Live CD 上,您甚至可以使用 LVM。

  3. 跑步mkdir -p /target

  4. 将您想要的 rootfs 安装在 /target 上,为任何安装点创建目录(例如 /target/home、/target/var 等)并安装适当的分区。

  5. cd /target

  6. rsync -a --exclude proc/** --exclude sys/** --exclude dev/** root@remoteVM:/ ./

(该 rsync 命令可能需要微调。使用--dry-run选项运行,直到它正确为止)

  1. for i in dev dev/pts proc sys ; do mount -o bind /$i /target/$i ; done

  2. chroot /target

  3. /etc/fstab并根据需要进行编辑/etc/default/grub以适应新系统。

  4. update-grub

  5. exit

  6. 卸载 /target 及其下的所有内容(包括上面的绑定挂载)

  7. 重启。

或者,rsync您可以使用tar来备份远程虚拟机的文件系统,并将 tar.gz 文件放在可以从 Live CD 中获取的位置。从备份中排除 /proc、/dev 和 /sys 目录。

注意:如果您正在运行 mysql 或 postgres 或任何写入 db 文件或其他非纯文本文件的东西,您需要在rsync.运行数据库备份将所有数据库转储到文本也是一个好主意。

在 rsync 期间写入纯文本文件(例如日志文件)并没有那么危险,如果您不介意丢失运行 rsync 后发生的任何日志条目......至少不会有任何文件损坏可能的。

systemd 的日志是二进制的。因此,如果您正在运行 systemd,则需要关闭日志以避免损坏。我不知道在不关闭系统的情况下这是否可能。

相关内容