网络块设备: Network Block Devicehtml
能够将一个远程主机的磁盘空间,看成一个块设备来使用.就像一块硬盘同样.
使用它,你能够很方便的将另外一台服务器的硬盘空间,增长到本地服务器上.
NBD与NFS有所不一样.NFS只是提供一个挂载点供客户端使用,客户端没法改变这个挂载点的分区格式.
而NBD提供的是一个块设备,客户端能够把这个块设备格式化成各类类型的分区.更便于用户的使用.
NBD是一个内核模块,大部分Linux发行版都已包含它. linux
在centos中, 编译成模块NBD, 保存在 /lib/modules/$version/kernel/driver/block/centos
远程服务器是一段轻量级的守护进程代码,它提供对远程设备的访问,并且该守护进程并不须要运行在linux平台之上。本地操做系统必须是linux,并且要支持Linux内核NBD驱动,而且可以运行本地客户端进程.服务器
图1.NBD在本地客户端表明远程资源网络
文件系统能被挂载到NBD上(图1),并且NBD设备也可以用来组成冗余磁盘阵列(RAID)。在本地Linux上挂载一个EXT2文件系统到NBD,其传输率要比在一样的远程机器上挂载一个NFS快.源码分析
图2.使用NBD的冗余磁盘阵列ui
某些版本的 Linux 不加 max_part 参数会致使没有设备节点 /dev/nbd0p{1,2,3,4…} 等. 用 kpartx 也不行. /dev/nbd0p{1,2,3,4} 分区。es5
$ sudo modprobe nbd max_part=8
备注信息:查看Linux 模块信息(modinfo),例如查看nbd模块的参数。 加载后,在/dev/目录下,根据参数建立nbdxx块设备文件。spa
[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)
$ 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
$ sudo mount /dev/nbd0p1 /mnt/test1
$ sudo qemu-nbd -d /dev/nbd0p1
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
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