zoukankan      html  css  js  c++  java
  • 获取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

    pvscan可以看到物理卷的信息

      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

    lvm分区都被映射到/dev/mapper/下

    # ls /dev/mapper/
    control                hty--compute2--vg-swap_1  VolGroup00-LogVol01
    hty--compute2--vg-root  VolGroup00-LogVol00
    • 1
    • 2
    • 3

    以上在VolGroup00组中,有两个lv,分别尝试挂载之后,发现其中一个是swap分区,无法挂载,在本文的例子中,VolGroup00-LogVol01是swap分区,VolGroup00-LogVol00是逻辑分区,因此挂载VolGroup00-LogVol00.

    # mount /dev/mapper/VolGroup00-LogVol00 $mnt
  • 相关阅读:
    HTML转换PDF及SWF及图片
    LuceneNET全文检索封装
    网页中文/汉字验证码
    网站帮助系统
    利用享元模式来解决DOM元素过多导致的网页解析慢、卡死的问题
    redis high available solution/ redis 高可用方案
    跨IDC ycache原理和配置说明
    基于模块粒度和用户粒度的灰度发布方案原理&配置说明
    /usr/bin/env python no such file or directory: dos格式导致的!
    yagent使用说明
  • 原文地址:https://www.cnblogs.com/ruiy/p/14273212.html
Copyright © 2011-2022 走看看