zoukankan      html  css  js  c++  java
  • qemu-nbd方式挂载qcow2镜像

    客户端配置

    • 加载nbd模块

      [root@centos sm]# rmmod nbd
      [root@centos sm]# modprobe nbd max_part=8
    • 映射服务器的块设备到本地nbd设备

      [root@centos data]# nbd-client 192.168.100.25 8888 /dev/nbd0
    • 挂载本地nbd设备到文件系统

      [root@centos sm]# mount /dev/nbd0 ./data/
      [root@centos sm]# cd data
      [root@centos sm]# touch mytest.txt
    • 使用完成后断开设备

      [root@centos data]# cd ..
      [root@centos sm]# umount ./data/
      [root@centos sm]# nbd-client -d /dev/nbd0
      Disconnecting: que, disconnect, sock, done

    本地使用qemu-nbd访问qcow2文件

    • 加载nbd模块

      [root@centos sm]# rmmod nbd
      [root@centos sm]# modprobe nbd max_part=8
    • 映射qcow2文件到本地nbd设备上

      root@ubuntu-virtual-machine:~# qemu-nbd --connect=/dev/nbd0 /home/ubuntu/laboratory/data.qcow2
      root@ubuntu-virtual-machine:~# mount /dev/nbd0 ./data/
      root@ubuntu-virtual-machine:~# cd data/
      root@ubuntu-virtual-machine:~/data# ls
      mytest.txt
    • 卸载设备并断开链接

      root@ubuntu-virtual-machine:~/data# cd
      root@ubuntu-virtual-machine:~# umount /home/ubuntu/data
      root@ubuntu-virtual-machine:~# qemu-nbd -d /dev/nbd0
      /dev/nbd0 disconnected

    qemu-nbd在有的系统上叫kvm-nbd,qemu-nbd-xen等。基本上都一样啦。
    用qemu-nbd实现mount虚拟硬盘到Host上的功能,需要这么做:
    rmmod nbd
    modprobe nbd max_part=8 
    因为默认,nbd的增加分区的功能是关闭的,需要指定max_part这个参数。这个参数指定了一个nbd设备可以有多少个分区。
    qemu-nbd --connect=/dev/nbd0 ./testxp.img
    现在已经在localhost的1024端口上安装上该设备了。
    ls /dev/ | grep nbd 
    nbd0 
    nbd0p1 
    上面这样显示就对了。因为我的那个虚拟磁盘只有一个分区。如果你的虚拟磁盘有多个分区,应该显示更多。
    fdisk -l /dev/nbd0   查看虚拟磁盘和分区状况:
    Disk /dev/nbd0: 10.7 GB, 10737418240 bytes 
    255 heads, 63 sectors/track, 1305 cylinders 
    Units = cylinders of 16065 * 512 = 8225280 bytes 
    Sector size (logical/physical): 512 bytes / 512 bytes 
    I/O size (minimum/optimal): 512 bytes / 512 bytes 
    Disk identifier: 0x6f106f10 
    Device Boot Start End Blocks Id System 
    /dev/nbd0p1 * 1 1304 10474348+ 7 HPFS/NTFS
    我们可以把/dev/nbd0p1这个ntfs格式的设备mount到我们的Host上。

    fdisk /dev/nbd0 可以进入交互式命令行。
    Command (m for help): m 
    Command action 
    a toggle a bootable flag 
    b edit bsd disklabel 
    c toggle the dos compatibility flag 
    d delete a partition 
    l list known partition types 
    m print this menu 
    n add a new partition 
    o create a new empty DOS partition table 
    p print the partition table 
    q quit without saving changes 
    s create a new empty Sun disklabel 
    t change a partition's system id 
    u change display/entry units 
    v verify the partition table 
    w write table to disk and exit 
    x extra functionality (experts only) 
    可以列出,增加,删除分区。

    -----------------------------------------------------
    SYNOPSIS
           usage: qemu-nbd [OPTION]...  filename
    OPTIONS
      filename <-- is a disk image filename
      -p, --port=PORT      port to listen on (default `1024')
      -o, --offset=OFFSET  offset into the image
      -b, --bind=IFACE     interface to bind to (default `0.0.0.0')
      -k, --socket=PATH    path to the unix socket (default '/var/lock/qemu-nbd-DEVICE')
      -r, --read-only      export read-only -----------> 只读访问
      -P, --partition=NUM  only expose partition NUM -----------> 建立磁盘分区到NBD设备的连接
      -s, --snapshot       use snapshot file -----------> 挂目标磁盘的snapshot文件。
      -n, --nocache        disable host cache -----------> ?
      -c, --connect=DEV    connect FILE to the local NBD device DEV -----------> 建立磁盘文件到NBD设备的连接
      -d, --disconnect     disconnect the specified device ------------------> 断开磁盘文件到NBD设备的连接

      -e, --shared=NUM     device can be shared by NUM clients (default '1')
      -t, --persistent     don't exit on the last connection -----------> ?
      -v, --verbose        display extra debugging information
      -h, --help           display this help and exit
      -V, --version        output version information and exit

    -------------------------------------------------------------------------------------------

    $ qemu-nbd --read-only --partition=1  --snapshot  winxp.img &
    $ sudo nbd-client localhost 1024 /dev/nbd0
    $ sudo mount /dev/nbd0 -oloop  ~/empty/
    $ ls -l /home/muelli/empty/

     

  • 相关阅读:
    【转】基于 Apache 在本地配置多个虚拟主机
    ubuntu linux下各种格式软件包的安装卸载
    钩子
    静态方法中不能使用 $this
    Redis Sentinel机制与用法说明【转】
    CI 分页类的使用
    MySQL压力测试
    简单配置.htaccess就可以实现的10个功能
    bzoj 3529 数表
    poj2773 Happy 2006
  • 原文地址:https://www.cnblogs.com/klb561/p/9108719.html
Copyright © 2011-2022 走看看