ALH84001

私的コラム&雑記(&メモ)

自宅NAS構築計画:HPE Microserver Gen 10 Plus

2020-07-03 | ガジェット / PC DIY

07/07、07/11更新 - 解り難そうな部分を加筆修正
11/06 - 別記事に合わせタイトルを変更

 筆者は現在NASの新調を考えており、その候補として調査したHP Enterprise Microserver Gen10 Plusについての検討内容をまとめる。なお、購入前の調査のため実物を使った検証結果ではなく、実物レビューはServeTheHomeのレビュー記事を参考にされたい。

想定する用途

 本稿では用途としてNASを含めたストレージサーバーを想定して検討している。
 本稿で「ストレージサーバー」とは基本的にNAS(NFSやCIFSでネットワーク経由でファイル共有)やSAN(iSCSIやNVM-oIF)をホスティングするサーバーのことであるが、個人的にはUPnPやDAAP(iTunes)メディアサーバーも想定している。ネットワークプロトコルやインターフェースが異なるだけでネットワーク越しのファイル共有という意味では同じだからである。

 ストレージサーバーに用途を限定しているのは、個人用途で3.5インチHDD 4台(8TB~16TB x 4-bay = 32TB~64TB)が必要となるとストレージ以外を想定する方が難しいからである。もちろん、企業/SOHOであれば例えばデータベースサーバーやドメインコントローラー(+ホームディレクトリ)の用途も考えられるが、それらは本稿の趣旨からは外れるため割愛する。

 Microserver Gen10 Plusは価格は構成や購入元や国にもよるだろうがサーバー本体は10万円前後で購入できる。これに無償のTrueNAS Core(旧FreeNAS)やOpenMediaVault(OMV)などと組み合わせる場合、手間という追加コストはかかるがQNAP・SynologyなどNASベンダー製のハイエンドNASと予算的には同等に収まる可能性がある。NASや自宅サーバーとしての導入はありそうだ。

ハードウェア概要

 本機はHP EnterpriseのProLiant Gen10サーバーファミリーに属するいわゆるPCサーバーで、PCサーバーに慣れている人にとっては普通のHPE製ProLiantであるが、一般的なPCとは構成に一線を画すものがある。
 例えばメモリーにはDDR4 ECC Unbufferedメモリーが採用されておりCPUはそれに対応したものが採用されているし、本機のリアI/OにはVGAとDisplayPortのディスプレイ出力が見えるがIntel HD Graphicsの出力ではなくHPE製BMCであるiLO 5のディスプレイ出力でゲームや動画再生には適さない。筐体内部のメインボード上にはVMware vSphereなどをインストールするためのUSBポートがあるなど、一般的なPCとは似て非なるものである。

 HPE MicroserverにTrueNASやOMVを導入してストレージを管理するような人であれば、パーツを個別に購入して自作する選択肢も考えられるだろう。詳細は割愛するが、NASベンダー製NASアプライアンス・HPE Microserver Gen10 Plus・自作サーバーを比較すると概ね以下のような違いになるだろう。それぞれに利点はあるが、Microserverの利点は自作の自由度とNASアプライアンスの手軽さ・自由度・性能・価格のバランスの良さだと思う。
 ストレージとして使用する場合、ソフトウェア構成の自由度は重要かもしれない。NASアプライアンスではファイルシステムの選択肢が限られるからで、例えば、NASアプライアンスの多くはext4・一部でBtrfsが使用しており筆者が知る限りZFSを採用したNASアプライアンスは存在しない。Microserverや自作ではTrueNASやOMVを使うことで手軽にZFSを利用できる。

  メーカー製
NASアプライアンス
Microserver Gen 10 Plus 自作
導入の容易さ
構成の自由度
(Software)
構成の自由度
(Hardware)
設置スペース
コストパフォーマンス △ / 〇

マイクロプロセッサー

 搭載CPUとして購入時にXeon E-2224とPentium Gold G5420から選択できる。
 XeonあるいはPentium Goldという名前が付いてはいるが同じCPUアーキテクチャー=Coffee Lake RefereshをベースとしたSKUの違いなのでCPUコア単体・シングルスレッドでのIPCはほぼ同等である。性能についてはARMプロセッサーを搭載したNASより優れていることは間違いないが、十分かといえばワークロードを検証する必要がある。

 E2224とG5420の2種類のCPUを一般的なワークロードをテストした場合ではE2224がG5420の倍ほどのパフォーマンスを得られる。物理CPUコア数と付随するキャッシュの容量が2倍でありピークの動作周波数も高いからこの性能差は妥当といえる。
 しかし、ストレージサーバーに限定した用途ではE2224の方がG5420よりも高性能ではあろうが2倍もの性能が得られるかについては疑わしい。HDDアレイのようなストレージやネットワークアプライアンスではI/O待ちでCPUが遊んでしまう可能性が高く、そのような用途ではSMTが効果的に働く可能性が高いが、E2224ではSMT無効・G5420ではSMTが有効だからだ。つまりG5420では演算ユニットが効率よく使われるがE2224では効率が上がらないため、性能差は2倍にはならない可能性が高い。
 個人的にはなぜHPEが4C/8Tのオプションを用意しなかったのかと疑問ではあるが、Coffee Lake-S/-E/-R/-ERプラットフォームで4C/8TとなるとXeon E-2134またはE-2234となりリストプライスで$50ほど高価になってしまうし、HPEはストレージサーバーに用途を限定していないせいだろう。

  E2224 G5420
Core/Threads 4C/4T 2C/4T
Frequency (Base) 3.4 GHz 3.8 GHz
Frequency (Turbo) 4.6 GHz
Last Level Cache 8 MB 4 MB

 ここではMicroserverをストレージサーバーとして使う想定なので、ZFSファイルシステムのRAIDZアレイをホストすることを想定すると、課題は消費するリソースの多さである。ZFSについてはそれだけで記事1本分以上になるので割愛するが、あらゆるZFS解説書・解説blogが高速なCPUと大容量メモリーを勧めているので、ZFSの導入を想定しているのであればXeon E2224の選択をお勧めしたい。

 ところで、メディアサーバーとして考えた場合、UPnP/DLNAサーバーとしてはもちろんPlex/Embyサーバーとして使うことも考えられるが、トランスコードにQuickSync Videoは使えないので注意が必要である。Xeon E2224はiGPUが無効化されているしG5420はiGPUがあるはずだがHP Enterpriseによるとファームウェアで無効化されているためである。

ネットワーキング (1) 内蔵GbE: i350-AM4

 私が個人的に疑問に思うのが本機に搭載されているGbE=i350-AM4である。
 Intelの4ポート1GbEコントローラーで、1GbEながらVMD-qやSR-IOVに対応する。SR-IOVは例えば合計4台以上の仮想マシンがホストされている場合でもPCIeパススルーでネットワークアダプターを割り当てたりといった使い方ができる。こういう使い方は特に10GbE以上では有効なのだが1GbEではあまり採用例は見ない。

 個人的には、i350-AM4よりも例えばIntel i225-LMなどの方が良かったのでは?という疑問もある。2.5GBASE-Tに対応しており$4.06なので4ポートに4チップでもi350-AM4よりも安価だが、SR-IOVに対応していない。HPEがどういった使い方を想定して本機にi350-AM4を選択したかは不明だが、恐らくはVMwareなど仮想マシンホストとしての使い方を想定してi350-AM4を選択したのだろう。

 本稿では本機を仮想マシンホストとしてでなくストレージサーバーとすることを想定しているから、残念ながらi350-AM4はあまり良いNICとはいえない。後述するがPCIe x16に10 GbEアダプターを接続することを提案したい。

ネットワーキング (2) PCIe 10GbE

 拡張性に余裕のあるPCサーバーならばともかく、本機にはPCIe x16 1スロットしか拡張の余地が無いので本当に必要なものを選択する必要がある。
 そこで検討・提案したいのがQNAP製Synology製の10GbE・M.2コンボカードである。PCIeカード1枚で10GbEとM.2接続のデバイス x 2個を拡張できる。これらの拡張カードはPCIeカードにPCIeスイッチと各種コントローラーを載せたものだからPCIeスロットを持つマシンと対応ドライバーがあれば技術的には動作するはずだが、メーカーが想定している用途ではないから保証を受けられない可能性があるので注意されたい。

 QNAP製4種とSynology製1種が存在するが、搭載しているパーツ・対応するデバイス・性能に差異があるため注意が必要である。
 10GbEコントローラーはQNAP製の旧モデル(QM2-2S10G1T・QM2-2P10G1T)ではTehuti TN9710P、QNAP製の新モデル(QM2-2S10G1TA・QM2-2P10G1TA)ではMarvell(旧Aquantia)AQC107である。Synologyは情報がないが恐らくAQC107だろう。TN9710PとAQC107の機能的な差は前者は10G/1GbE対応に対し後者は10G/5G/2.5G/1GbE対応なので後者を選ぶのが無難であろう。Intel製・Mellanox製の10GbEと比べれば性能的・機能的に見劣りするのは否めないがストレージサーバーで使う分には十分だろう。性能面から言えばSATA HDDはアレイを組んでも10Gbpsより遅いし、Intel・Mellanox製の10GbEコントローラーに搭載されるSR-IOVなどの機能はストレージサーバーには不要だからである。
 Marvell・Tehuti製コントローラーになくIntel・Mellanox製にある機能でストレージサーバーで効果的なのはRDMAやRCoEである。これらの機能が必要な場合はIntel・Mellanox製コントローラー搭載製品を選ぶ必要がある。

 M.2スロットについてだが、QNAP製はSATA接続とPCIe Gen2 x2接続・Synology製はPCIe Gen3 x4接続から選択することになる。PCIe接続の場合M.2 M-key形状であれば他のデバイス(例えばGoogle EdgeTPUなど)も接続できるが、本稿ではストレージサーバーを想定しているためSSDになろうかと思う。
 個人用途では考え難いが、サーベイランスカメラのビデオ保存先として使用する場合、EdgeTPUやIntel Myriadを接続して顔識別などもできそうだが、本稿の趣旨とはずれるため割愛する。

 注意が必要なのは、接続されるプロトコルと性能についてである。
 PCIeカードそのものはホストとPCIeで接続され、PCIeスイッチでスイッチングして各デバイスと接続するわけだが性能がやや異なる。

  QNAP SATAモデル QNAP PCIeモデル Synology PCIeモデル
PCIe Switch IDT 89HPES12T3G2
3 port 12 lane
IDT 89HPES10T4G2
4 port 10 lane
?
4 port 20 lane
Host-PCIe Switch PCIe Gen2 x4 (20Gbps) PCIe Gen2 x4 (20Gbps) PCIe Gen3 x8 (64Gbps)
PCIe Switch-NIC PCIe Gen2 x4 (20Gbps) PCIe Gen2 x2 (10Gbps) PCIe Gen3 x4 (32Gbps)
PCIe Switch-SSD PCIe Gen2 x2 (10Gbps)
SATA III 6Gbps x2
PCIe Gen2 x2 (10Gbps) x2 PCIe Gen3 x4 (32Gbps) x2

 QNAP SATAモデルではPCIe Switch - 10GbE NIC間がPCIe Gen2 x4(片方向20GT/s・双方向40GT/s)で接続される。これは10GbEよりも高速なためネットワーク接続は高速だが、一方でSATA III SSD(計12Gbps)がPCIe Gen2 x2接続(10GT/s)のSATAコントローラーで接続されるためSSDは十分な性能を発揮できない可能性がある。
 例えばM.2 SATA SSDをWriteキャッシュとして用いる場合、書き込みでは以下のようなフローになる。
Client=(10Gbps)⇒10GbE NIC=(<20GT/s)⇒CPU=(10GT/s)⇒SATA⇒M.2 SSD=(10GT/s)⇒CPU=(6Gbps x 4)⇒HDD
実際のホストCPU-PCIe Switch間の帯域は上り20GT/s・下り20GT/sだが、途中のPCIe帯域は下り10GT/s・上りが最大で計30GT/s必要な場合があり不安である。また、そもそもM.2 SATA SSDでキャッシュとして有意な速度が得られるのか?という疑問もある。

 QNAP PCIeモデルではPCIe Switch - 10GbE NIC間がPCIe Gen2 x2(10GT/s)で接続されるのでSATAモデルよりも若干遅くなる。また、PCIe接続のSSDを接続できるがPCIe Gen3 x4(32GT/s)ではなくPCIe Gen2 x2(10GT/s)なので高速なSSDを搭載しても十分なパフォーマンスは得られない。
 M.2 SSDがPCIe Gen2 x2(10GT/s)が2基なので、SSDだけを見ればストライピングなどによりキャッシュとして十分な性能を得られそうに見えるが、PCIe帯域が圧倒的に不足である。例えばM.2 SSDをWriteキャッシュとして用いる場合、書き込みでは以下のようなフローになる。
Client=(10Gbps)⇒10GbE NIC=(<20GT/s)⇒CPU=(20GT/s)⇒M.2 SSD=(20GT/s)⇒CPU=(6Gbps x 4)⇒HDD
途中のPCIe帯域は上り40GT/s・下り20GT/s必要な計算だが、実際のホストCPU-PCIe Switch間の帯域(上り20GT/s・下り20GT/s)を上回ってしまっている。

 Synology PCIeモデルは3機種で唯一PCIe Gen3 x8(片方向32GT/s・双方向64GT/s)対応でNVMe M.2 SSD本来の性能を発揮できる。また、ホストと拡張カードの接続が64 GbpsあるからSSDと10GbEが競合し難い構成となっている。例えばM.2 SSDをWriteキャッシュとして用いる場合、書き込みでは以下のようなフローになる。
Client=(10Gbps)⇒10GbE NIC=(<20GT/s)⇒CPU=(32-64GT/s)⇒M.2 SSD=(32GT/s)⇒CPU=(6Gbps x 4)⇒HDD
Synology製品の場合、上述の通りホストCPU-PCIe Switch間の帯域が片方向32GT/s・双方向64GT/sもあるため余裕がある。それでもM2 PCIe Gen3 x4 SSD 2基の帯域には僅かに不足しているのだが、SATA 6Gbps 4基のHDDのキャッシュとして使う分には十分以上に高速である。今回検証している用途=ストレージサーバーではWriteでは10GbEがボトルネックになって10Gbps以上の書き込みが必要ない(もちろん、25GbEや100GbEも搭載可能だが…その場合はSSDの設置スペースが無いため、この想定そのものが無意味である)。
 もし、今回想定しているような用途で使用する場合はSynology製コンボカードの使用をお勧めしたい。

 ところで、PCIeに普通の10GbEカードではなく10GbE・M.2コンボカードを勧める理由はM.2 SSDにシステム領域やキャッシュ領域を配置して4ベイのHDDをデータ領域のみにするためである。
 ZFSでストレージを組む場合、システム領域・データ領域(ZFSプール)・キャッシュ領域(ZFS SLOG・L2ARC)の3種類を考慮する必要があるが、SSDにOSとキャッシュを格納することでHDDをデータ領域で占有できる。様々なZFS解説ページがZFSプールにHDD全体を使うことを勧めている。パフォーマンス面で利点があるほか管理面でも利点ある。
 メーカー製NASなどでは、メインボード上のフラッシュにBootloaderとLinux Kernelのみが入っており、Linuxルートファイルシステムはデータと同じHDDに格納されていることがあるが、管理やトラブルシューティングを考えると良いアイデアとは言えない。例えばBuffalo製NASの場合は搭載されているHDDすべての第1パーティションがRAID1でミラーリングされシステムが格納されているが、これは別の見方をすればディスクをすべて抜くと起動不可になってしまう。
 ZFSでは読み書きの高速化のために、読み出しキャッシュ=L2ARCや書き込みキャッシュ=SLOG(ZILの独立させた領域を割り当てたもの)を設定することが多くSSDを推奨されることが多い。また、SLOGは書き込み障害時にデータのリカバリーに使用されることからZFSストレージプールと同じHDDではなく別途領域を設定する方が信頼性の面で推奨される。

Comment