linux nbd塊設備的使用

一.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

三.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)
相關文章
相關標籤/搜索