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

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

1、状况详解ide

有些时候宿主机忽然挂掉,会形成有些虚拟机 启动失败,以下图所示工具

wKioL1aLYVqR-DWGAAA4W0XC06w290.png

这应该是文件系统破坏的问题,通常状况下还能够在虚拟机中fsck修复文件系统,可是这种状况在虚拟机中根本就没有机会fsck,因此想到经过外界方法对虚拟磁盘进行fsck。建立虚拟机使用的虚拟磁盘的类型是qcow2,开机没法fsck的话,能够经过以下两种方式spa



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

二、经过qemu-nbd工具本地宿主机上修复qcow2orm

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

2、修复虚拟机ip

一、加载nbdci

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

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

wKiom1aLYyqxbhtbAABDznKbCwU642.png


 ls /dev/nbd* 

# 默认有16个nbd设备文件/dev/nbd0  /dev/nbd1  /dev/nbd10  /dev/nbd11  /dev/nbd12  /dev/nbd13

/dev/nbd14  /dev/nbd15  /dev/nbd2  /dev/nbd3  /dev/nbd4  /dev/nbd5

/dev/nbd6 /dev/nbd7  /dev/nbd8  /dev/nbd9

二、映射损坏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

wKioL1aLZMjSGIwbAAAUSdkphuI547.png


原本准备修复了,可是发现发现以前的虚拟机分区是LVM设备,若是是正常分区直接修复就能够了,而LVM须要先LVM设备激活。



fdisk -l /dev/nbd0Disk 


/dev/nbd0: 32.2 GB, 32212254720 bytes

255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00065194


     Device Boot      Start         End      Blocks   Id  System

/dev/nbd0p1   *          63      208844      104391   83  Linux

/dev/nbd0p2          208845    62910539    31350847+  8e  Linux LVM



激活LVM,安装

mount /dev/nbd0p2 /mnt/    # 报下面错误说明没有安装LVM

mount: unknown filesystem type 'LVM2_member'

apt-get install lvm2 -y


wKiom1aLZ2jAFidyAABE5OULCmg455.png


激活LVM

lvdisplay


默认状态可能LVM没有激活,以下:wKiom1aLZw3h6dC5AAFJv0fNtfI974.png


激活方式以下

vgchange -ay /dev/VolGroup00

  2 logical volume(s) in volume group "VolGroup00" now active

ls /dev/VolGroup00/*

/dev/VolGroup00/LogVol00  /dev/VolGroup00/LogVol01


wKioL1aLZzGwrhr6AABUQ-DUmBw926.png


修复指定分区

fsck -y /dev/VolGroup00/LogVol00

wKiom1aLYTbB-SM_AABAaWn5Nvc086.png

取消映射

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

# qemu-nbd --disconnect /dev/nbd0                                                                    

/dev/nbd0 disconnected

wKiom1aLYTbCaWIXAAAVw83mHWw115.png


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

相关文章
相关标签/搜索