自宅サーバーに10GbEを導入した話 — 光ファイバーでNASの輻輳を解消する
はじめに
自宅のネットワークは長らく 1GbE(RJ45)で運用していました。普段は問題ないのですが、複数の PC から同時に NAS へアクセスすると輻輳が発生し、読み込み速度が目に見えて落ちる状態でした。
原因は明白で、サーバー側のポートが 1GbE で頭打ちになっていることです。クライアントが何台あっても、サーバーの出口が 1Gbps しかなければそこで詰まります。
そこで、サーバー側だけを 10GbE 化することにしました。YouTube で光ファイバーの配線を見てしまったのが直接のきっかけです。
[Before]
PC-A ─┐
PC-B ─┼─ 1GbE ─ Switch ─ 1GbE ─ Server ← ここが詰まる
PC-C ─┘
[After]
PC-A ─┐
PC-B ─┼─ 1GbE ─ Switch ═ 10GbE ═ Server
PC-C ─┘
導入機材
Intel X520-DA2
SFP+ ポートを 2 つ持つ 10GbE NIC です。中古市場に大量に流れており、ホームラボの定番になっています。
| 項目 | 内容 |
|---|---|
| インターフェース | PCIe 2.0 x8 |
| ポート | SFP+ × 2 |
| チップ | Intel 82599ES |
PCIe 2.0 x8 が必要です。
x4 スロットでも物理的に挿さる場合がありますが、帯域が足りず 10G を出し切れません。マザーボードのスロット構成は事前に確認してください。
Intel NIC は SFP+ モジュールを選びます。
X520 は非 Intel 純正モジュールを弾く仕様があり、Linux では ixgbe ドライバに以下のオプションが必要になるケースがあります。
# /etc/modprobe.d/ixgbe.conf
options ixgbe allow_unsupported_sfp=1
今回の Cisco SFP-10G-SR の組み合わせでは変更が必要でした。
Cisco SFP-10G-SR
光信号と電気信号を変換するモジュールです。NIC 側とスイッチ側でそれぞれ 1 個、最低 2 個必要になります。
購入時に注意すべき点:
- 速度規格:1G 用(SFP)と 10G 用(SFP+)は別物です
- 距離規格:SR はマルチモード短距離用。LR はシングルモード長距離用で、ファイバーの種類も変わります
- ベンダー:スイッチ側にもロックがある製品が存在します
10Gtek OM3 LC/LC
光ファイバーケーブルです。OM3 はマルチモードファイバーの規格で、SR モジュールと組み合わせて使います。
LC/LC デュプレックスのケーブル 1 本で 1 リンクが張れます。今回は将来リンクアグリゲーション(LAG)を組む可能性を考えて 2 本購入しました。1 リンクに 2 本必要という意味ではありません。
ASUS NVIDIA GT710
X520-DA2 を挿すために既存のグラフィックボードを取り外す必要があり、PCIe x1 接続の代替として購入しました。
結論から言うと不要でした。
Ryzen 5 5500 には内蔵グラフィックがないため画面出力の手段が必要だと考えたのですが、GRUB とカーネルにシリアルコンソールを設定すれば、そもそもディスプレイ出力なしで運用できます。
# /etc/default/grub
GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --speed=115200"
同じ構成を組む方は、グラボを買う前にシリアルコンソールを検討してください。1 枚分の出費とスロット 1 本が浮きます。
導入済み機材
Allied Telesis x510-28GTX
以前から使っている L2 スイッチです。リース落ちを入手しました。
| 項目 | 内容 |
|---|---|
| RJ45 | 24 ポート(1GbE) |
| SFP+ | 4 ポート(10GbE) |
| OS | AlliedWare Plus |
導入にあたって、以下 2 点の設定が必須でした。
1. ファン制御
初期状態では常時フル回転で、居室に置けるレベルの騒音ではありません。ファン速度の設定を変更する必要があります。
2. スタッキングポートの解除
x510 の SFP+ ポートは、既定で一部が VCStack(スタッキング)用に予約されています。通常のアップリンクとして使うには設定変更が必要です。
これらの設定変更にはコンソールケーブル(RJ45-シリアル)での接続が必要です。ネットワーク越しには初期設定に到達できないため、事前に用意しておいてください。
効果測定
iperf3 で計測しました。
| 条件 | スループット |
|---|---|
| クライアント 1 台 | 約 0.9 Gbps |
| クライアント複数台(合計) | 2 Gbps 以上 |
クライアント側は依然として 1GbE なので、単体では 1Gbps が上限です。数字が伸びるのは複数台から同時にアクセスしたときで、ここで初めてサーバー側 10G の効果が出ます。
つまり今回の投資で解決したのは「速度」ではなく「同時アクセス時の輻輳」です。当初の課題そのものではあるので、目的は達成しています。
逆に言えば、単一クライアントからの転送を速くしたい場合、この構成では何も変わりません。そこは正直に書いておきます。
導入してみて
良かった点
- 当初の課題だった輻輳が解消した
- 中古市場のおかげで、10G としては安価に構築できた
- SFP+ 光接続は発熱が小さい(10GBASE-T と比較して)
手間だった点
- スイッチのコンフィグ変更とコンソール接続
- NIC・モジュール・ケーブルの規格の組み合わせを調べる作業
- グラフィックボードを買い足す羽目になった(前述の通り不要でした)
設定周りは Claude Opus 5 に聞きながら進めたため、大きく手間取ることなく導入できました。特に AlliedWare Plus のコマンド体系は情報が少ないので、ここで詰まらなかったのは大きかったです。
今後の予定
メインサーバーのリプレース
今回グラフィックボードを買い足す必要が生じたので、次は内蔵グラフィック搭載の CPU を選びます。PCIe スロットを NIC と HBA に使い切れるようになります。
ミニ PC の 10G 化
もう 1 台のノードはミニ PC で、1GbE までしか対応していません。PCIe スロットがないため、選択肢は限られます。
| 手段 | 評価 |
|---|---|
| USB4 / Thunderbolt 接続の 10GbE アダプタ | 対応ポートがあれば可能。発熱と価格が課題 |
| 2.5GbE USB アダプタで妥協 | 現実的。コストが 1 桁違う |
| ミニ PC 自体を入れ替える | 消費電力とのトレードオフ |
せっかく 10G の口が余っているので、ここは引き続き検討していきます。
まとめ
- 1GbE の壁は、複数クライアントからの同時アクセスで顕在化する
- サーバー側だけの 10G 化でも、輻輳の解消という点では効果がある
- 中古の X520-DA2 と リース落ちスイッチで、比較的安価に構築できる
- ただし NIC・モジュール・ケーブルの規格の組み合わせには注意が必要
同じように「NAS が遅い」と感じている方の参考になれば幸いです。