
【作者】dmsong,浪潮商用机器
问题背景
一台KVM宿主机重启后,某个KVM虚机无法启动。屏幕报错:
booting from harddisk
failure reading sector 0x181630 from hd0
grub rescue>
复制
因为这台虚机上有一些没有备份的数据,所以尝试修复。
复制
解决过程
从报错来看,应该是虚机的boot分区sda1损坏导致无法grub无法正常工作,所以系统无法启动。
在grub rescue命令行下尝试修复,失败。
grub rescue> ls
(hd0) (hd0,msdos2) (hd0,msdos1)
grub rescue> ls (hd0,msdos1)/ #能看到grub2目录,还有一些vmlinuz,initrd文件
grub rescue>set root=(hd0,msdos1)
grub rescue>set prefix=(hd0,msdos1)/grub2
grub rescue>insmod normal #会找到grub2/i386-pc/目录下normal.mod文件,加载模块
error:failure reading sector 0x181630 from 'hd0'
复制
可见坏块导致grub菜单无法修复。
又尝试给这个虚机连接一个安装光盘镜像文件,从光盘启动进入resure模式恢复boot分区。但是尝试几次仍然都失败了,所以只能另想办法。
后来想到即使虚机无法启动,只要能读出虚机中的数据即可,所以用libguestfs工具把虚机的文件系统挂载到宿主机上,就可以拷贝数据出来了。
步骤如下:
1,安装libguestfs工具
# yum install libguestfs libguestfs-tools
复制
2,查看虚机的文件系统和分区
# cd var/lib/libvirt/images
# virt-filesystems -a rhel7.3-2.qcow2
/dev/sda1
/dev/rhel/home
/dev/rhel/root
# virt-filesystems -d guestos
libguestfs: error: list_filesystems: sgdisk: Invalid partition data!
# virt-filesystems -d guestos --parts
/dev/sda1
/dev/sda2
复制
可见,这个虚机的虚拟磁盘划分了两个分区sda1,sda2,其中sda1是boot分区,sda2做了LVM,有两个逻辑卷home和root
这个工具包还提供了其他一些命令帮助我们直接查看虚机文件系统里面的内容。比如查看文件系统使用率、列文件目录、拷贝文件到宿主机、直接查看虚机文件内容等:
# virt-df var/lib/libvirt/images/rhel7.3-2.qcow2
Filesystem 1K-blocks Used Available Use%
rhel7.3-2.qcow2:/dev/rhel/home 252706244 18515596 234190648 8%
rhel7.3-2.qcow2:/dev/rhel/root 52403200 40325392 12077808 77%
# virt-ls -a /var/lib/libvirt/images/rhel7.3-2.qcow2 /
libguestfs: error: mount_ro: mount exited with status 32: mount: /dev/sda1: can't read superblock
virt-ls: some filesystems could not be mounted (ignored)
(内容略)
]# virt-copy-out -a /var/lib/libvirt/images/rhel7.3-2.qcow2 /etc/fstab /tmp/
libguestfs: error: mount_ro: mount exited with status 32: mount: /dev/sda1: can't read superblock
virt-copy-out: some filesystems could not be mounted (ignored)
# head /tmp/fstab
(内容略)
# virt-cat -a /var/lib/libvirt/images/rhel7.3-2.qcow2 /etc/hosts
libguestfs: error: mount_ro: mount exited with status 32: mount: /dev/sda1: can't read superblock
virt-cat: some filesystems could not be mounted (ignored)
(内容略)
复制
3,最方便的方式就是通过guestmount命令直接把虚机文件系统挂载到宿主机上,就可以随意查看备份数据了。步骤如下:
# mkdir /tmp_mount
# guestmount -a /var/lib/libvirt/images/rhel7.3-2.qcow2 -i --rw /tmp_mount
libguestfs: error: mount: mount exited with status 32: mount: /dev/sda1: can't read superblock
guestmount: some filesystems could not be mounted (ignored)
# cd /tmp_mount/
# ls
bin dev home lib64 opt root sbin sys u01 usr
boot etc lib mnt proc run srv tmp Users var
复制
如有任何问题,可点击文末阅读原文,到社区原文下评论交流 觉得本文有用,请转发、点赞或点击“在看”,让更多同行看到
长按二维码关注公众号
*本公众号所发布内容仅代表作者观点,不代表社区立场;封面图片由版权数据库授权使用
文章转载自twt企业IT社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
1153次阅读
2025-04-09 15:33:27
2025年3月国产数据库大事记
墨天轮编辑部
686次阅读
2025-04-03 15:21:16
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
486次阅读
2025-04-10 15:35:48
征文大赛 |「码」上数据库—— KWDB 2025 创作者计划启动
KaiwuDB
447次阅读
2025-04-01 20:42:12
数据库,没有关税却有壁垒
多明戈教你玩狼人杀
391次阅读
2025-04-11 09:38:42
优炫数据库成功应用于国家电投集团青海海南州新能源电厂!
优炫软件
378次阅读
2025-03-21 10:34:08
天津市政府数据库框采结果公布!
通讯员
294次阅读
2025-04-10 12:32:35
最近我为什么不写评论国产数据库的文章了
白鳝的洞穴
279次阅读
2025-04-07 09:44:54
从HaloDB体验到国产数据库兼容性
多明戈教你玩狼人杀
261次阅读
2025-04-07 09:36:17
OceanBase 单机版发布,针对中小规模业务场景
通讯员
223次阅读
2025-03-28 12:01:19