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)
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章