nbd网络块设备使用教程

简介:

http://blog.csdn.net/gui694278452/article/details/7652450


一.NBD简介

NBD(Network Block Device)让你可以将一个远程主机的磁盘空间,当作一个块设备来使用.就像一块硬盘一样.
使用它,你可以很方便的将另一台服务器的硬盘空间,增加到本地服务器上. 
NBD与NFS有所不同.NFS只是提供一个挂载点供客户端使用,客户端无法改变这个挂载点的分区格式. 
而NBD提供的是一个块设备,客户端可以把这个块设备格式化成各种类型的分区.更便于用户的使用. 
NBD是一个内核模块,大部分Linux发行版都已包含它. 
二.NBD安装方法
在Turbolinux的10以上的版本中,NBD已被编译成模块.保存在
/lib/modules/$version/kernel/driver/block/下. 
你还需要在服务器端和客户端上安装nbd-server和nbd-client工具. 
你可以从官方网站上下载源码包,并分别在服务器端和客户端服务器上进行安装: 
http://sourceforge.net/projects/nbd
我们这里下载nbd-2.8.8.tar.bz2 
下载后,执行下列步骤进行安装: 
# tar jxf nbd-2.8.8.tar.bz2
# cd nbd-2.8.8
# ./configure
# make

# make install


或者使用命令行安装:

sudo apt-get install nbd-client

sudo apt-get install nbd-server

三.NBD使用方法
1.示例1: 服务器端提供单个映像文件到客户端
a.服务器端配置方法(IP为192.168.1.1)
你需要先建立一个磁盘映像文件,作为提供给客户端使用的块设备.我们制作一个300MB的文件当做块设备.
# cd /var/tmp
# dd if=/dev/zero of=nbd-disk0 bs=104857600 count=3 
启动nbd-server,监听1234端口,使用nbd-disk0映像文件.
# nbd-server 1234 /var/tmp/nbd-disk0
查看nbd进程.
# ps -ef | grep nbd
root 11292 1 0 15:02 ? 00:00:00 nbd-server 1234 /var/tmp/nbd-disk0
nbd-server用法:
nbd-server port file [size][kKmM] [-l authorize_file] [-r] [-m] [-c] [-a timeout_sec]
port nbd-server监听端口.
file 绑定的映像文件.
size 在客户端所见的块设备大小(单位可以是: k,K,m,M).
-r|--read-only 只读模式,客户端无法在块设备上进行写操作.
-m|--multi-file 多个文件,可以将多个映像文件作为一个块设备提供给客户端.
-c|--copy-on-write 所有客户端的写操作被会另存为一个文件,连接断开后,这个文件会被删除. 
可以保证映像文件内容不会被修改.
-l|--authorize-file file 一个允许访问此nbd的主机列表文件.
-a|--idle-time 服务器断开与客户端连接前的最大空闲时间.
b.客户端配置方法(IP为192.168.1.2)
加载nbd模块.
# modprobe nbd
# lsmod | grep nbd
nbd 26400 0
查看nbd设备是否建立.
# ls /dev/nbd* -hl
brw-r----- 1 root disk 43, 0 Jul 27 06:40 /dev/nbd0
brw-r----- 1 root disk 43, 1 Jul 27 06:40 /dev/nbd1
brw-r----- 1 root disk 43, 2 Jul 27 06:40 /dev/nbd2
brw-r----- 1 root disk 43, 3 Jul 27 06:40 /dev/nbd3
brw-r----- 1 root disk 43, 4 Jul 27 06:40 /dev/nbd4
brw-r----- 1 root disk 43, 5 Jul 27 06:40 /dev/nbd5
brw-r----- 1 root disk 43, 6 Jul 27 06:40 /dev/nbd6
brw-r----- 1 root disk 43, 7 Jul 27 06:40 /dev/nbd7
brw-r----- 1 root disk 43, 8 Jul 27 06:40 /dev/nbd8
brw-r----- 1 root disk 43, 9 Jul 27 06:40 /dev/nbd9
将/dev/nbd0设备与主机连接.
# nbd-client 192.168.1.1 1234 /dev/nbd0 
Negotiation: ..size = 307200KB
bs=1024, sz=307200
nbd-client用法:
nbd-client [bs=blocksize] host port nbd_device [-swap]
bs 用于设置块大小,默认是1024,可以是512,1024.2048,4096
host 服务器的主机名或IP
port 服务器的监听端口
nbd_device 映射到本地的哪个nbd设备(如: /dev/nbd0)
-swap 指定nbd设备将用做swap空间
nbd-client -d nbd_device 用于断开连接
连接成功后,可以查看到nbd-client进程.
# ps -ef | grep nbd
root 3156 1 0 06:44 pts/0 00:00:00 nbd-client 192.168.1.1 1234 /dev/nbd0
使用前,需要格式化这个块设备.
# mkfs.ext3 /dev/nbd0 
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
76912 inodes, 307200 blocks
15360 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
38 block groups
8192 blocks per group, 8192 fragments per group
2024 inodes per group
Superblock backups stored on blocks: 
8193, 24577, 40961, 57345, 73729, 204801, 221185
Writing inode tables: done 
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
挂载这个块设备.
# mkdir /mnt/nbd0
# mount /dev/nbd0 /mnt/nbd0 
# cd /mnt/nbd0
# ls
lost+found
复制/root目录到这个目录中.
# cp /root . -rf 
# ls
lost+found root
断开这个块设备.
# umount /mnt/nbd0/
# nbd-client -d /dev/nbd0 
Disconnecting: que, disconnect, sock, done
Kernel call returned: Broken pipeClosing: que, sock, done
2.示例2: 服务器端提供多个映像文件到客户端
a.服务器端配置
# cd /var/tmp
# dd if=/dev/zero of=nbd-disk1 bs=104857600 count=3 
记录了 3+0 的读入
记录了 3+0 的写出
314572800 字节 (315 MB) 已复制,0.584027 秒,539 MB/秒
# dd if=/dev/zero of=nbd-disk2 bs=104857600 count=3 
记录了 3+0 的读入
记录了 3+0 的写出
314572800 字节 (315 MB) 已复制,1.5128 秒,208 MB/秒
# nbd-server 1234 /var/tmp/nbd-disk1 
# nbd-server 1235 /var/tmp/nbd-disk1 
# nbd-server 1236 /var/tmp/nbd-disk2
# ps -ef | grep nbd
root 11292 1 0 15:02 ? 00:00:00 nbd-server 1234 /var/tmp/nbd-disk0
root 11599 1 0 15:14 ? 00:00:00 nbd-server 1235 /var/tmp/nbd-disk1
root 11606 1 0 15:14 ? 00:00:00 nbd-server 1236 /var/tmp/nbd-disk2
b.客户端配置
# lsmod | grep nbd
nbd 24736 0 
# ls /dev/nbd*
/dev/nbd0 /dev/nbd11 /dev/nbd14 /dev/nbd3 /dev/nbd6 /dev/nbd9
/dev/nbd1 /dev/nbd12 /dev/nbd15 /dev/nbd4 /dev/nbd7
/dev/nbd10 /dev/nbd13 /dev/nbd2 /dev/nbd5 /dev/nbd8
# nbd-client 192.168.1.1 1234 /dev/nbd0
Negotiation: ..size = 307200KB
bs=1024, sz=307200
# nbd-client 192.168.1.1 1235 /dev/nbd1
Negotiation: ..size = 307200KB
bs=1024, sz=307200
# nbd-client 192.168.1.1 1236 /dev/nbd2
Negotiation: ..size = 307200KB
bs=1024, sz=307200
将nbd1格式化为vfat格式.
# mkfs.vfat /dev/nbd1 
mkfs.vfat 2.11 (12 Mar 2005)
unable to get drive geometry, using default 255/63
将nbd2格式化为ext2格式.
# mkfs.ext2 /dev/nbd2 
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
76912 inodes, 307200 blocks
15360 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
38 block groups
8192 blocks per group, 8192 fragments per group
2024 inodes per group
Superblock backups stored on blocks: 
8193, 24577, 40961, 57345, 73729, 204801, 221185
Writing inode tables: done 
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
挂载这3个块设备
# cd /mnt
# mkdir nbd1 nbd2
# mount /dev/nbd0 nbd0
# mount /dev/nbd1 nbd1
# mount /dev/nbd2 nbd2
# df -h 
Filesystem Size Used Avail Use% Mounted on
/dev/nbd0 291M 11M 265M 4% /mnt/nbd0
/dev/nbd1 300M 0 300M 0% /mnt/nbd1
/dev/nbd2 291M 2.1M 274M 1% /mnt/nbd2
# mount
/dev/nbd0 on /mnt/nbd0 type ext3 (rw)
/dev/nbd1 on /mnt/nbd1 type vfat (rw)
/dev/nbd2 on /mnt/nbd2 type ext2 (rw)

本文转自 Tenderrain 51CTO博客,原文链接:http://blog.51cto.com/tenderrain/1983573

相关文章
|
2月前
|
SQL 安全 算法
爆赞!终于有大佬把网络安全零基础入门教程给讲明白了!
网络安全的一个通用定义指网络信息系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的破坏、更改、泄露,系统能连续、可靠、正常地运行,服务不中断。网络安全简单的说是在网络环境下能够识别和消除不安全因素的能力。 网络安全在不同环境和应用中有不同的解释,例如系统运行的安全、系统信息内容的安全、信息通信与传播的安全等。 网络安全的主体是保护网络上的数据和通信的安全,数据安全性是指软硬件保护措施,用来阻止对数据进行非授权的泄漏、转移、修改和破坏等,通信安全性是通信保护措施,要求在通信中采用保密安全性、传输安全性、辐射安全性等措施。
|
2月前
|
存储 缓存 网络协议
网络编程初学者必备:从零开始的详细教程与资源汇总
网络编程初学者必备:从零开始的详细教程与资源汇总
|
1月前
|
API
|
1月前
|
SQL 运维 安全
GitHub爆赞的Web安全防护指南,网络安全零基础入门必备教程!
web安全现在占据了企业信息安全的很大一部分比重,每个企业都有对外发布的很多业务系统,如何保障web业务安全也是一项信息安全的重要内容。 然而Web 安全是一个实践性很强的领域,需要通过大量的练习来建立对漏洞的直观认识,并积累解决问题的经验。 Web安全与防护技术是当前安全界关注的热点,今天给小伙伴们分享的这份手册尝试针对各类漏洞的攻防技术进行体系化整理,从漏洞的原理到整体攻防技术演进过程进行详细讲解,从而形成对漏洞和web安全的体系化的认识。
|
1月前
|
机器学习/深度学习 数据可视化 数据挖掘
【Macos系统】安装VOSviewer及使用VOSviewer教程!!以ESN网络的研究进行案例分析
本文介绍了如何在MacOS系统上安装VOSviewer软件,并以ESN(Echo State Network)网络的研究为例,通过VOSviewer对相关科学文献进行可视化分析,以深入了解ESN在学术研究中的应用和发展情况。
73 0
【Macos系统】安装VOSviewer及使用VOSviewer教程!!以ESN网络的研究进行案例分析
|
1月前
|
SQL 运维 安全
GitHub爆赞的Web安全防护指南,网络安全零基础入门必备教程!
web安全现在占据了企业信息安全的很大一部分比重,每个企业都有对外发布的很多业务系统,如何保障web业务安全也是一项信息安全的重要内容。 然而Web 安全是一个实践性很强的领域,需要通过大量的练习来建立对漏洞的直观认识,并积累解决问题的经验。 Web安全与防护技术是当前安全界关注的热点,今天给小伙伴们分享的这份手册尝试针对各类漏洞的攻防技术进行体系化整理,从漏洞的原理到整体攻防技术演进过程进行详细讲解,从而形成对漏洞和web安全的体系化的认识。
|
1月前
|
安全 网络协议 网络安全
网安科班精选!爱荷华大学教授的网络安全零基础入门教程!
网络就像一把双刃剑,给我们的生活、交流、工作和发展带来了便利,但同时也给信息安全以及个人隐私带来了威胁。网络和信息安全问题不仅影响了网络的普及和应用,还关系到企国家、军队、企业的信息安全和社会的经济安全,让人又爱又恨。 今天给大家分享的这份手册,主要从网络漏洞、协议和安全解决方案等方面来探讨网络安全问题。我们把网络看成是不安全和安全的源头,通过分析网络漏洞、探测、攻击和减少攻击的方法,来研究不同的网络协议。
|
2月前
|
网络协议 开发者 Python
网络编程小白秒变大咖!Python Socket基础与进阶教程,轻松上手无压力!
【7月更文挑战第25天】在网络技术快速发展的背景下, Python因其简洁的语法和强大的库支持成为学习网络编程的理想选择。
56 5
|
2月前
|
Linux 网络安全 数据安全/隐私保护
网络安全教程-------渗透工具Kali,官网链接,ARM的介绍,Mobil,华为小米,oppe手机,是无法刷入第三方的操作系统的,E+手机,谷歌的picksoul,或者三星手机,系统盘是WSL的
网络安全教程-------渗透工具Kali,官网链接,ARM的介绍,Mobil,华为小米,oppe手机,是无法刷入第三方的操作系统的,E+手机,谷歌的picksoul,或者三星手机,系统盘是WSL的
|
2月前
|
存储 Java
黑马全套Java教程(九):网络编程(四)
黑马全套Java教程(九):网络编程
34 0