Monday, October 3, 2016 5:00AM to 11:00AM (UTC) Schedouled down time to change site domain

NFSv3とNFSv4のファイル操作ベンチマーク比較

 2003年4月に公開されたNFSバージョン4(NFSv4)には、クライアント・サーバ間のステートフルな(状態遷移型)インタラクションと“ファイル・デリゲーション(権限委譲)”が導入された。これにより、クライアントはサーバ上のファイルに対して一時的な排他的アクセスが行える。NFSv4では、RPCSEC_GSS、複数操作のサーバへの一括送信、新たなファイル属性、レプリケーション、クライアント側のキャッシュ処理、ファイルロックの改良といったセキュリティ面での改善が施されている。以前のバージョンから進化した部分は数多くあるが、この記事ではその1つであるパフォーマンスに絞って調査を実施した。

 NFSv4への移行に伴う問題の1つが、エクスポートするすべてのファイルシステムを1つのエクスポート用ディレクトリの下に置かなければならないことだ。つまり、「/etc/exports」ファイルを変更したうえ、さらにLinuxのバインドマウントを使って、エクスポートしたいファイルシステムを1つのNFSv4エクスポート用ディレクトリの下にマウントする必要がある。NFSv4におけるこのファイルシステムのエクスポート方法ではシステム設定の大幅な変更が必要なため、NFSv3からのアップグレードを行っていない人も多いだろう。こうした管理上の作業については、記事で取り上げられている。ここでは、NFSv3とNFSv4のベンチマーク評価を実施し、NFSv4への移行によってネットワークファイルシステムのパフォーマンスが向上するのかどうかを確かめる。

 今回のパフォーマンステストには、8GBのメモリを搭載したIntel Core 2 Quad Q6600ベースのサーバ、それに クライアントとしてメモリ2GBのAMD Athlon X2マシンを利用した。どちらのマシンもIntel製のギガビットPCIeネットワークカードEXPI9300PTを備え、両マシンをつなぐネットワーク上の他のトラフィックはベンチマーク実施中、ほとんどゼロだった。以前の記事で紹介したように、このネットワークカードによってネットワークの遅延はかなり抑えられる。今回のテストでは、パフォーマンスの再現性確認のためにそれぞれのベンチマークを何度か実行した。なお、両マシンのメモリ容量の違いから、Bonnie++の実行ではデフォルトの条件を変更して、サーバ側では16GBのファイルを、クライアント側では4GBのファイルをそれぞれ使用した。両マシンとも、OSは64ビット版のFedora 9である。

 サーバからエクスポートするのは、3基のハードディスクからなるRAID-5上に作成されたext3ファイルシステムで、サイズは60GB。stripe_cache_sizeは16384としたが、これはハードディスク3基のRAIDアレイの場合、RAIDレベルでページのキャッシュに192MBのメモリが使用されることを意味する。また、配信用キャッシュサイズのデフォルト値は同じRAIDアレイで3~4MBの範囲となる。キャッシュの増加はそのままRAIDの書き込みパフォーマンスの向上につながる。さらに、NFSで実現可能な理論上の最大パフォーマンスを把握するために、各ベンチマークはサーバ上でNFSを使わずにローカルでも実行した。

 上記のRAID-5構成は妥当ではないという意見もあるだろう。確かに、こうした動作を行うのにハードディスクが3基だけでは標準的な構成といえない。しかし、今回のねらいはあくまでNFSv3とNFSv4との相対的なパフォーマンス比較にある。ここでハードディスク3基のRAID-5を用いたのは、ベンチマーク向けにファイルシステムの再生成が可能だったからだ。ファイルシステムの再生成により、パフォーマンスに悪影響を及ぼすファイルの断片化といった要因を排除できる。