TrueNAS | 外付けUSB HDDでRAIDを組んだら十分な速度が出た話

2022-10-05
  • B!

TrueNAS VMware サーバ構築

TrueNASでは外付けUSBを3台接続してRAIDZを構築している。

TrueNASのハードウェア構成

そもそもESXiで仮想マシンを使用している状況でどうやってUSB周辺機器を接続しているのかという話だが、ESXiにはホストに物理的に接続したUSB機器をゲストOSが直接利用するように割り当てる設定ができる。

仮想マシンの設定からUSB機器の追加メニューを選び、ホストマシンに物理的に接続されているUSB機器の名称を選ぶだけで設定は完了。※TrueNAS仮想マシンが稼働中なので、USB機器設定は薄字で表示

ESXi v6.7からUSB 3.1、v7からはUSB 3.1 Gen2の接続もサポートされているので、結構使える機能だ。ただし、ESXi 6.5以降はESXiのUSBドライバの変更のためサウンドデバイスは使えないなど一部制約はある。

詳しくはVMの公式情報。現在公式に使えるUSB周辺機器はKeyboard、Mass Storage、USB NICのみ。音が出ない話は多分USB Audio Classの仮想化が未サポートになったということであろう。

NASに求めるストレージの性能とは

ストレージはIOPS性能が高いに越したことはないが、小規模のNAS用途であればそれほど頑張らなくても良い。その理由はどんなにストレージが高性能でもネットワークがボトルネックになるから。

通信スピードは下表のような程度である。

規格bpsMB/s
USB 3.1 Gen15Gbps625MB/s
1000BASE-T1Gbps125MB/s

現実問題、ほとんどのパソコンの有線LANは1Gイーサだし、ノートPCはさらに遅い無線LAN。仮にWi-Fi 6を入れたとしても簡単に1Gbps超えはできない。また、小規模なNASは同時利用者が少ないのでHDDのランダムアクセス性能もそこまで多くは求められない。

LANが1Gbpsに対して上流のUSB 3.0が5Gbpsだからなんとかなるのである。さらに2.5inch HDDのシーケンシャル読み出し速度はせいぜい140MB/sぐらい。書き込みはもっと遅いので下手すると大元のHDDがボトルネックになる。

このように考えると、小規模用途であれば外付けUSBのRAIDでもなんとかなるのである。

実際の性能はどうなのか

現在はこのようにBUFFALOの4TB 2.5 inch USB HDDを3台接続してZFSによるRAIDZを構成している。

USB HDD単体の性能

NASを構築する前に、USB HDDを直接ノートPCへ接続してみる。先に書いたようにHDDの遅さがボトルネックとなる可能性が高いのでUSBとHDD単体の能力を測ってみるというわけだ。
単体HDDをUSB直接接続
2.5 inch HDDなので、まぁこんなところであろう。3.5 inch HDDほどアクセス速度は出ないことは普通である。結果はUSBの転送速度よりもずっと遅いので、USBよりもHDDの速度依存であることがわかる。

ESXiにUSB HDDを接続した場合

次にESXiのUSBパススルーがパフォーマンスにどれぐらい影響するかを計測してみる。TrueNASにUSB HDDを接続した場合の単体性能を予想するためだ。ESXi上で動作しているWindows 7にUSB HDDを接続して計測した。速度は先に計測した実機とほとんど変わらず、ESXiのUSBパススルーのストレージは実用に耐えうることがわかる。
仮想マシン上でESXiのUSBパススルーでHDD単体を接続

TruneNAS上の性能

では本題。
USB HDD → TrueNAS →(有線LAN)→  PCの順で接続。ファイル共有でNASへ接続した末端のクライアントPC側でベンチマークを取ってみる。
PCからLANでTrueNASのUSB接続ZRAIDストレージへ接続
1Gイーサネットが125MB/sであることを考えると、NASとしては結構いい性能が出ている。
そして負荷が高いQ1やランダムアクセスはローカルUSB 3.1 Gen1接続よりもむしろ性能は上がっている項目の方が多い。RAIDで速度が上がったか?この点はUSBの直接接続とNASの接続で同じベンチマーク方法を取ることが正しい計測なのかどう正直かわからない部分もある。しかし体感速度としても違和感はなく、実用上はTrueNASによるネットワークフォルダは2.5インチUSB HDDと同じくらいの使用感ととらえて良さそうである。

ESXi内で接続

最後にもう一つ実験をしてみた。

同じESXi内部で他の仮想マシンからTrueNASへアクセスしてみた。物理イーサネットのボトルネックを通さずにESXi内部の仮想スイッチ経由でNASへアクセスする方法である。ESXiでは内部に仮想スイッチを設けて物理NICと仮想マシンの橋渡しをする構造である。 

結果は驚きの数値。
TrueNASへ同じESXi上の仮想マシンから接続
ESXi内部の仮想ネットワーク経由となったため、物理1Gイーサネット(125MB/s)のボトルネックがなくなり、シーケンシャルはSATA接続のHDDぐらいの数値が出ている。
比較対象として、USB直接接続のHDD単体の結果がこちら。
単体HDDをUSB直接接続
両者を比べると、RAIDの効果なのかZFSのキャッシュの効果なのかシーケンシャルが100倍以上速くなる数値も出ている。疑うとすれば、仮想環境でベンチマークソフトを動かしているので、仮想環境のクロックがどれだけ正確に動いていて計測結果がどれだけ正しいのかという点。この疑問については、この記事の冒頭でリアルマシンとESXi経由のHDD単体テストの結果で数値に大きな差がなかったということもあるので、仮想マシン上の計測結果は信用しても良いと考える。

物理NICというボトルネックを廃するとこれぐらい速くなるのであれば、10Gbイーサネットで構築すればリアルマシンでも速度アップするかもしれない。

まとめると

TrueNASでUSB HDDによるRAIDZをメインストレージにして構築したNASは、小規模な用途であれば十分に活躍できる。ランダムアクセスが弱いので利用者が多い環境ではやや不利かもしれないが、個人用途の一般的な書類のバックアップやデータ格納の用途であれば十分ですね✌️