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強制修復一下,以防萬一。

相關文章
相關標籤/搜索