searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

虚拟机镜像文件系统损坏的通用修复方法

2023-03-30 02:43:44
96
0

虚拟机镜像文件系统损坏的通用修复方法

一、背景

随着云场景下云主机大量的有客户使用,经常会出现客户在有意无意的使用过程中,导致系统崩溃,客户最常见的处理方式就是重启云主机,看看是否能恢复正常。这时候,经常会遇到系统相关文件、数据、配置等信息被篡改和损坏,导致系统开机失败,无法登陆。针对这种常见情况,我们梳理总结通用的方法流程,帮助客户快速的恢复云主机系统,最大可能不重新安装云主机,也可以避免客户重新安装系统,部署应用。

二、技术实现

     针对云主机这种特殊性,镜像文件本身是存储在后端存储集群中,他是通过云主机所在的宿主机,通过librbd块存储client端访问存储集群中云主机镜像文件。所以云主机的磁盘信息是可以在宿主机上查到的。整个guest镜像的挂载是通过libguestfs和libguestfs-tools两个软件实现的。所以首先需要安装工具包:

yum -y install libguestfs libguestfs-tools

查找想要挂在虚拟机的本地挂载点:

查看虚拟机uuid信息

guestmount  -d   instance-c289202c-7bf8-4f02-8321-865db49398a5  -m /dev/sda4  /mnt

通过输出信息,确认本地映射的设备是/dev/sdb1

guestmount  -d   instance-c289202c-7bf8-4f02-8321-865db49398a5  -m /dev/sdb1  /mnt

此时,这台云主机的镜像文件就挂载到了本地/mnt目录下,就可以对该路径下的文件进行修改,替换。然后卸载/mnt目录,重新启动云主机,就可以恢复到正常的云主机状态。

三、问题实例

  1. 两台centos6.8的guest系统启动失败。

通过guestmount工具把云主机镜像挂在到宿主机本地后查看,发现系统内/boot, /lib/modules目录下文件都清空了,内核,驱动等文件都丢失。同一批机器里有两台同样现象(系统,部署完全一样)。分析后决定从正常机器拷贝内核,驱动目录到问题机器上,然后重新启动系统,问题解决。

  1. 云主机重启失败,进入紧急模式

通过guestmount挂载工具,把云主机镜像挂在到宿主机后,排查系统的/etc/fstab文件,发现系统自动挂载文件被修改,数据盘uuid错误,修改此文件,把正确的uuid信息写入文件,系统重启后正常。

四、总结

通过guestmount工具可以很方便的包云主机镜像文件挂在到本地,然后对系统内进行修复后,使系统恢复正常,大大节省了重新安装和部署软件的工作量。

0条评论
0 / 1000
付****哲
3文章数
0粉丝数
付****哲
3 文章 | 0 粉丝
付****哲
3文章数
0粉丝数
付****哲
3 文章 | 0 粉丝
原创

虚拟机镜像文件系统损坏的通用修复方法

2023-03-30 02:43:44
96
0

虚拟机镜像文件系统损坏的通用修复方法

一、背景

随着云场景下云主机大量的有客户使用,经常会出现客户在有意无意的使用过程中,导致系统崩溃,客户最常见的处理方式就是重启云主机,看看是否能恢复正常。这时候,经常会遇到系统相关文件、数据、配置等信息被篡改和损坏,导致系统开机失败,无法登陆。针对这种常见情况,我们梳理总结通用的方法流程,帮助客户快速的恢复云主机系统,最大可能不重新安装云主机,也可以避免客户重新安装系统,部署应用。

二、技术实现

     针对云主机这种特殊性,镜像文件本身是存储在后端存储集群中,他是通过云主机所在的宿主机,通过librbd块存储client端访问存储集群中云主机镜像文件。所以云主机的磁盘信息是可以在宿主机上查到的。整个guest镜像的挂载是通过libguestfs和libguestfs-tools两个软件实现的。所以首先需要安装工具包:

yum -y install libguestfs libguestfs-tools

查找想要挂在虚拟机的本地挂载点:

查看虚拟机uuid信息

guestmount  -d   instance-c289202c-7bf8-4f02-8321-865db49398a5  -m /dev/sda4  /mnt

通过输出信息,确认本地映射的设备是/dev/sdb1

guestmount  -d   instance-c289202c-7bf8-4f02-8321-865db49398a5  -m /dev/sdb1  /mnt

此时,这台云主机的镜像文件就挂载到了本地/mnt目录下,就可以对该路径下的文件进行修改,替换。然后卸载/mnt目录,重新启动云主机,就可以恢复到正常的云主机状态。

三、问题实例

  1. 两台centos6.8的guest系统启动失败。

通过guestmount工具把云主机镜像挂在到宿主机本地后查看,发现系统内/boot, /lib/modules目录下文件都清空了,内核,驱动等文件都丢失。同一批机器里有两台同样现象(系统,部署完全一样)。分析后决定从正常机器拷贝内核,驱动目录到问题机器上,然后重新启动系统,问题解决。

  1. 云主机重启失败,进入紧急模式

通过guestmount挂载工具,把云主机镜像挂在到宿主机后,排查系统的/etc/fstab文件,发现系统自动挂载文件被修改,数据盘uuid错误,修改此文件,把正确的uuid信息写入文件,系统重启后正常。

四、总结

通过guestmount工具可以很方便的包云主机镜像文件挂在到本地,然后对系统内进行修复后,使系统恢复正常,大大节省了重新安装和部署软件的工作量。

文章来自个人专栏
ctyunos-系统软件
3 文章 | 2 订阅
0条评论
0 / 1000
请输入你的评论
1
0