fsck 修复宿主机上面挂掉的虚拟机

一、情况详解

有些时候宿主机突然挂掉,会造成有些虚拟机 启动失败,如下图所示

这应该是文件系统破坏的问题,一般情况下还可以在虚拟机中fsck修复文件系统,但是这种情况在虚拟机中根本就没有机会fsck,所以想到通过外界方法对虚拟磁盘进行fsck。创建虚拟机使用的虚拟磁盘的类型是qcow2,开机无法fsck的话,可以通过如下两种方式

1、通过启动其它虚拟机的时候指定损坏虚拟磁盘启动再修复

2、通过qemu-nbd工具本地宿主机上修复qcow2

这里介绍第二种方式,直接在宿主机上修复损坏qcow2磁盘,利用qemu-nbd把qcow2映射为网络设备Network block device

二、修复虚拟机

1、加载nbd

modprobe nbd max_part=8  # max_part表示每个设备的分区,根据实际情况修改,默认为0

modinfo nbd   # 查看nbd相关信息filename:

2、映射损坏diskqcow2磁盘为nbd

qemu-nbd --connect=/dev/nbd0 /srv/cloud/one/datastores/0/245/disk.0

映射disk.qcow2为本地的nbd0设备,qcow2需要为绝对路径

ls /dev/nbd0* 映射虚拟磁盘有两个分区

/dev/nbd0  /dev/nbd0p1  /dev/nbd0p2

本来准备修复了,但是发现发现之前的虚拟机分区是LVM设备,如果是正常分区直接修复就可以了,而LVM需要先LVM设备激活。

激活LVM,安装

apt-get  install lvm2 -y

激活LVM

默认状态可能LVM没有激活,如下:

激活方式

修复指定分区

fsck -y /dev/VolGroup00/LogVol00

取消映射

修复完成之后取消nbd映射,开启虚拟机即可,取消映射方法如下命令

修复之后,顺利启动相关虚拟机,推荐开机之后再shutdown -F now强制修复一下,以防万一。

时间: 2024-10-26 08:13:41

fsck 修复宿主机上面挂掉的虚拟机的相关文章

NAT方式,宿主机无法ping通虚拟机

一:问题描述 查看虚拟机IP 在宿主机上无法ping通虚拟机 二:解决办法 点击“编辑虚拟网络”,如下图: 勾选1上面的“Connect a host virtual adapter to this network ” 至此,宿主机能ping通虚拟机

如何在宿主机上查看kvm虚拟机的IP

背景介绍:由于公司进行固定资产清查,动了我的服务器.导致禅道不能正常连接 故障现象:我找到禅道那台服务器,接上显示器,发现里面居然跑了6台kvm的虚拟机(不是本人搭建的哈).我擦,我需要的禅道到底在哪台虚拟机上呢? 解决步郰: 1.virsh --list(查看有哪些服务器) 2.virsh dumpxml 虚拟机名称 查看服务器对应的mac地址 3.然后再宿主机上arp -a 查看对应的mac地址对应的ip 如果arp -a看不到想要的结果,就写个脚本ping一下同网段的所有IP

Linux文件系统损坏导致无法正常启动与fsck修复工具

问题:今天在打开自己的虚拟机学习的时候,发现在文件系统检查过程中出现以下的报错:/dev/mapper/VolGroup-lv_root:UNEXPECTED INCONSISTENCY;RUN fsck MANUALLY. [FAILED]这提示意味着,Linux文件系统损坏了,导致文件系统损坏的原因可能是异常的关机,比如:突然断电.这里的提示已经很明确的说明了,"UNEXPECTED INCONSISTENCY;RUN fsck MANUALLY.":意外的不一致性导致文件系统损坏

在Ubuntu宿主机上查看ARM交叉编译好的可执行程序和库文件的相关依赖关系,类似于PC上的ldd命令

在电脑上安装的Linux系统中,有一个ldd命令,可以查看对应的可执行文件或库文件依赖哪些库,但可执行文件或库文件要求与操作系统的编译器类型相同,即电脑是X86的GCC编译器,那么无法通过ldd命令查看ARM交叉编译器编译出来的可执行文件或库文件. 如果想在Ubuntu等Linux宿主机上查看ARM交叉编译好的可执行程序和库文件的相关依赖关系,可以通过以下命令: [email protected]:$ arm-linux-readelf  -a  busybox |grep "Shared&qu

使用fsck修复文件系统错误

1.问题描述 服务器maint_samba   由于服务器maint_samba (debian操作系统)没有正常关机,在重新启动过程中/dev/sdb1出现文件系统错误,需要手动使用fsck进行扫描和修复.出现如下情况: …... Checking file systems ...fsck 1.41.3(12-OCT-2008) /dev/sdb1 contains a file system with errors check forced /dev/sdb1: |==========   

docker宿主机上的端口无法对外提供服务

因为特殊要求有个服务需要配置到宿主机上,所以引发了以下这个问题. 实验:容器中安装Tomcat,映射到宿主机为6666. 宿主机中也安装Tomcat,端口为8080. 端口使用netstat查看全部开启. 浏览器:访问容器中Tomcat 端口6666 访问成功 , telnet 6666端口成功              访问宿主机Tomcat 端口8080 访问失败 , telnet 8080端口失败 排错分析:说明宿主机8080端口对外是关闭的,而又想到宿主机ssh端口22为什么是对外可以通

在openstack宿主机里删除一个虚拟机关联的网卡、端口及桥

在宿主机里删除一个虚拟机关联的网卡.端口及桥 1).用ovs-vsctl命令查看宿主机的所有的桥信息 [[email protected] ~]#ovs-vsctl show 169dc0d6-0c44-42df-9bd5-5e1f380a8704 Bridge br-int Port int-br-int Interface int-br-int Port phy-br-int Interface phy-br-int Port "em2" Interface "em2&q

如何在宿主机上执行容器里的jmap,jtack,jstat 命令获取信息(原创)

一般情况下,我们要获取docker容器里的jvm信息只能进入容器后执行jmap,jstack,jstat 命令去获取,jstack,jstat还好,但是jmap dump的文件要拿出来,得先copy dump文件到挂载在宿主机上的目录,或者使用docker cp命令去获取, 如  https://pathtogeek.com/thread-heap-dumps-from-a-docker-container 1. Run the below command to bash into the co

VMware加载其他宿主机上的虚拟机以后,IP查不到了。如何解决?

复制过来的虚拟机,可以看到没有IP地址了,MAC也可能是被复制过来的. [[email protected] ~]# ifconfig -aens33: flags=4098<BROADCAST,MULTICAST> mtu 1500 ether 00:0c:29:f1:8b:eb txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets