如何从 KVM 在客户虚拟机上运行 fsck

如何从 KVM 在客户虚拟机上运行 fsck

我有一台 KVM 服务器,其中一台客户机崩溃了,提示需要进行 fsck 检查。现在我没有控制台访问权限,也没有客户机 VM 的 root 访问权限。

有什么方法可以让我从虚拟机管理程序运行 fsck 吗?

我使用 centos 6.1 作为我的虚拟机管理程序

答案1

安装 libguestfs:

# yum install libguestfs-tools

使用 guestfish 打开磁盘映像:

# guestfish -a /path/to/diskimage.img

Welcome to guestfish, the libguestfs filesystem interactive shell for
editing virtual machine filesystems.

Type: 'help' for help on commands
      'man' to read the manual
      'quit' to quit the shell   
<fs> run
<fs> list-filesystems
/dev/vda1: ext4
/dev/system/lv_root: ext4
/dev/system/lv_swap: swap

并对有问题的文件系统进行 fsck :

<fs> fsck /dev/system/lv_root
fsck should have 2 parameter(s)
type 'help fsck' for help on fsck
<fs> fsck  ext4 /dev/system/lv_root
...

祝你好运!

答案2

您可能能够将文件挂载到环回接口上并对其进行 fsck。从网站www.ingent.net/en/tag/kvm/, 使用:

losetup -f
/dev/loop0

...看到这里的 loop0 是下一个空闲设备,然后将磁盘映像分配给该点。

losetup /dev/loop0 disk.raw

kpartx 用于创建设备来访问它。

kpartx -av /dev/loop0

然后您就能够使用 fsck 了。

fsck.ext3 -f /dev/mapper/loop0p1
fsck.ext3 -f /dev/mapper/loop0p2

...等等。该页面是关于将系统转换为在 KVM 上运行的,但上面引用的这部分可能会让您走上进行 fsck 修复的轨道;我想补充一点,您应该使用复制您的图像文件而不是基础图像文件,以防出现问题。

答案3

除了 Bart Silverstrim 建议的方法之外,我还看到了两种方法:

  1. 使用 libguestfs 挂载和操作图像
  2. 使用附加的 liveCD ISO 启动虚拟机,然后重置 fsck 标志或使用 liveCD 运行它

相关内容