qemu-nbd方式挂载qcow2镜像

网络块设备:  Network Block Device

     可以将一个远程主机的磁盘空间,当作一个块设备来使用.就像一块硬盘一样.
  使用它,你可以很方便的将另一台服务器的硬盘空间,增加到本地服务器上. 
  NBD与NFS有所不同.NFS只是提供一个挂载点供客户端使用,客户端无法改变这个挂载点的分区格式. 
  而NBD提供的是一个块设备,客户端可以把这个块设备格式化成各种类型的分区.更便于用户的使用. 
  NBD是一个内核模块,大部分Linux发行版都已包含它. 

      在centos中, 编译成模块NBD, 保存在 /lib/modules/$version/kernel/driver/block/

  

   远程服务器是一段轻量级的守护进程代码,它提供对远程设备的访问,而且该守护进程并不需要运行在linux平台之上。本地操作系统必须是linux,而且要支持Linux内核NBD驱动,并且能够运行本地客户端进程.

     

    图1.NBD在本地客户端代表远程资源

   文件系统能被挂载到NBD上(图1),而且NBD设备也能够用来组成冗余磁盘阵列(RAID)。在本地Linux上挂载一个EXT2文件系统到NBD,其传输率要比在同样的远程机器上挂载一个NFS快.

   

    图2.使用NBD的冗余磁盘阵列

 

1. 加载 nbd 驱动

deepin@deepin:~$ grep NBD /boot/config-4.4.102-deepin-server 
CONFIG_BLK_DEV_NBD=m

  某些版本的 Linux 不加 max_part 参数会导致没有设备节点 /dev/nbd0p{1,2,3,4…} 等. 用 kpartx 也不行. /dev/nbd0p{1,2,3,4} 分区。

[root@centos sm]# rmmod nbd
[root@centos sm]# modprobe nbd max_part=8
[root@centos sm]# ls -al /dev/nbd*

  备注信息:查看Linux 模块信息(modinfo),例如查看nbd模块的参数。 加载后,在/dev/目录下,根据参数创建nbdxx块设备文件。

复制代码
[root@vStack block]# modinfo nbd
filename:       /lib/modules/4.4.102-deepin-server/kernel/drivers/block/nbd.ko
license:        GPL
description:    Network Block Device
depends:        
intree:         Y
vermagic:       4.4.102-deepin-server SMP mod_unload modversions aarch64
parm:           nbds_max:number of network block devices to initialize (default: 16) (int)
parm:           max_part:number of partitions per device (default: 0) (int)
复制代码

 

2.连接 qemu-nbd

$ sudo  qemu-nbd --connect=/dev/nbd0 ./vans-kvm.qcow2 --nocache

 

查看分区:

$ sudo fdisk -l /dev/nbd0  
复制代码
[root@vStack block]# fdisk -l /dev/nbd1000

磁盘 /dev/nbd1000:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0007c948

        设备 Boot      Start         End      Blocks   Id  System
/dev/nbd1000p1   *        2048     1026047      512000   83  Linux
/dev/nbd1000p2         1026048    76457983    37715968   83  Linux
/dev/nbd1000p3        76457984   104857599    14199808   83  Linux
复制代码

 

2. 挂载

$ sudo mount /dev/nbd0p1 /mnt/test1  

 

3.解挂

$ sudo qemu-nbd --disconnect /dev/nbd0p1
posted @ 2019-08-20 13:37  程康华  阅读(2649)  评论(0编辑  收藏  举报