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=
备注信息:查看Linux 模块信息(modinfo),例如查看nbd模块的参数。 加载后,在/dev/目录下,根据参数创建nbdxx块设备文件。
[root@vStack block]# modinfo nbd
filename: /lib/modules/3.19.-.el7.centos.x86_64/kernel/drivers/block/nbd.ko
license: GPL
description: Network Block Device
depends:
intree: Y
vermagic: 3.19.-.el7.centos.x86_64 SMP mod_unload
parm: nbds_max:number of network block devices to initialize (default: ) (int)
parm: max_part:number of partitions per device (default: ) (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, 字节, 个扇区
Units = 扇区 of * = bytes
扇区大小(逻辑/物理): 字节 / 字节
I/O 大小(最小/最佳): 字节 / 字节
磁盘标签类型:dos
磁盘标识符:0x0007c948 设备 Boot Start End Blocks Id System
/dev/nbd1000p1 * Linux
/dev/nbd1000p2 Linux
/dev/nbd1000p3 Linux
2. 挂载
$ sudo mount /dev/nbd0p1 /mnt/test1
3.解挂
$ sudo qemu-nbd -d /dev/nbd0p1
centOS7编译NBD驱动
uname -r #-> 3.10.-.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.-.el7.src.rpm
cd ~/rpmbuild/SOURCES
tar Jxvf linux-3.10.-.el7.tar.xz -C /usr/src/kernels/
cd /usr/src/kernels/
mv $(uname -r) $(uname -r)-old
mv linux-3.10.-.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
linux nbd & qemu-nbd的更多相关文章
- How to build and run ARM Linux on QEMU from scratch
This blog shows how to run ARM Linux on QEMU! This can be used as a base for later projects using th ...
- 路由器逆向分析------Running Debian MIPS Linux in QEMU
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/70176583 下面的文章内容主要参考英文博客<Running Debian ...
- Linux系统NBD驱动安装拓展篇
前言: 最近在安装中标麒麟机器的时候,发现麒麟的操作系统找不到src.rpm包,且系统内部也没有内核文件,导致正常方法安装NBD驱动无法实施.故这里找了另一种办法帮助此类型操作系统安装NBD驱动. 一 ...
- redhat5本地源NBD驱动安装
1.将镜像挂载到本机上 1)将系统ISO镜像放到自己电脑/root下 lsb_release -a 查看系统类型 2)在(/)目录下,建立yum目录 mkdir /root/yum 3 ...
- 以Qemu模拟Linux,学习Linux内核
文章名称:以Qemu模拟Linux,学习Linux内核作 者:five_cent文章地址:http://www.cnblogs.com/senix/archive/2013/02/21/29 ...
- CentOS7利用本地yum源配置NBD
一:CentOS7.0创建本地YUM源 (物理机:直接将刻录的CentOS7光盘利用光驱插入物理机上) (虚拟机: CD/DVD>>连接本地ISO) 针对物理机192.168.9.112进 ...
- 路由器逆向分析------QEMU的下载和安装(Linux平台)
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/68953160 一.QEMU源码的下载和编译 QEMU源码的github下载地址:h ...
- linux下挂载VHD等虚拟磁盘文件
1.RAW格式虚拟磁盘 linux下可以直接挂载raw格式的虚拟磁盘镜像文件. 例如,这里先用dd命令创建一个文件,然后将其格式化为ext4格式(只有一个分区),然后挂载到/mnt目录. 下面的raw ...
- linux内核调试指南
linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 ...
- Qemu下安装Sun Solairs8简明教程 转
http://blog.csdn.net/stonesharp/article/details/8928393 Qemu下安装Sun Solairs8简明教程(Centos6. / Win7) 作者: ...
随机推荐
- RelativeLayout 深入理解
今天做app底部的导航栏,就是会有一个分割线,分割内容和下面的fragmenttablehost,那条线,我看开源中国是用relativelayout包裹的. 我也包裹,但是不行.显示不出来那条线. ...
- nodejs安装&bower 安装
1.进入官网下载:https://nodejs.org/en/ 2.直接进行安装,可以将安装路径设置为:D:\nodejs 3.进入node.js command prompt 命令窗口 4.检测是否 ...
- latex排版系统
proTeXt - MiKTeX-based distribution for Windows proTeXt aims to be an easy-to-install TeX distributi ...
- javaWEB简单商城项目
javaWEB简单商城项目(一) 项目中使用到了上一篇博文的分页框架,还有mybatis,重点是学习mybatis.现在有些小迷茫,不知道该干啥,唉,不想那么多了,学就对了 一.项目功能结构 1.功能 ...
- CocosCreator设置模拟器默认横竖屏以及机型
之前好好的横屏,今天不知道为毛突然变成竖屏了,虽然可以在点击模拟器左上角进行设置, 但是 每次启动模拟器又变成竖屏了,折腾了很久,终于找到了设置的地方,记录下:
- thinkPHP 表单自动验证功能
昨天晚上我们老大叫我弄表单自动验证功能,愁了半天借鉴了好多官网的知识,才出来,诶,总之分享一下我自己的成果吧! thinkphp 在Model基类为我们定义了自动验证的函数和正则表达式,我们只需要在对 ...
- 解决Navicat for MySQL 连接 Mysql 8.0.11 出现1251- Client does not support authentication protocol 错误
安装MySQL8.0之后,使用Navicat连接数据库,报1251错误. 上网搜索解决方案,网上说出现这种情况的原因是:mysql8 之前的版本中加密规则是mysql_native_password, ...
- 牛客练习赛22-E.简单数据结构1(扩展欧拉定理降幂 +树状数组)
链接:E.简单数据结构1 题意: 给一个长为n的序列,m次操作,每次操作: 1.区间加 2.对于区间,查询 ,一直到- 请注意每次的模数不同. 题解:扩展欧拉定理降幂 对一个数p取log(p)次的 ...
- 【志银】Ubuntu Apache2配置SSL证书
1.准备工作 证书文件:zain.crt.zain.key /etc/apache2/文件夹下新建ssl 文件夹,将证书文件放入/etc/apache2/ssl 2.配置SSL证书 打开/etc/ap ...
- winform 路径
System.AppDomain.CurrentDomain.BaseDirectory d:\project\bin\release\