天天看點

擷取qcow2磁盤分區資料

背景

當虛拟機出現崩潰,客戶并不急于恢複虛拟機或者虛拟機已經無法恢複時,可以通過挂載虛拟機鏡像,可以擷取虛拟機鏡像内部的資料,這樣使用者的資料就可以搶救出來了。

挂載方法

假設虛拟機磁盤鏡像路徑為​

​$PATH​

​,鏡像格式為​

​$FORMAT​

​, 挂載的目标目錄為​

​$mnt​

按照如下順序執行指令:

# modprobe nbd max_part=16
# lsmod | grep nbd                                #檢視nbd子產品是否加載
# qemu-nbd -c /dev/nbd0 $PATH -f $FORMAT          #将磁盤鏡像挂載到/dev/nbd0裝置
# fdisk -l /dev/nbd0                              #檢視鏡像的分區情況
      
  • 1
  • 2
  • 3
  • 4

通過fdisk檢視分區情況,檢視結果例如:

Disk /dev/nbd0: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders, total 209715200 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: 0x0008104f
    Device Boot     Start        End      Blocks   Id  System
/dev/nbd0p1  *          63      208844      104391  83  Linux
/dev/nbd0p2          208845    41929649    20860402+  8e  Linux LVM
/dev/nbd0p3        41929650  167766794    62918572+  83  Linux
      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

非lvm分區挂載

可以看到其中第二個分區使用了lvm,其他兩個分區是非lvm分區,如果需要挂載第三個分區,也就是非lvm分區,可以執行下列指令:

# qemu-nbd -c /dev/nbd1 $PATH -f $FORMAT -P 3
# mount /dev/nbd1 $mnt
      
  • 1
  • 2

lvm分區挂載

如果需要挂載第二個分區,就是lvm分區,可以執行下列指令:

# qemu-nbd -c /dev/nbd2 $PATH -f $FORMAT -P 2
# pvscan
      
  • 1
  • 2
PV /dev/sda5    VG hty-compute2-vg  lvm2 [465.52 GiB / 0    free]
  PV /dev/loop2  VG cinder-volumes    lvm2 [30.00 GiB / 30.00 GiB free]
  PV /dev/nbd1    VG VolGroup00        lvm2 [19.88 GiB / 0    free]
  Total: 3 [515.39 GiB] / in use: 3 [515.39 GiB] / in no VG: 0 [0  ]
      
  • 1
  • 2
  • 3
  • 4
# ls /dev/mapper/
control                hty--compute2--vg-swap_1  VolGroup00-LogVol01
hty--compute2--vg-root  VolGroup00-LogVol00
      
  • 1
  • 2
  • 3
# mount /dev/mapper/VolGroup00-LogVol00 $mnt
      

繼續閱讀