2012年8月11日土曜日

FreeBSD で Windows 用の NAS をマウントする (2)

[シリーズの先頭から読む]


アクセス速度の測定

Windowsファイル共有(SMB) 用の NAS 上に作成した仮想ファイルシステム(仮想 FS) を /fs/img にマウントすることができた。仮想 FS の方は UFS2 のファイルシステムなので、普通にパーミションが付けられるし、シンボリックリンクも使える。試しに packages/All 以下の全ファイル(21479個)を /fs/img 以下にコピーして、ls -l を実行してみたところ、所要時間は 2.1秒。SMB 共有をそのまま使ったときは 10-30秒くらいかかっていたので、劇的に快適になった。ように見える。

しかし、実際の転送速度はどうなっているのか。仮想FSのオーバーヘッドがあるはずだし、今回はファイルシステムの暗号化までしている。少なくとも元より早くなることはないはず。

ちなみに、今回使った NAS(I/O-DATA HDL-GTR3.0) のパフォーマンス測定をきちんとやってくれている記事があったので読んでみると、ギガビット環境で接続すれば、かなりのパフォーマンスの出るNASらしい。

元記事とは測定方法が違うが、FreeBSD から、SMB 共有に直接アクセスした場合と、今回作成した仮想FSにアクセスした場合の、読み書き速度を測定してみた。

測定条件

FreeBSD 上の RAMDISK(tmpfs) との間で、cp コマンドで下記のファイルの読み書きをして、速度を測定してみた。

  • 単一ファイル: ファイル数 = 1個, 632MB
  • 複数ファイル: ファイル数 = 289個, 合計 668MB

スイッチングハブは Gigabit 対応。ケーブルは CAT6, NAS 側で Jumboframe を使用するようには設定していない(フレームサイズ = 1500byte)

測定結果


ファイルシステム 単一ファイル (読み込み) 複数ファイル ( 読み込み )  単一ファイル (書き込み)複数ファイル ( 書き込み )
SMB 共有に直接アクセス(/mnt/smb)14.4 [MByte/s]11.7 [MByte/s]12.0 [MByte/s]10.6 [MByte/s]
SMB 共有内の仮想FS(UFS2)にアクセス (/mnt/img)13.2 [MByte/s]10.0 [MByte/s]12.0 [MByte/s]9.4 [MByte/s]

速度的には SMB 共有に直接アクセスした時と比べてほとんど遅くなっていない。体感的にも実用になるレベルだと思う。

問題点

単一の cp コマンドを実行して、コピー時間を測定した場合は上述のように特に遅くなることはなかったのだが、複数のプロセスが同時に仮想FSを読み書きすると、アクセス速度が極端に遅くなる場合があった。具体的には以下のような問題が発生した。

  1. 仮想 FS (/mnt/img) 以下にホームディレクトリを置く
  2. 仮想 FS に置いた巨大なファイル(15GByte)の MD5 値を算出(md5 /mnt/img/FILENAME)。このコマンドは終了するまでに時間がかかる
  3. md5 コマンドの実行が終わる前に新しくログインすると、異常に時間がかかる(1-3分)

おそらくログイン時にホームディレクトリの .cshrc 等を読むのに時間がかかったのが原因だと思う。まだ詳しく調べていないが、複数ユーザが巨大ファイルをフルスピードでアクセスする用途には使えないのではないか。

[続く]

0 件のコメント:

コメントを投稿