天天看點

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程序.

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 

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.伺服器端配置

# 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 

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

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.用戶端配置

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

# nbd-client 192.168.1.1 1235 /dev/nbd1

# nbd-client 192.168.1.1 1236 /dev/nbd2

将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 

This filesystem will be automatically checked every 21 mounts or

挂載這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

繼續閱讀