linux nbd模块,nbd的安装以及使用

网络块设备(nbd)的安装与使用

参考文档http://www.turbolinux.com.cn/turbo/wiki/doku.php?do=export_xhtml&id=%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86:nbd_%E7%BD%91%E7%BB%9C%E5%9D%97%E8%AE%BE%E5%A4%87_%E7%9A%84%E4%BD%BF%E7%94%A8

1.NBD的安装

在linux的10以上的版本中,nbd已经被编译成模块。保存在/lib/modules/$version/kernel/driver/block/下。除此之外你还需要在服务器端和客户端上安装nbd-server和nbd-client工具。

(1)安装的第一步:

从http://sourceforge.net/projects/nbd下载nbd的源码包 nbd-3.2.tar.bz2。之后按照一下步骤进行安装:

# tar jxf nbd-3.2.tar.bz2

# cd nbd-3.2

# ./configure

# make

# make install

2.NBD的使用方法

这里本人将服务器和客户端都设置在一个机器上:

首先服务器端的配置方法如下:

$ cd /var/tmp

$ dd if=/dev/zero of=nbd-disk0 bs=104857600 count=3

以上的目的是建立一个磁盘映像文件,作为提供给客户端使用的块设备。我们制作一个300M大小的文件当作块设备。

nbd-server 1234 /var/tmp/nbd-disk0  //启动nbd-server,监听1234端口,使用nbd-disk0映像文件。

ps -ef | grep nbd    //查看nbd进程。

root     11292     1  0 15:02 ?        00:00:00 nbd-server 1234 /var/tmp/nbd-disk0

nbd的使用后面的参数分别是:

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服务器断开与客户端连接前的最大空闲时间.

以上是服务器端的配置,接下来是客户端的配置:

客户端需加载nbd模块:

modprobe nbd

lsmod | grep nbd

nbd                    17427  3

察看nbd设备是否建立:

sushan@sushan-G31M-ES2C:/$ ls /dev/nbd* -hl

brw-rw---- 1 root disk 43,   0 12月  4 18:12 /dev/nbd0

brw-rw---- 1 root disk 43,  16 12月  4 18:55 /dev/nbd1

brw-rw---- 1 root disk 43, 160 12月  4 17:49 /dev/nbd10

brw-rw---- 1 root disk 43, 176 12月  4 17:49 /dev/nbd11

brw-rw---- 1 root disk 43, 192 12月  4 17:49 /dev/nbd12

brw-rw---- 1 root disk 43, 208 12月  4 17:49 /dev/nbd13

brw-rw---- 1 root disk 43, 224 12月  4 17:49 /dev/nbd14

brw-rw---- 1 root disk 43, 240 12月  4 17:49 /dev/nbd15

brw-rw---- 1 root disk 43,  32 12月  4 18:46 /dev/nbd2

brw-rw---- 1 root disk 43,  48 12月  4 17:49 /dev/nbd3

brw-rw---- 1 root disk 43,  64 12月  4 17:49 /dev/nbd4

brw-rw---- 1 root disk 43,  80 12月  4 17:49 /dev/nbd5

brw-rw---- 1 root disk 43,  96 12月  4 17:49 /dev/nbd6

brw-rw---- 1 root disk 43, 112 12月  4 17:49 /dev/nbd7

brw-rw---- 1 root disk 43, 128 12月  4 17:49 /dev/nbd8

brw-rw---- 1 root disk 43, 144 12月  4 17:49 /dev/nbd9

sushan@sushan-G31M-ES2C:/$

将/dev/nbd0设备与主机连接:

sushan@sushan-G31M-ES2C:/mnt$ sudo nbd-client localhost 1234 /dev/nbd0

[sudo] password for sushan:

Negotiation: ..size = 300MB

bs=1024, sz=314572800 bytes

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  用于断开连接

ps -ef | grep nbd   //连接建立之后,可以看到nbd-client的进程如下:

root      5243     1  0 18:44 ?        00:00:00 nbd-client localhost 1234 /dev/nbd0

在使用这个设备之前,需要格式化这个设备:

sushan@sushan-G31M-ES2C:/var/tmp$ sudo mkfs.ext3 /dev/nbd0

mke2fs 1.42 (29-Nov-2011)

文件系统标签=

OS type: Linux

块大小=1024 (log=0)

分块大小=1024 (log=0)

Stride=0 blocks, Stripe width=0 blocks

76912 inodes, 307200 blocks

15360 blocks (5.00%) reserved for the super user

第一个数据块=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

Allocating group tables: 完成

正在写入inode表: 完成

Creating journal (8192 blocks): 完成

Writing superblocks and filesystem accounting information: 完成

在客户端本地挂载这个设备:

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   断开连接

2.服务器端提供多个映像文件到客户端

(1)服务器端的配置:

sushan@sushan-G31M-ES2C:/var/tmp$ dd if=/dev/zero of=nbd-disk1 bs=104857600 count=3

记录了3+0 的读入

记录了3+0 的写出

314572800字节(315 MB)已复制,3.48269 秒,90.3 MB/秒

sushan@sushan-G31M-ES2C:/var/tmp$ dd if=/dev/zero of=nbd-disk2 bs=104857600 count=3

记录了3+0 的读入

记录了3+0 的写出

314572800字节(315 MB)已复制,3.81813 秒,82.4 MB/秒

sushan@sushan-G31M-ES2C:/var/tmp$ nbd-server 1234 /var/tmp/nbd-disk0

sushan@sushan-G31M-ES2C:/var/tmp$ nbd-server 1235 /var/tmp/nbd-disk1 sushan@sushan-G31M-ES2C:/var/tmp$ nbd-server 1236 /var/tmp/nbd-disk2

在服务器端查看:

ps -ef | grep nbd

root      5217     1  0 18:43 ?        00:00:00 nbd-server 1234 /var/tmp/nbd-disk0

root      5220     1  0 18:43 ?        00:00:00 nbd-server 1235 /var/tmp/nbd-disk1

root      5223     1  0 18:43 ?        00:00:00 nbd-server 1236 /var/tmp/nbd-disk2

(2)客户端的配置:

sushan@sushan-G31M-ES2C:/$ lsmod  | grep nbd

nbd                    17427  3

sushan@sushan-G31M-ES2C:/$ ls /dev/nbd*

/dev/nbd0  /dev/nbd10  /dev/nbd12  /dev/nbd14  /dev/nbd2  /dev/nbd4  /dev/nbd6  /dev/nbd8

/dev/nbd1  /dev/nbd11  /dev/nbd13  /dev/nbd15  /dev/nbd3  /dev/nbd5  /dev/nbd7  /dev/nbd9

sushan@sushan-G31M-ES2C:/mnt$ sudo nbd-client localhost 1234 /dev/nbd0

[sudo] password for sushan:

Negotiation: ..size = 300MB

bs=1024, sz=314572800 bytes

sushan@sushan-G31M-ES2C:/mnt$ sudo nbd-client localhost 1235 /dev/nbd1

Negotiation: ..size = 300MB

bs=1024, sz=314572800 bytes

sushan@sushan-G31M-ES2C:/mnt$ sudo nbd-client localhost 1236 /dev/nbd2

Negotiation: ..size = 300MB

bs=1024, sz=314572800 bytes

将nbd1格式化为vfat的格式:

sushan@sushan-G31M-ES2C:/mnt$ sudo mkfs.vfat /dev/nbd1

mkfs.vfat 3.0.12 (29 Oct 2011)

unable to get drive geometry, using default 255/63

将nbd2格式化为ext2的格式:

sudo mkfs.ext2 /dev/nbd2

挂在这三个设备:

mkdir nbd1  nbd2

sushan@sushan-G31M-ES2C:/mnt$ sudo mount /dev/nbd0 nbd0

sushan@sushan-G31M-ES2C:/mnt$ sudo mount /dev/nbd1 nbd1

sushan@sushan-G31M-ES2C:/mnt$ sudo mount /dev/nbd2 nbd2

sushan@sushan-G31M-ES2C:/$ df -h

文件系统        容量  已用  可用 已用% 挂载点

...

/dev/nbd0       291M  263M   14M   96% /mnt/nbd0

/dev/nbd2       291M  2.1M  274M    1% /mnt/nbd2

/dev/nbd1       300M     0  300M    0% /mnt/nbd1

sushan@sushan-G31M-ES2C:/$ mount

...

/dev/nbd0 on /mnt/nbd0 type ext3 (rw)

/dev/nbd2 on /mnt/nbd2 type ext2 (rw)

/dev/nbd1 on /mnt/nbd1 type vfat (rw)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值