🐥

家庭用NASと激安10GbE装置をシバき倒してイイ感じにした。

2024/12/23に公開

目的

  • 仕事上VMware Workstationが必須&イメージ操作等も割とやるが、メインをIntel MacbookProからM3 MacbookAirに変えたいのでVM作業用の鯖を作る必要があった(マルウェアとかを扱うことがあるのでクラウドではダメ)
  • 自宅ではなくオフィスに設置
  • まぁそろそろ10Gと光ファイバーに慣れていかないとな

コンセプト

  • SFP+を挿したことがなかったので、なんでもいいから挿したかった。
  • なるべく安く、メンテナンスフリーにするため、NASは既製品かつ家庭用、PCもPCショップのBTOで十分とする。
  • 実験的な要素もあるので、相性とかで機材買い直しとかは許容する。

登場するアイテム(と入手場所)

  • SikeStor SKS3200M-4GPY2XF ( Amazon 8,980円、GUI付き)

  • ASUSTOR NimBustor2 Gen2 (TsukumoEX 66,286円+NVMe 1T x4, 12GB HDD x2なんやかんや)

    • https://www.asustor.com/en/product?p_id=81
    • NVMe4枚刺しができる、ができるだけで結局NVMeとHDDは別ボリュームでそれぞれRAIDを組む感じ。2.5GbEが2本刺さり、設定でトランキングが可能。
    • 今回はHDDx2(RAID1)をボリューム1、NVMe(PCIe gen3) x4 1TB(RAID5)をボリューム2
  • ノーブランド NB-INT-X520DA1x4-S2 PCIe x4 Intel 82599EN 搭載 10GbE SFP+ 1ポート (オリオスペック 4,950円)

  • SFP-10GSR-85 x2(オリオスペック 4,400円)

  • TSUKUMO eX.computer AeroSlim RS5J-B230BN/SP1(117,980円)

    • 秋葉原で買える、スリムPC(ラックにぶち込む)、PCIeが空いてる、Windows11 Pro。
    • TSUKUMOのBTOへの信頼感(オフィスに7年稼動しっぱなしのTSUKUMO産PCがある)
    • メモリを64GBに、あとNVMeを2TB追加した

雑な構成図

ちなみにASUSTORのアプリストアでTailScaleを使えるので、NASをTailScale経由で直接設定管理できる。完璧〜。

ハマるかなと思ってハマらなかった点

  1. SFPモジュールはベンダーロックインとか相性だとかそういうのがあるからハマって何度もオリオスペックに走ることになるのかなと思ってた→そんなことなかった
  2. 八丁ハブの設定→シンプルすぎて迷えなかった
  3. NASの設定→設定は必要最低限しか変更出来ない感じだった

いろいろ出た問題点

  1. 激安10GbE NICはCDでドライバが付属していたが、古すぎてWin11だとインストールできなかった。信頼出来ないドライバって言われた。→Webで最新版を落としてきて入れた。
  2. 八丁ハブのLAG(Link Aggregation)設定をstaticにしたら、NASのネットワーク周りの挙動がヘン。→LACPに変更

いざ鎌倉、じゃなくてベンチマーク その1

  • 理論値的にはNASの2本のLANをLAGしてるので5Gbpsが上限なはず
    • 八丁ハブは60Gbpsの転送容量がある、10G NICはPCIe x4だしPC側にボトルネックはない
  • ベンチマーク対象は、NVMe 1TB x4をRAID5で組んだボリューム。このNASはこれとは別に12TB HDD x2でRAID1のボリュームも組んである。

まぁ使うのはSMB経由かなとSMBファイル共有を作り、そのフォルダを指定してCrystalDiskMarkで測定

あんまり早くない


NASのNICが最大1.4Gbpsぐらい。あれ?

一本の2.5Gbpsすらでない、クソザコ

そもそもSMBのスループットが遅い説はあるが、それならNASのCPUボトルネックになるはず。
そもそもLAGちゃんと効いているのかを確かめるためにiperf3ベンチを取ってみることにした。
なお、Microsoft的にはiperf3は非推奨らしいが、NASにアプリストア経由で入れられるのがiperf3だったので、iperf3で計測した。

iperf3結果(チューニングなし)

Connecting to host [NAS_IP], port 5201
[  5] local [10GCLIENT_IP] port 62983 connected to [NAS_IP] port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.01   sec   119 MBytes   991 Mbits/sec
[  5]   1.01-2.01   sec   282 MBytes  2.36 Gbits/sec
[  5]   2.01-3.00   sec   428 MBytes  3.63 Gbits/sec
[  5]   3.00-4.00   sec   462 MBytes  3.86 Gbits/sec
[  5]   4.00-5.01   sec   485 MBytes  4.06 Gbits/sec
[  5]   5.01-6.01   sec   486 MBytes  4.06 Gbits/sec
[  5]   6.01-7.01   sec   481 MBytes  4.02 Gbits/sec
[  5]   7.01-8.00   sec   481 MBytes  4.08 Gbits/sec
[  5]   8.00-9.00   sec   484 MBytes  4.05 Gbits/sec
[  5]   9.00-10.01  sec   465 MBytes  3.89 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.01  sec  4.08 GBytes  3.50 Gbits/sec                  sender
[  5]   0.00-10.01  sec  4.08 GBytes  3.50 Gbits/sec                  receiver

うーん?うーん。
もう少し出てもいいんじゃないですかね?

この時点で更にスループットを出すために必要そうだなと思った設定変更は下記ぐらい。

  1. ハブ側のjamboframe設定とNAS, Win11のMTUをいじる
  2. NAS側のSamba(おそらく)の設定見直し→ほぼ弄れるところがなかった。

設定等を見直して再度ベンチマークその2

変更点

  • 八丁ハブのjamboframeを9216バイトに設定
  • NAS側MTUを9000に設定
  • Windows11のjamboframeを有効にして9000を設定


八丁ハブくんの迫真設定画面、一周回って好きになってきた。

Connecting to host [NAS_IP], port 5201
[  5] local [10GCLIENT_IP] port 60119 connected to [NAS_IP] port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.01   sec   476 MBytes  3.96 Gbits/sec
[  5]   1.01-2.01   sec   536 MBytes  4.50 Gbits/sec
[  5]   2.01-3.01   sec   535 MBytes  4.49 Gbits/sec
[  5]   3.01-4.01   sec   540 MBytes  4.52 Gbits/sec
[  5]   4.01-5.01   sec   528 MBytes  4.43 Gbits/sec
[  5]   5.01-6.01   sec   534 MBytes  4.46 Gbits/sec
[  5]   6.01-7.01   sec   536 MBytes  4.52 Gbits/sec
[  5]   7.01-8.01   sec   524 MBytes  4.40 Gbits/sec
[  5]   8.01-9.01   sec   536 MBytes  4.49 Gbits/sec
[  5]   9.01-10.01  sec   536 MBytes  4.49 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.01  sec  5.16 GBytes  4.43 Gbits/sec                  sender
[  5]   0.00-10.01  sec  5.16 GBytes  4.43 Gbits/sec                  receiver

だいぶイイ感じになった。

iperf3の結果的には、ワイヤーレート出てるとまではいかないけれど、まぁこんなもんかなと。

気になるSMB経由のスループットは・・・?

んーーー、微妙!
なお、一般的にワークステーションにおけるワークロードの8割は4Kランダムアクセスと言われている。

NASのCPUが張り付いた。ここ現時点でのボトルネックぽい。
まぁSMB経由となると、NASのCPU性能もだいぶ関係してくるよねと。
ただまぁ、張り付いたということはネットワーク周りはこれ以上どうしようもない、ということで、ほぼ満足。

iSCSIだとどうなる?

某OPENのSlackでこの辺の検証を一方的に流していたら、「iSCSIならもっと出るでしょ」と言われて、確かにそうだと。そして今回の使用用途的にはiSCSIでよいので、やってみることにした。

iSCSIはやい。そりゃそうなんだけど。


ベンチマーク中のNASのCPU使用率も張り付いてない。


NICは最大600MB/s, 4.8GbpsなのでNASのNICがボトルネック
今回用途的には、NVMe iSCSIの論理ストレージにVMイメージを置いて起動、SMBでVMアーカイブ(OVA化して保存管理)という感じで良さそうなので、10G化した意味はあった・・・!

結論:なんで2.5Gx1(or x2)のNASが多いのか、それはSMBファイル共有だと先にCPUがサチるから。

これ結構不思議で、なんで2.5Gみたいな中途半端なNICのものが多いんだろう?と不思議に思っていたけど、NICより先にCPUがボトルネックになるから、10Gはもったいない みたいな感じっぽい。まぁ一般人は自宅NASをiSCSIターゲットにしてる人はいないだろうしね。。。

最近はミニPC界隈でIntel N100とかN150が標準的だけど、その辺になれば10Gも活きる感じがあるのかな?実際、ASUSTORの新しいSOHO向けオールフラッシュNAS(https://www.asustor.com/en/product?p_id=90) は4コア8スレッドの組込Ryzenで10G採用してる。なるほどね?

という感じで、いろいろ学びがあったし、久々にネットワーク周りをあーでもないこーでもないできてとても楽しかった(小学生並みの感想)。

Discussion