如何使用 Virt-rescue 来拯救虚拟机

这个简短的指南描述了什么是 虚拟救援,如何在 Linux 操作系统中使用 Virt-rescue 命令行实用程序拯救虚拟机。

内容

  1. 什么是虚拟救援?
  2. 使用 Virt-rescue 来拯救虚拟机
    1. 以只读模式启动 VM
    2. 为 VM 启用网络访问

什么是虚拟救援?

虚拟救援 就像急救 CD,但仅适用于虚拟机。 它提供了一个简单的救援外壳和一些恢复工具来检查和纠正虚拟机或磁盘映像中的问题。

请注意,Virt-rescue 与 guestfish 不同。 Guestfish 是一个交互式 shell,用于在虚拟机和磁盘映像中进行编辑和更改。

相比之下,Virt-rescue 尤其适用于抢救启动失败的虚拟机。 如果 VM 无法启动,您可以简单地使用 virt-rescue 在 VM 或磁盘映像上启动救援外壳,并尝试使用标准 Linux 命令修复它。

您可以在任何磁盘映像文件或设备上使用 virt-rescue,而不仅仅是虚拟机。 例如,它可以用于 USB 驱动器、SD 卡和硬盘。 它不需要 root 权限,除非您需要 root 来打开磁盘映像。

虚拟救援是其中的一部分 libguestfs 它提供了许多命令行实用程序来访问和修改虚拟机磁盘映像。

使用 Virt-rescue 来拯救虚拟机

确保虚拟机已关闭。 不得在任何实时虚拟机或磁盘映像上运行救援 shell。

要在有问题的虚拟机上运行救援 shell,请执行以下操作:

$ virt-rescue -d centos8-uefi -i

代替 "centos8-uefi" 使用您的虚拟机名称。 您可以使用以下命令找到可用 VM 的列表 "virsh list --all" 命令。

您还可以直接在任何磁盘映像上运行救援 shell,如下所示:

$ virt-rescue -a CentOS_8_Server.img -i

这里, -i (--inspector) 标志用于自动挂载虚拟机的文件系统。 如果不使用它,则必须手动将虚拟机的文件系统挂载到一个名为的空目录中 /sysroot.

您现在将进入交互式 bash shell,您可以在其中使用许多普通的 Linux 命令来拯救虚拟机。

[...] Welcome to virt-rescue, the libguestfs rescue shell.  Note: The contents of / (root) are the rescue appliance. Use 'cd /sysroot' or 'chroot /sysroot' to see guest filesystems.  groups: cannot find name for group ID 0 ><rescue>  The virt-rescue escape key is ‘^]’.  Type ‘^] h’ for help.
libguestfs 救援外壳

从救援外壳,您可以开始使用传统的 Linux 命令来修复 VM。

如上所述,来宾机器的文件系统安装在 /sysroot 目录。

你可以验证它 "ls" 命令:

><rescue> ls /sysroot/ bin   dev  home  lib64  mnt  proc  run   srv  tmp  var boot  etc  lib   media  opt  root  sbin  sys  usr

首先 chroot 到 /sysroot 目录:

><rescue> chroot /sysroot

要退出救援外壳,请键入 exit 然后按回车键或按 Ctrl+d.

以只读模式启动 VM

不应在任何实时 VM 上运行救援 shell。 但是,如果您出于任何原因仍然想这样做,请使用 --ro 使用选项 "virt-rescue" 安全地保存在实时磁盘映像或 VM 上。

$ virt-rescue -d centos8-uefi -i --ro

或者,

$ virt-rescue -a CentOS_8_Server.img -i --ro

--ro 选项将以只读模式启动 VM 或磁盘映像。 它非常适合试验 VM 或磁盘映像。 实际上不会保存任何更改。 一旦退出 shell,所有更改都将丢失!

为 VM 启用网络访问

如果要将文件或包下载到虚拟机中,可以使用 --network 运行 virt-rescue 命令时的选项:

$ virt-rescue -d centos8-uefi -i --network

或者,

$ virt-rescue -a CentOS_8_Server.img -i --network

此选项启用救援外壳内的网络访问,因此您可以从互联网下载东西。

虚拟救援有很多选择。 有关更多详细信息,请参阅手册页:

$ man virt-rescue

精选图片 米格尔·阿。 教父像素.

KVMKVM 技巧LibguestfsLinuxRescue shell 救援虚拟机virt-rescueVirtual MachineVirtualization