NASをLAGしようとしたら失敗した話 – オレオレアドベントカレンダー16日め

今回は、使ってるNASを高速化しようとしたらうまくいかなかった話です。うまくいかないこと多いですね。
ReadyNAS 316
使っているのは、ReadyNAS 316と、ちょっと前の機器です。買ってから、Btrfsかよ!と思ったわけですが、中身がDebianなのでsshしてイロイロいじれるし、なぜかRAID5相当のRAIDに途中でHDDを追加できたりするので、重宝します。
こいつには、1GbpsのNICが2つ付いていて、LAG(link aggregation)が組めることになっています。が、IEEE802.3adに対応したL2SWを使わないと真価を発揮しません。
ということで、以前買ったLAGに対応してると聞いて買って、放置していたNetGear GS116E を使うことにしました。
GS116E
VLANにもLAGにも対応したL2SWです。Windows用の設定アプリがあるので、電源を入れて設定開始です。IPアドレスとかスイッチ名とかパスワードを初期パスワードから変更します。

そして、リンクアグリゲーションの画面で…あれ?LACP(Link Aggregation Control Protocol = IEEE802.3ad)の設定がないぞ?

ということで調べてみると「LAGに対応していると言ったが、LACPに対応してるとは言ってない」ということでした。なんてこったい。
しょうがないので、NASでなんとかする
NAS側では、2つのNICを普通にbondingできます。種類もいっぱいあるので、全部試しました。

Roud-Robin、XORあたりがまともにNICを分散して使用するようですが、実用にならない程度に遅い!ということで、片方に偏るけど、Transmit Load Balancingを使用してごまかすことにしました。

まあ、RXとTXで、違うNIC使ったりすることもあるようですが、NIC1に偏りがちですね。

じゃあ、ベンチマーク
NASなので、ベンチマーク取りましょう。HDDのベンチマークと言えば、雫さんのお世話になるしかありません。NASをドライブにマウントして、ベンチマークを取ります。あれ、writeがあまり早くないけどこんなものかな?

そう言えば、Jumbo-Frameを有効にしてなかったな。まあ、9kで良かろう。
NASのMTUも9000にするよ。って、なんで9K選ぶとMTUが9198になるんですか?ドライバか?くそう蟹め!(調べると、ちゃんと手元に9000になる蟹もいたので、ドライバかNICが違うらしい)

しょうがないのでNASのMTUも9198にして、再度ベンチ。
よおし、Writeが早くなってますね。Readが遅くなってるけど、なんでじゃ!書き込み量が1GBじゃ足りないのか?

よろしい、ならば8GBだ!その性能を見せるが良い!
うん、傾向は変わらない!むしろ書き込みが早い!

つまるところあれですな。BtrfsがZFSと同じ仕組みならReadがメモリキャッシュに乗り切らないんでしょう。まあ、2GBしかメモリ乗ってないのでしょうがないか。でも、なんでMTU1500のほうが早いのか謎。
結論として
まあ、LACPついたL2SW買わないと、ちゃんと負荷分散してくれないね。あと速さ求めるなら10Gの付いたNASとL2SWを買わないとダメだね。