Linuxの勉強のために、古いRaspberry Pi3をサーバー化していろいろ試していますが、ファイルサーバ化してみようと思ったとき、物理的な障壁があることに気が付きました。
ズパイ3以前のモデルは、仕組みを理解していないと「思ったより遅い」「全然速度が出ない」と感じやすい構成なんですよね。この記事では、なぜラズパイ3(およびそれ以前)がファイルサーバに不向きなのかを、ハード構造の観点からまとめてみます。
USBがすべてUSB2.0止まり
まず一番大きいポイントが、USBがUSB2.0までしか対応していない点です。
USB2.0の理論値は480Mbps、バイト換算すると約60MB/sですが、実効速度はせいぜい30MB/s前後になります。USB3.0では理論値5Gbps、実行速度で80~220MB/s程度になるので雲泥の差があります。
HDDでもSSDでも、この時点でストレージ性能を活かしきれません。どれだけストレージが早くてもUSBで詰まってしまうわけです。
LANがUSB経由で接続されている
ラズパイ3以前のモデルでは、有線LANポートがSoCに直結されていません。

内部的にはUSB接続のLANコントローラとして実装されているようです。
lsusbコマンドからもUSBとしてLANが見えます。SMC9514というチップがUSB+LANの実装でFast Ethenet Adapterという名前で見えています。
その結果、LAN通信もUSB2.0の帯域を使う構造になっています。帯域を共有しているんですね。以下のようなイメージです。
SoC
└─ USB2.0
└─ SMC9514
├─ USBハブ
└─ LAN(USB Ethernet)
つまり、USBストレージとLAN通信が同じUSB2.0の帯域を取り合う形になります。
ファイルサーバは「LAN経由でUSBストレージにアクセスする」用途なので、構造的にかなり不利です。
実効速度が大きく落ちる
この構造の影響で、実際の転送速度はかなり厳しくなります。
LAN単体なら200〜300Mbps程度出ることもありますが、USBストレージと同時に使うと速度は一気に落ちます。
帯域の奪い合いが発生するので、実効で10〜20MB/s台になることも珍しくありません。1GBのファイルの転送に、1分以上かかる計算になります。
より大きなファイルを扱うと、体感的にもはっきり遅さを感じると思います。
ラズパイ3 B+でも根本は同じ
ラズパイ3 B+は「ギガビットLAN対応」と書かれていることがありますが、内部構造は基本的に変わっていません。
LANの物理チップが1Gbps対応になっただけで、SoCとの接続はUSB2.0のままです。
そのため、実効速度は300Mbps弱で頭打ちになり、ファイルサーバ用途では大きな改善にはなりません。
CPU性能も余裕がない
ラズパイ3以前のCPU性能も、ファイルサーバー用途では余裕があるとは言えません。
SambaやNFSなどの処理をしながらI/Oが詰まると、CPU使用率が上がりやすく、レスポンスが不安定になることもあります。ラズパイ3はギリギリ、2や初代はかなり厳しいと思います。
単純な転送だけでも、CPUがボトルネックになるケースがあります。
なぜ設定や工夫では解決できないのか
ここまで挙げた問題点は、OS設定やチューニングで解決できるものではありません。
USB2.0しかないこと、LANがUSBにぶら下がっていることは、ハードウェア設計そのものの制約です。
HATを増設することで、USB3.0や1GbLANを使えるようにするものもありますが、これももともともの性能がネックになって、十分にそれら規格のスペックを満たせない可能性があることも注意が必要です。
どれだけ設定を詰めても、構造上の天井を超えることは難しいと言わざるを得ません。
まとめ:用途を割り切る必要がある
以上のような理由でラズパイ3以前のモデルは、一般的なファイルサーバー用途としては正直かなり厳しいです。
小さなファイルをたまに置く程度や、設定検証・実験用として割り切るなら使えますが、常用のファイルサーバーや大容量データのやり取りには向きません。すくなくとも自分が試した結果ではちょっと常用できる速度ではありませんでした(ストレスがすごいことになります…)
きちんとしたファイルサーバーを作りたい場合は、USB3.0とLANが独立している世代(ラズパイ4以降)や、別のSBC・小型PCを検討するのが現実的です。
余っている古いラズパイの使用方法として真っ先に思いつきそうなファイルサーバーですが、速度を出したい場合はちょっと厳しいと言わざるを得ません。
自分の場合はファイルサーバー用途はあきらめて、Gitのリモートリポジトリや、Slackの通知サーバーなどデータ量があまり必要ない用途で古いラズパイを活用するようにしています。


コメント