fsck 修復宿主機上面掛掉的虛擬機網絡
1、狀況詳解ide
有些時候宿主機忽然掛掉,會形成有些虛擬機 啓動失敗,以下圖所示工具
這應該是文件系統破壞的問題,通常狀況下還能夠在虛擬機中fsck修復文件系統,可是這種狀況在虛擬機中根本就沒有機會fsck,因此想到經過外界方法對虛擬磁盤進行fsck。建立虛擬機使用的虛擬磁盤的類型是qcow2,開機沒法fsck的話,能夠經過以下兩種方式spa
一、經過啓動其它虛擬機的時候指定損壞虛擬磁盤啓動再修復code
二、經過qemu-nbd工具本地宿主機上修復qcow2orm
這裏介紹第二種方式,直接在宿主機上修復損壞qcow2磁盤,利用qemu-nbd把qcow2映射爲網絡設備Network block device。blog
2、修復虛擬機ip
一、加載nbdci
modprobe nbd max_part=8 # max_part表示每一個設備的分區,根據實際狀況修改,默認爲0get
modinfo nbd # 查看nbd相關信息filename:
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
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設備激活。
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
lvdisplay
激活方式以下
vgchange -ay /dev/VolGroup00
2 logical volume(s) in volume group "VolGroup00" now active
ls /dev/VolGroup00/*
/dev/VolGroup00/LogVol00 /dev/VolGroup00/LogVol01
fsck -y /dev/VolGroup00/LogVol00
修復完成以後取消nbd映射,開啓虛擬機便可,取消映射方法以下命令
# qemu-nbd --disconnect /dev/nbd0
/dev/nbd0 disconnected
修復以後,順利啓動相關虛擬機,推薦開機以後再shutdown -F now
強制修復一下,以防萬一。