玄箱DebianでNFSの転送速度が悲惨
以下の環境でカーネルモードにてNFSサーバを稼動しています。
<NFSサーバ>
ハードウェア: 玄箱HG PowerPC266MHz RAM256MB 1000Base-T/100Base-T/10Base-T対応NIC
OS: Debian GNU/Linux 4.0 etch(PPC) Kernel 2.4.17
hostname:alice(IP:192.168.0.100)
# /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
(省略)
/dev/sda1 /mnt/sda1 vfat rw,utf8,uid=65534,gid=65534 0 0
/dev/sda2 /mnt/sda2 vfat rw,utf8,uid=65534,gid=65534 0 0
/dev/sdb1 /mnt/sdb1 ext3 rw 0 0
# /etc/exports
/mnt/sda1 192.168.0.0/255.255.255.0(rw,async,no_subtree_check,all_squash)
/mnt/sda2 192.168.0.0/255.255.255.0(rw,async,no_subtree_check,all_squash)
/mnt/sdb1 192.168.0.0/255.255.255.0(rw,async,no_subtree_check,all_squash)
※sda、sdbはUSB2.0外付けハードディスクストレージ。
<クライアント>
ハードウェア: NEC LavieLight Atom1.66GHz RAM2048GB 100BASE-TX/10BASE-T対応NIC
OS: Ubuntu 9.10 Karmic (x86) Kernel 2.6
hostname:fox(IP:192.168.0.6)
備考: NFSマウントポイントとして、/mnt/sda1 /mnt/sda2 /mnt/sdb1がある。
NFSディレクトリのマウントは通常
# mount -t nfs -o rw,async 192.168.0.100:/mnt/sda1 /mnt/sda1
としています。
<ルータ>
ハードウェア: IODATA ETX-R 10/100Mbps
IP: 192.168.0.1
<NFSサーバ>のsda1やsda2の動画を<クライアント>からmplayerなどで再生しようとする
ブチブチと途切れてしまい、最終的には再生が止まったまま反応がなくなります。
roxやシェルから、大きなファイルをコピーしようとしても同様に固まってしまう
状況でしたので、<NFSサーバ>と<クライアント>間の転送速度に問題があるんじゃないかと
思いました。
そこで以下のように<クライアント>からddする事で、速度を測ってみました。
root@fox:~# time dd if=/dev/zero of=/mnt/sda1/test.img bs=1024k count=5
5+0 records in
5+0 records out
5242880 bytes (5.2 MB) copied, 0.609116 s, 8.6 MB/s
real 0m0.643s
user 0m0.004s
sys 0m0.052s
root@fox:~# time dd if=/mnt/sda1/test.img of=/dev/null bs=1024k count=5
3+0 records in
2+0 records out
2097152 bytes (2.1 MB) copied, 135.476 s, 15.5 kB/s
real 2m15.486s
user 0m0.004s
sys 0m0.032s
5MBのファイルを上がwrite、下がreadしている結果ですが、書き込みに1秒半、
読み込みに2分以上もかかっています。いくら100BASEなLAN環境とは言え、
これでは使いものになりません。特にreadは何度測っても、残念な結果ばかりでした。
※念の為、試行の度にumount->nfs-kernel-server restart->mountを行なっています。
NFSのチューニング記事を参考に、<クライアント>からのマウント時に
いくつかのブロックサイズを指定して試してみても、ほとんど変化なしでした。
vfatが悪いのか、USBストレージが原因なのか、それとも・・・。
それを確認する為に、今度は<NFSサーバ>で以下のddを試しました。
root@alice:~# time dd if=/dev/zero of=/mnt/sda1/test.img bs=1024k count=5
5+0 records in
5+0 records out
5242880 bytes (5.2 MB) copied, 0.0839 seconds, 62.5 MB/s
real 0m0.137s
user 0m0.000s
sys 0m0.140s
root@alice:~# time dd if=/mnt/sda1/test.img of=/dev/null bs=1024k count=5
5+0 records in
5+0 records out
5242880 bytes (5.2 MB) copied, 0.053922 seconds, 97.2 MB/s
real 0m0.079s
user 0m0.000s
sys 0m0.070s
上が5MBのwrite、下が5MBのreadです。
サンプルが5MBと少ないので、試験する度に値が変わりますが、
それでも数十MB毎秒と十分な速度が出ていました。
となるとやはり原因は、<NFSサーバ>の設定、<クライアント>のアクセスの仕方、
<ルータ>の3つに絞られてくると思います。
<ルータ>は同ネットワークの他マシンから、(NFSではない)ファイル送受信を
10MB毎秒近い速度を出しているので問題ないと思います。
<NFSサーバ>ではクリティカルに負荷になりそうなプロセスは常駐してません。
<クライアント>のdd結果は、他のUbuntuマシンから試行した際も似たような結果だったので、
問題ないと思います。
<NFSサーバ>の転送速度向上に心あたりがある方がいらっしゃいましたら、ご指導お願い致します。
お礼
他の端末から操作し、新規ユーザーIDでログインしてみたりすると、新規ユーザーのみのhomesとmnt/shareが同一でした。 SWATなども利用して確認してみましたが、結局のところ、SUでなく、ただの一ユーザーとしてしかログインできていなかったのにSUでログインしていたと勘違い&設定間違いしていたため起こってしまったようです。 WINDOWSでのユーザーの切り替えで、デスクトップやファイル内容がぜんぜん異なってくるのと同じようなことですね。(・・・そう理解しました。) とりあえず、いろいろ設定をいじくり倒し、支障なく使えるようになったので解決しました。 確かに、samba本体のみだと難しいですが、SWATやWebminと併用しているとわかってきました。 どうもありがとうございました。