我有一台 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 建议的方法之外,我还看到了两种方法:
- 使用 libguestfs 挂载和操作图像
- 使用附加的 liveCD ISO 启动虚拟机,然后重置 fsck 标志或使用 liveCD 运行它