RDMA+9pまたはNFSで超高速・超低負荷なストレージサーバー
RDMA(Remote DMA)の話は:http://d.hatena.ne.jp/sdyuki/20090115/1232030259
リモートホストのメモリにCPUを介さず直接値を書きこむので、CPUへの負荷が非常に小さく、かつ極めて小さい遅延で通信できることが期待できる。
Broadcom NetExtreme II BCM5706 は TCP/IP + TCP Offload Engine でRDMAをサポートしたGbE NICで、手頃なお値段で買える。
9Pは元々Plan9で作られたリソース共有プロトコルで、Linuxに移植されている。NFSのようにリモートホストのファイルシステムをマウントできる。
9Pはトランスポート層から独立していて、たとえばTCP/IPのトランスポート層や、KVMの上のゲストOSからホストOSの通信に特化したトランスポート層などが使えるらしい(参照:Paravirtualized File Systems)。
サーバーの実装はここ:http://npfs.svn.sourceforge.net/viewvc/npfs/npfs/trunk/
で、他にどんなトランスポート層がサポートされているのか探してみたら、RDMAをサポートしているらしい:http://lxr.linux.no/linux+v2.6.29/net/9p/trans_rdma.c
というわけでNetExtreme IIと9pを使えば、非常に高速でCPU負荷も極小なストレージサーバーをお安く作れるのではないか。
うーん…でも定額給付金では買えないお値段。もうちょっと安くなるとお遊びで買えるなぁ。
LinuxのNFSのコードの中にも「rdma」という単語が入っていた。NFS(と言うかSun RPCか)でもRDMAをサポートしていそう。十分安定しているし、サーバー側もカーネルモードだから9pより速いかな。RDMAも現実味を帯びてきた感じ。