ASRock Steel LegendとFractal Design Meshify 2 XLで作る、準廃エンドNASサーバーの話(ソフトウェア編+まとめ)

84.5TiBのNASを作った話の後編です。
前編はこちらから

NAS用のOSをどうにかする

NASのHDDをRAID0で構築する猛者はいないはずです。少なくともRAID5は必要という認識でしょう。……18台のHDDを搭載してRAID1というのも馬鹿の極みでしょう。

RAID復旧中にHDDがもう一台死んでRAID5だと詰むケースはIBMに勤めていた方から何度かあったという話を聞いていますし(注:IBMはRAID6を使っていたため、2台目の故障はなんとかなった+流石に3台同時故障はなかった模様)

さて、RAIDカードなどという選択肢は最初からありません。それをしたかったら16ポートSASなどの出番ですが価格がはねます。

ソフトウェアRAIDを利用するとすれば、Windowsの記憶域プール、Linuxの機能(mdadmで使う)、そしてZFSファイルシステムがあります。

Windows記憶域プールはその名の通りWindowsの機能で、RAID0/1/5/6に対応しています(RAID6=デュアルパリティはサーバー専用?)。RAID6が欲しいのでWindowsクライアントOSでは無理でしたし、Windows Serverは高すぎます。

Linux mdadmを利用するとして私が雑に調べた限り、HDDの容量は揃えてください、できれば製品どころかロットを揃えてくださいと書かれており、うっかりロット違いどころかSMR/CMR混在とか起こりそうなのでやめておくことにしました。というより、ZFSが上記を遥かに上回る高性能なのです

Solaris時代にSun Microsystemsの社員がサーバーのHDD吹っ飛びを喰らい、「メモリなら挿すだけでOKなのに」ということから出来た高機能なファイルシステムがZFSである。電源をブチッと抜いた程度ではデータロストしない堅牢性を売りにしているなどのバックグラウンドと、HDDを容量違いで揃えてもOK、大容量のドライブに換装していき、全部のドライブの容量が拡大されればそのサイズに合わせてプールが作られる特徴も使いやすさの一員です。

そんなZFSをかんたんに利用できるOSとしてFreeNASがあります。おっと失礼。今はTrueNAS COREですね。こちらでストレージプールを作り、RAID-Z2で18台を一括ストライピングすることで、RAID6相当の安全性を確保できるというわけです。

まずはTrueNAS COREを入れてみる

ネタバレ:使えません

TrueNAS COREをrufusを利用してUSBにインストールし、さっくりとTrueNAS COREをインストールしてみます。そして、各ハードウェアが認識されていればそれで良いのですが……

結論から言うと3デバイスも認識しませんでした。Dragon LAN(2.5G LAN)とSASカード、そしてSATAカードも認識しませんでした……

デバイスドライバーのインストールが必要ということで、手始めに資料の多そうなDragon LANの方のデバイスドライバーをインストールしようとし…… makeが最初から通りませんでした。READMEがmake出来る前提で書かれていたためもうどうしようもありません。TrueNAS COREを直インストールするのは諦めます。

ド安定のWindows 10 Pro+Hyper-Vしよう

Windows 10 ProにはHyper-Vという仮想化環境があります。これにTrueNAS COREをインストールして運用するのは意外と便利です。例えば、Chrome Remote Desktopを入れておくことで、トラブル時に遠隔でサーバーを見ることが出来たり、使い慣れたCrystal Disk Infoを使ったり出来るのですから。

ともかく、Windows 10 Proをインストールし、Hyper-Vを有効化、Hyper-Vで仮想マシンを作成してTrueNAS COREをインストールします。割当メモリは48GB(Windowsに16GBを残した)、スイッチは外部とつながるものを用意します。

TrueNAS COREをインストールしてネットワーク管理まで終わったらNASをシャットダウン、Windows側でディスクの管理を呼び出し、繋いでいるHDD18台全てをオフラインにしていきます。初回接続時にMBR/GPTで初期化しろと言ってくるのでGPTで全部初期化します。

すべてオフラインにしたら、先ほど作成したTrueNAS COREの設定から、SCSIハードディスクを18台追加し、物理ディスクを指定する形で18台を一斉に設定します。

すべてを繋げきったらTrueNAS COREを起動し、WebコンソールからStorage→Poolsでプールを作ります。18台を一括セットしてRAID-Z2とするのがオススメです。
RAID-Z3については未検証ですが、負荷が上がりそうなのでCore i7の理由が高まると推定されます。どうせ1Gbpsの回線ではどうでもいい話ですけどね。

HDDをプールに繋げたら、あとはお好きなように管理していくと良いでしょう。この話は簡単にできる設定は書かないので。

サービスを展開しよう

SSHを外界から繋げられるようにすれば、スマホからかんたんにNASを使えて便利だろうということで、外界接続用の設定をします。TrueNAS COREの不具合を踏んだので回避策です。なんでTrueNAS COREのSSHはLANからのアクセスしか出来ないようになってるんですかね? どこで設定できるんですか?(エンジニア二人がかりで2時間掛けて探した)

ホストのWindowsにnginxを導入し、こんなコンフィグを書きます

stream{
server{
listen \d{1,5};
proxy_pass NAS_server_IP:22;
}
}

まあ、お好きなListenポートを使ってください。

Slack/Discordに障害通知をする場合、ホストのnginxにこんなコンフィグを書きます。 「location /」のセクションの後くらいに

          location /discord{
proxy_pass https://discordapp.com/api/webhooks/**********/slack;
}

と書いてください。私はDiscordを利用していますが、こちらはWebhookのアドレスです。その上で、TrueNAS COREの方のAlert ServiceのSlackのアドレスには

http://WindowsホストのIP/discord

みたいに記述しておけばOKです。なんで私の環境ではWebHookのアドレスを直書きして動かないんですかね?

速度テストの話

NASが1Gbpsでつながっている場合、基本的に1Gbps律速のNVMeと同じように使えます。と言っていいかもですね。安定して早いです。

10Gbps(Hyper-Vなので表示上?)帯域でつなぎ、SMBでファイルを送るとすると、750MB/sくらいで頭打ちを喰らいました。なお48GBの大容量メモリを適用している関係で小さなファイルだとキャッシュが効いて20Gbpsとか訳がわからなくなります。

キャッシュが効かないようにCDMのテスト容量を64GiBでやったとしてもこの速さが出ます。もうNASってレベルじゃないですね。

費用対効果

前編のハードウェア費にWindows 10 Proの費用21,750円を足した計411,612円が初期費用となります。ここにHDD定期交換費を年4台(3台交換+予備1台)として年4.2万円、電気代は平均150W消費するので年間1314kWh→年39,420円がランニングコストとしてかかります。

ハードウェアが壊れるまで…… は流石に検討できませんからMTTF15万時間とかいうファンの寿命から算出してみましょうか…… 17年?!(noctuaさんがおかしいだけでした)

今までの経験から、PCは連続稼働と言えど5年は持つはずです。ということで減価償却を5年として年額にバラしますと年82,322円となります。5年間のランニングコストは年間163,742円となります。

大手クラウドストレージサービスは2TB年間1.5万円程度が相場なので、この計算でいけば22TB以上使う方はこんな化け物NASでも自作したほうが安上がりです。ちなみに、GoogleDriveは10TBの契約が15万を超えるため、それ以上ならNASにしたほうが良いでしょう。

まあ、そもそも10TBも使う人がどこにいるかって話ですが…… このNASは作成してすでに7TBも使われているのですよ(笑)

なお、より予算を節約し、HDDが最大8台程度搭載できる程度に小型(?)に安価にNASを作りたい場合、Define R5はかなり優秀な選択肢になります。HDDトレイの構造もDefine R6以降よりも豪華ですしね。この場合、30TiB程度のストレージが作れるはずですが、様々なパーツを安く済ませられるので20万もあればお釣りが来ます。年間2台のHDD交換で済むのでランニングコストも抑えられますしね。

構成変化の話

もし、うっかりHDDを18TBにしたら250TiBのストレージスペースが作れることが分かります。なお予算は136万(HDD代)。頭おかしい。

と思ったら、TeraStationとかだと16TBx12台のパターンで300万するらしいので、不要な部分を削ってこの価格に抑えられるなら意外とあり……?

Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です