kvm虛擬化技術下虛擬機磁盤的數據掛載和導出

摘要:kvm虛擬化技術下虛擬機的磁盤空間中數據的保護與恢復,考慮kvm的服務器級別的可用性。

1.kvm技術簡單介紹
   kvm虛擬化技術由幾部分構成,kvm內核模塊(cpu和內存的虛擬化及管理),kvm其他硬件設備模擬。其中其他的硬件設備中,較爲重要的有磁盤和網絡設備,這部分的虛擬化是使用qemu來完成的,稱作修改後的qemu,即qemu-kvm。當然,就用到了qemu技術,那麼它對磁盤的管理和使用就用qemu-img來完成。

2.虛擬機部署的過程中對磁盤文件的查看
    虛擬機部署的過程中對磁盤的操作,主要分爲磁盤空間的分配,磁盤中數據的查看等問題。因爲目前較爲主流的虛擬化技術採用的磁盤格式都是不同的,有些格式能夠支持磁盤的預分配,有些只能一次分配。這些不同的格式,在虛擬機的一次生成到處可用上造成了障礙,因此各種虛擬化技術中就產生磁盤格式轉換的專門工具,用於在不同的虛擬機鏡像之間轉換。
    在磁盤格式轉換前首先要搞清楚自己需要的格式,以及待轉換的磁盤鏡像的格式。轉換需謹慎,換前要備份呀。
    在qemu技術中,支持的格式很多,有raw cow qcow vdi vmdk cloop dmg bochs vpc vvfat qcow2 parallels nbd blkdebug host_cdrom host_floppy host_device file,可以說很豐富,但是比較常用的有cow、qcow和raw。raw格式是最爲純淨的格式,可以轉化爲很多其他的格式,而其他的格式轉換有時需要預先轉化爲raw中間格式。
    以qcow2爲例:
    查看格式命令爲:
    #qemu-img info /dev/lvmdisk/vm-disk
    現將qcow2轉化爲raw格式
    #qemu-img convert /dev/lvmdisk/vm-disk -O -f raw
    這是轉化後的磁盤就像一塊真正的物理磁盤,可以用sfdisk來查看各個分區的偏移量,然後找到分區的頭,實現不同分區的掛載
   
   lion@lion-laptop:~$ sfdisk -l -uS kvm/hd/fwle-1/fw.img
   Disk kvm/hd/fwle-1/fw.img: cannot get geometry

   Disk kvm/hd/fwle-1/fw.img: 62 cylinders, 255 heads, 63 sectors/track
   Warning: extended partition does not start at a cylinder boundary.
   DOS and Linux will interpret the contents differently.
   Warning: The partition table looks like it was made
   for C/H/S=*/16/63 (instead of 62/255/63).
   For this listing I'll assume that geometry.
   Units = sectors of 512 bytes, counting from 0

   Device Boot Start End #sectors Id System
   kvm/hd/fwle-1/fw.img1 63 7055 6993 83 Linux
   kvm/hd/fwle-1/fw.img2 7056 180431 173376 83 Linux
   kvm/hd/fwle-1/fw.img3 180432 1000943 820512 5 Extended
   kvm/hd/fwle-1/fw.img4 0 - 0 0 Empty
   kvm/hd/fwle-1/fw.img5 180495 451583 271089 83 Linux
   kvm/hd/fwle-1/fw.img6 451647 722735 271089 83 Linux
   kvm/hd/fwle-1/fw.img7 722799 993887 271089 83 Linux
   kvm/hd/fwle-1/fw.img8 993951 1000943 6993 83 Linux
   如果想要掛載fw.img文件的第五個分區,我要首先計算第五分區的偏移量 180495 * 512 = 92413440,
   則輸入
   #mount -o loop,offset=92413440 kvm/hd/fwle-1/fw.img tmp/ 命令,就把第五個分區掛載上。這樣就可以查看分區中的數據了。

   上面已經介紹了一種查看虛擬機磁盤中數據的方法,還有一種方式也可以查看。

    關於數據的恢復和備份補充:
    查看img文件的格式:
    #qemu-img info  /devlvmdisk/debian-disk
    關聯一個loop0設備:
    #losetup /dev/loop0 /dev/lvmdisk/debian-disk
    取消關聯:
    #losetup -d /dev/loop0
    做分區表映射:
    # kpartx -av /dev/loop0
    取消分區表映射:
    # kpartx -d /dev/loop0
    查看映射結果
    # ls -alF /dev/mapper
    brw-rw---- 1 root disk 253, 4 2007-11-24 14:56 loop0p1
    brw-rw---- 1 root disk 253, 5 2007-11-24 14:56 loop0p5
    掛載需要的分區
    # mount /dev/mapper/loop0p1 /mnt/MyFileSystem
    這樣就可以讀取掛載的鏡像文件中的數據,而且可以分在區中任意讀寫數據了。
    當然,這些操作都是在虛擬機停機的情況下進行的,目的就是停機時候查看數據,或是在機器死掉時恢復重要數據。

3.總結
    對磁盤技術的熟練使用能夠幫助我們快速的修復死機的虛擬機,同時也爲數據安全打下了一定的伏筆。

參考文獻:
   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章