WAFL について
NetApp FAS980c にて使用されてる WAFL についてもろもろ調査。
「NetAppFAS」は、ファイルサービスに特化した独自のOS「DataONTAP」と、書き込み処理の無駄を省いた独自のファイルシステム「WAFL」を採用。汎用的なファイルシステムでは、ディスクヘッドの動きに無駄が生じ、パフォーマンスに大きく影響してきます。「NetApp FAS」は、ストレージに特化したシステム構成をとることで、高いパフォーマンスを実現するとともに、障害を起こりにくくすることに成功しました。
ネットワークストレージ NetApp|丸紅情報システムズ
WAFL?は、RAID上の全データブロックを管理し、データブロックの配置、書込みサイズを調整してディスクアクセスの高速化を図る機能です。
ストレージ WAFL®によるディスクアクセスの高速化 - 富士通
WAFL?では、ライト要求毎にディスクにアクセスするのではなく、データを一時的にNVRAMに保存し、ディスクの空きブロックを確認して、データが効率的に書き込まれるように手順を作成し、一括でwrite処理を実施します。
WAFL(WriteAnywhere File Layout)は、信頼性と高速性(RAID-4との親和性)を独自に改善した高性能なファイルシステムです。データ更新の際に同じディスクブロックを上書きしない追記型構造(フルジャーナル型)を有しており、一貫したファイルシステムイメージを適時内部生成し、すべてのトランザクションをNVRAM(不揮発性ランダムアクセスメモリ)に一時的に記録します。
http://www.marubeni-sys.com/st/netapp/architecture.html
パリティー情報が RAID5 のように分散しない RAID4 を採用し、パフォーマンスネックになってしまうという欠点を HDD よりはるかに高速な NVRAM にいったんデータを溜め込んで、同一ストライプに対して書き込みすることで解消と。
メンテナンス性とパフォーマンスを両立させた美しい仕組みのように聞こえちゃうが、どうだろう。あまり一般の御家庭で使用される性質の製品ではないので、2ch レベルのネガティブ情報が入手できない。。。
NFS が遅いんで、、、ということで改善案を求められてるんだけど、どうも別にNFS自体の問題ではないような気がしている。
現状のNFSの使われ方。
(1)ファイルキャッシュ
1KB未満のXMLファイルがハッシュ値で分散されたディレクトリの中に大量に収まっている。
(2)非同期キューファイル
こちらも1KB程度のキューファイルがキューの種類毎のディレクトリにまとまって置かれている。処理が集中することがあるので、数百万ファイルが1ディレクトリに置かれることがある。
(2)のケースでNFSのレスポンスが非常に悪いと。ls も返ってこない状態になっちゃうと。・・・・いやー、NFSのせいじゃない気がするなあそれ・・・。
ためしに dir_index 付きでマウントした ext3fs のボリュームに 100 万個ほどファイルを作成して、ls を取ってみる。・・・・返って来ない。
でも、ファイル名指定して、ls を取ると一瞬で返って来る。dir_index オプションつけてるんで、ハッシュ値b-treeでファイル名が検索されているわけだ。
ls ってファイル名ソートしてから返却するんで、内部的にはファイル情報全部いったん読み込んでからソートしてると思う。100 万件のファイルがあれば、一個のファイル名が 10 バイトとしても、10MB になるわけで。そりゃー重いわ。(とはいえ、所詮 10MB とも言えなくはないが) find コマンドだったら一瞬で返って来るんじゃ・・・。
とりあえずもうちょっと調べてみる必要はあるなこの辺は・・・。低レベルなことは苦手だけども。