FreeNAS + VMWare ESXi で作る自作コンバージドインフラ

 

構築のポイント(苦労した点)

FreeNASによるストレージ構築

4台のサーバのうち、2台をNASサーバに仕立てて、NFSボリュームを公開するようにします。

PCサーバをNASとして利用するために、FreeNASを採用しました。FreeNASはFreeBSD系のOSに、OpenZFSの実装を組み合わせたNAS用のOSです。ZFSファイルシステムは、エンタープライズ向けに開発されたファイルシステムで、データが破損しにくい性質を持っています。

起動ディスクをSSDとして光学ベイに収納

安価に手に入る一般的な1Uサーバは、3.5インチHDDを4本組み込めるようになっています。3.5インチHDDは、現時点で最も容量単価の安いストレージです。4TBハードディスクを4本組めば16TBの大容量を確保できることになります。

ここで問題となるのがOS(FreeNAS)の起動ディスクです。FreeNASの起動ドライブに必要なディスク容量はわずか数十ギガバイトにすぎません。そのために3.5インチHDDの1本を占有してしまうのは勿体ないことです。だからといって、パーティションを切って1本のディスクにシステムドライブ部分とデータドライブ部分を分けるのは面倒です。

そこで今回は、1Uサーバにもともと備わっていたCD/DVD-ROMドライブを取り外し、光学ベイに2.5インチサイズのSSDを格納することとしました。

  • 光学ベイとマザーボードをつなぐ電源・SATAケーブルのコネクタは、光学ベイ用の小型コネクタを利用していました。このコネクタは小さいだけあって強い力を加えると簡単に壊れてしまいます。慎重に引き抜けばよかったのですが、ケーブルについていたコネクタを壊してしまったため、同等品を調達するのに手間取ってしまいました。

  • FreeNASの起動に必要なSSDは、64GB~100GB程度の小さなもので十分です。

  • PCサーバのBIOS画面で起動ディスクを指定しますが、十分なドキュメントがないためなかなか思ったドライブから起動してくれず、試行錯誤を繰り返しました。この辺は中古サーバハンターとしていつも苦労するところです。(すんなり行きたければ、素直に新品を買って販売店に相談しましょう)

起動ディスクにUSBメモリは危険です

  • 容量だけでいえば、USBポートにUSBメモリスティックを挿して、そこにFreeNASをインストールすることもできます。しかし、長期の安定運用をするには、USBメモリからのOS起動は危険です。

  • USBメモリは一時的にPCに挿入してデータをコピーし、通常はPCから切り離されてデータを携帯するという目的を想定して設計されています。常時通電しつづけ、データの読み書きが繰り返される状況は、想定されていないように思われます。

  • 特に、ラックマウントサーバの背面コネクタ付近は、熱風が吹き付ける過酷な環境です。ここにUSBメモリを挿したまま数か月放置すると、携帯用のUSBメモリは、熱に負けてデータを失ってしまう恐れが高いのです。(過去、鉄飛では4回トライして4回データ消失に見舞われましたので、確率100%です)

  • 鉄飛テクノロジーではかつて、FreeNASやVMWare ESXiをUSBメモリから起動する構成のマシンを運用したことがありますが、100%の確率で再起動不能に陥ってしまいました。

  • 2年に一度か二度の停電などで、サーバをシャットダウンした後に、OSが起動できなかった時のショックは計り知れません。(インストーラディスクからOSを入れ直して、ZFS RAIDを復旧させるのに何時間もかかってしまいます)

  • SSDは、腐ってもPCに内蔵して常時通電環境に置かれることを想定されて設計されており、プラスチックケースに入ったUSBメモリと比較して、はるかに信頼性が高いと考えます。

10Gbps ネットワークカードを装着

  • 基本的には挿すだけです。ラックマウントサーバの内部は狭いので、物理的に他の部品と干渉しないように気を付けましょう。(サーバの現物が届いて、実物の拡張スロットを確認してから、ネットワークカードの調達をするほうが無難です。)

  • FreeNASが対応しているNICというポイントも重要ですが、一般的なIntelのNICならまあ大丈夫です。

RAID構成をどうするか?

  • NASを構成するとなると、RAID構成をどうするかは迷うところでしょう。

  • マザーボードに組み込まれたハードウェアRAIDを使って、RAID1、RAID5にするという選択肢もありますが、私たちは、FreeNASの標準機能をつかって、ZFS RAID-Z (4本のディスクのうち一本分をパリティディスクとする構成)で構築することにしました。

    • RAID1は、わかりやすさとデータの安全のためにはよいのですが、容量が半分になるため、今回は見送りました。(今回は、同一ハードウェア構成のNASを二台構築して、相互にデータのバックアップを取り合う予定です。RAID1+相互ミラーリングの組み合わせは、冗長にすぎると判断しました。)

    • RAID5が使えるRAIDカードは相対的にハードウェアが高価であり、安い中古1Uサーバとして調達できないので、今回は見送りました。

    • ZFS Raid-zを快適に使うには、それなりにCPUパワー・メモリを必要とします。これを見越して、NASサーバのメモリは少し多めに搭載してあります。

NFSとして公開するか?iSCSIとして公開するか?

  • RAID-zボリューム全体にデータセットを作成し、これをNFSで公開することにしました。

  • 一般的には、VMWare のバックエンドストレージはiSCSIで構築する例が多いと思いますが、iSCSIボリュームは同時に複数のクライアントからマウントできないという点で、NFSに比較して運用上の制約が大きくなってしまいます。

  • NFSボリュームをVMWare ESXiからマウントすると、ディスクIO性能が劣悪であるという問題に見舞われましたが、これについては別途後述(NFSの性能問題)の方法で高速化を実現しました。