zoukankan      html  css  js  c++  java
  • linux nbd & qemu-nbd

    网络块设备:  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 驱动

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

    $ sudo modprobe nbd max_part=8

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

    [root@vStack block]# modinfo nbd
    filename:       /lib/modules/3.19.8-100.el7.centos.x86_64/kernel/drivers/block/nbd.ko
    license:        GPL
    description:    Network Block Device
    depends:        
    intree:         Y
    vermagic:       3.19.8-100.el7.centos.x86_64 SMP mod_unload 
    parm:           nbds_max:number of network block devices to initialize (default: 16) (int)
    parm:           max_part:number of partitions per device (default: 0) (int)
    parm:           debugflags:flags for controlling debug output (int)

    2.连接 qemu-nbd

    $ sudo qemu-nbd -c /dev/nbd0 centos.qcow2 

    查看分区:

    $ 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 -d /dev/nbd0p1  

     

    centOS7编译NBD驱动

    uname -r #-> 3.10.0-123.el7.x86_64
    
     
    yum install kernel-devel kernel-headers
    cd /tmp
    wget http://vault.centos.org/7.0.1406/os/Source/SPackages/kernel-3.10.0-123.el7.src.rpm
    rpm -ihv kernel-3.10.0-123.el7.src.rpm
    cd ~/rpmbuild/SOURCES
    tar Jxvf linux-3.10.0-123.el7.tar.xz -C /usr/src/kernels/
    cd /usr/src/kernels/
    mv $(uname -r) $(uname -r)-old
    mv linux-3.10.0-123.el7 $(uname -r)
    cd $(uname -r)
    make mrproper
    cp ../$(uname -r)-old/Module.symvers ./
    cp /boot/config-$(uname -r) ./.config
    make oldconfig
    make prepare
    make scripts
    make CONFIG_BLK_DEV_NBD=m M=drivers/block
    cp drivers/block/nbd.ko /lib/modules/$(uname -r)/kernel/drivers/block/
    depmod -a

    vclass 中 fronvmm rpm包中的几个命令:

      fromvmm          提供vnc服务

        fvmm-io    = qemu-io

           fvmm-nbd   = qemu-nbd,  fvmm-nbd 不支持qcow2格式的镜像

           fvmm-vdisk      = qemu-vdisk 

    FAQ:

      1. 如何编译nbd驱动

           2.源码分析

           3. qemu-nbd 如何加载网络上的nbd到本地。

    链接:

      1. 虚拟块设备的实现技术-nbd/iscsi/qemu等模式    http://blog.csdn.net/kenera/article/details/16839499

      2. NBD-网络块设备[翻译]                              https://my.oschina.net/kelvinxupt/blog/226066?p={{currentPage-1}}

        3. centOS7编译NBD驱动               http://blog.csdn.net/mayanyun2013/article/details/55517956

      4. 关于CentOS6如何编译装载nbd模块         http://www.codes51.com/article/detail_94502.html

      5. nbd 详解-01                    http://chuansong.me/n/2187014

  • 相关阅读:
    Luogu1053 NOIP2005篝火晚会
    BZOJ2151 种树(贪心+堆+链表/wqs二分+动态规划)
    Luogu1155 NOIP2008双栈排序(并查集)
    Luogu1092 NOIP2004虫食算(搜索+高斯消元)
    Codeforces Round#516 Div.1 翻车记
    Luogu1731 NOI1999生日蛋糕(搜索)
    洛谷 P1379 八数码难题 解题报告
    洛谷 P2501 [HAOI2006]数字序列 解题报告
    洛谷 P3143 [USACO16OPEN]钻石收藏家Diamond Collector 解题报告
    洛谷 P2894 [USACO08FEB]酒店Hotel 解题报告
  • 原文地址:https://www.cnblogs.com/doscho/p/7112916.html
Copyright © 2011-2022 走看看