[OpenBlockS Users page]
[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[obu:02109] network block deviceの実験


柴田(ひ)@福岡です。

	#ちょっと長文ですがご勘弁。

OBSSを使って題記の実験をしてみました。

修理から戻ってきてDebianをインストールしたOBSSをnbdのクライアントにして、
自宅LAN内のPentium4マシン(これもDebian)をnbdのサーバにしてみました。

また、それだけではおもしろくないので、nbdサーバ側は2つのサービスをあげて
それをsoftware RAID 1でmountしてみています(^^;


<サーバの設定>
まず、サーバ側の設定ですが、apt-get install nbd-serverの後の質問に答えますが、
最終的には/etc/nbd-serverを設定すればいいようです。
とりあえず、実験サーバでは下記のようにしています。

NBD_PORT[0]=7777
NBD_FILE[0]=/home/nbd-export1
#NBD_SERVER_OPTS[0] is unset, but can contain -r, -m, -c or -a.

NBD_PORT[1]=7778
NBD_FILE[1]=/home/nbd-export2
#NBD_SERVER_OPTS[1] is unset, but can contain -r, -m, -c or -a.

#See nbd-server(1) for their meanings
#
#If you don't want this file to be rewritten after installation or upgrade,
#uncomment the following line:
#AUTO_GEN=n

/home/nbd-export1と/home/nbd-export2は下記のようにして作っています。

# dd if=/dev/hda of=/home/nbd-export1 bs=2k count=1M
# cp /home/nbd-export1 /home/nbd-export2

その後、 /etc/init.d/nbd-server startでサービスが動き出します。
ps -axwwで見るとこんな感じ。

12512 ?        S      0:00 /bin/nbd-server 7777 /home/nbd-export1
12513 ?        S      0:00 /bin/nbd-server 7778 /home/nbd-export2
12514 ?        S      0:24 /bin/nbd-server 7777 /home/nbd-export1
12515 ?        S      0:26 /bin/nbd-server 7778 /home/nbd-export2

ちなみに、サーバのIPアドレスは192.168.0.100としています。


<クライアントの設定>
次にOBSS側でクライアントの設定です。
こちらもapt-get install nbd-clientの後の質問に答えますが、
設定ファイルは/etc/nbd-clientです。

実験マシンではこんな感じ。

# If you don't want to reconfigure this package after installing, uncomment
# the following line:
AUTO_GEN="n"
#
# Name of the first used nbd /dev-entry:
NBD_DEVICE[0]=/dev/nd0
#
# Type; s=swap, f=filesystem (with entry in /etc/fstab), r=raw (no other setup
# than to run the client)
NBD_TYPE[0]=f
#
# The host on which the nbd-server process is running
NBD_HOST[0]=192.168.0.100
#
# The port on which this client needs to connect
NBD_PORT[0]=7777
#
# The second networked block device could look like:
NBD_DEVICE[1]=/dev/nd1
NBD_TYPE[1]="f"
NBD_HOST[1]="192.168.0.100"
NBD_PORT[1]="7778"


/dev/nd0と/dev/nd1は以下のようにして作りました。
# mknod /dev/nd0 b 43 0
# mknod /dev/nd1 b 43 1

ここで/etc/init.d/nbd-client startでクライアントとして動き出しますが、
fsckが出来ないとか何とか文句を言われますが、無視して次へ(^^;

	#file systemを作っていないから、文句言われて当然なので。


<クライアントでのsoftware RAIDの設定>
さらに、OBSS側でsoftware RAIDの設定をします。
apt-get install raidtools2を行った後に、/etc/raidtabを作ります。
実験OBSSでは以下のような感じ。

# raid-1 configuration
raiddev			/dev/md0
raid-level		1
chunk-size		16
nr-raid-disks		2
nr-spare-disks		0

device			/dev/nd0
raid-disk		0

device			/dev/nd1
raid-disk		1


その後、
# mkraid /dev/md0
でうまく動けばサーバとクライアント間でネットワークのやりとりが発生し、
HUBのActiveランプが点滅を始めると思います。

これは、RAID1の構築(ディスク間の同期合わせ)を行っているためです。
この進み具合は cat /proc/mdstatを実行すればわかります。

同期合わせを行っているのもかまわずに(^^;、
# mke2fs /dev/md0
を行います。

	#実はOBSをクライアントにした場合もやってみたのですが、
	#このmke2fsでエラーになりました。原因調査予定。

同期合わせはこの間も進んでいますが、そのうち終わって/proc/mdstatを見ると
以下のようになるはずです。

Personalities : [raid1] 
read_ahead 1024 sectors
md0 : active raid1 [dev 2b:01][1] [dev 2b:00][0]
      2097088 blocks [2/2] [UU]
      
ここまで来たら(来る前でも良いのですが)、mountしてみましょう。
# mount -t ext2 /dev/md0 /mnt/

mount後のdfの結果はこんな感じです。

# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda1             38198332  25646976  10610960  71% /
/dev/md0               2064144   1362136    597156  70% /mnt

	#70%にもなっているのは、すでにファイルをコピーした後だからです。
	#ちゃんとしたコピー時間は計っていません(^^;


<考察>
この例では、通常のファイルシステムに使っていますが、
nbdはswapにも使えるようなので、CFだけで組んでいるOBSSでも
かなりいろんなことが出来るようになると思います。

また、今回は1台のサーバに対してsoftware RAID1にしていますが、
これを2台に分けるとか、片方をlocal device、もう片方をremote deviceに
するなど行えば、none shared storageタイプのactive-standby構成の
クラスタも組めるのではないかと思っています。

	#OBSSでここまでやるべきかと言うと、ちょっと疑問ですが(^^;

今後はnfsとの性能比較などもしてみたいと思います。


<参考文献>
/usr/src/linux/Documentation/nbd.txt
http://www.it.uc3m.es/~ptb/nbd/

-- 
 WWWWW  shibata@xxxxxxxx
 |O-O|  柴田 尚明@福岡市  「ひげ」はえそろいました
0(mmm)0 本店   http://his.luky.org/
   ~    小倉店 http://hoop.euqset.org/        IRC: #luky

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」