FreeBSD ディスクレス・サーバー構築作戦

私はディスクレス構成PCが好きだ。これは、HDDをSSDに置き換えたスピンドルレスではない。外部記憶装置が接続されていないのに、動作するシステムということ。

たとえばこんな感じ。

  1. ネットワークカード付PCマザーボードにCPUとメモリとビデオだけインストールして、パソコンケースに 固定。HDDやSSD、USB記憶装置など外部記憶装置は接続しない。
  2. 続いて、キーボード、マウス、ディスプレイ、有線LAN、電源ケーブルを接続。
  3. 電源ONすると有線LAN経由でOSが起動して、PCで作業が出来るようになる。
  4. パソコンの台数が不足したら、新たに上記1と同様のPCを調達し、LANに接続して電源を入れるだけで増設終了。

当然、何の仕掛けもなくこんな便利なシステム管理が出来るわけが無く、ディスクレスクライアントにOSとプログラムを供給するハードディスク付きのサーバーが必要ですし、事前にサーバー側でPCをディスクレス起動するためのセットアップを行っておく必要があります。この作業は結構複雑です。

Unix系OSである、Solaris, HP-UX, Linux, BSD系, MacOS などは、標準でディスクレス構成を行う事が出来ますが、Windows の場合は(おそらく)標準では構成不能で、3rdパーティーがディスクレス構成にするためのツールを提供しているはず。

標準かオプションか、有料か無料かは、OS毎のライセンスを確認するとしてここでは触れませんが、有名なOSはディスクレス構成を構築する事が出来るはずです。

ディスクレス・サーバー構成では、次のような特徴があります。

長所:

  1. ユーザーとしてコンピュータを使用する場合は、利用者は何も管理する必要がない。
  2. PCが何台あっても、OSはサーバー上の一カ所にあればいいので、HDD容量の節約になる。
  3. セキュリティーパッチや、アプリケーションのアップデートなど管理作業はサーバー一カ所で行えば全てのクライアントに反映されるので、アップデート漏れが起きない。
  4. 節電に役立つ。HDDを持たないためHDD分の電力が節約になる。
  5. HDDのノイズがしなくなる。

短所:

  1. サーバーにアクセスが集中するとクライアントのパフォーマンスが落ちる。
    必要なプログラムはLAN上のサーバーにあるので、ディスクレス利用者のアクセスが集中したり、大きなプログラムを使うとHDD内蔵の場合より遅くなる事がある。
  2. 実装メモリ容量にコストが掛かる。
    メモリをたくさん搭載するほどパフォーマンスがよくなるためメモリコストがかかる。
    スワップが発生してサーバー上の仮想記憶へのアクセスが発生すると極端に遅くなる場合がある。
  3. ユーザーによるアプリケーション管理が制限されているため、管理者の作業が増える。
  4. 全てのディスクレスPCを同一構成にしないと、システム管理者の作業が激増する。
  5. システム管理を全てサーバー側で行う必要があるが、ユーザーが利用中の間はOSやプログラムの更新を行えない。メンテナンス時、ユーザーがディスクレスクライアントを使う事が出来ない。(正確にはメンテナンスできるが、メンテナンスと利用中アプリが重なると、アプリが落ちる可能性がある。)
    サーバーがダウンすると、全てのクライアントが使用出来なくなる。
  6. OSには他のPCとは共通に出来ないエリアがあり、この部分のマネージメントが複雑。例えば、ログファイル、ワークファイル、ロックファイルなど。

まとめると、「PCユーザーが利用可能な機能を限定できるパソコン環境において、システム管理に苦労と工夫をすることによって、管理がとても楽になって運用コストを削減出来る。」ということです。特に、殆どの業務はWebブラウザー上で行い、その他は電子メールくらいしか利用しないような業務なら、Unix系OS上でX-Window + Firefox で構成出来、殆どハードウェアコストだけで大規模PC環境を構築出来ます。

節電が重要なら、HDDではなくUSBメモリやSSDにOSをインストールする方法もあり、この場合はディスクレスより高いパフォーマンスを期待出来、消費電力はディスクレスと同等でしょう。しかし、メンテナンスはPC毎に行う必要がありますので、結局、PCの管理をどう考えるのかが判断基準になるわけです。

よく技術系情報誌の記事になっているのが、MacOS Xのディスクレス/サーバーシステムで、大学のコンピュータルームや実習ルームに導入されている事例です。確かに、学生全員が同じ環境で演習を行うのには最適です。逆にユーザーが自前PCを持ち込んで実習を行う場合でも、管理者側で実習専用のOSをディスクレスサーバー上に準備しておき、自前PCをLANに接続してたらPCのHDDからではなくLANからブートするように構成しておけば、自前PC持ち込みでもウィルスをばらまかれる心配なく実習を進めることが出来ます。(多少の工夫は必要でしょうが。)

私の場合は、以前、10年間くらい HP-UX のディスクレス構成をユーザーとして使用していた事があります。全ての情報はディスクレスサーバーのHDD上に保存されているので、空いているコンピュータの電源を入れると、自分お気に入りの環境にログインする事が出来て便利でした。(誰かが運悪くLANケーブルを蹴っ飛ばすと、HDDが無いのでいきなりダンプしてクライアントが死ぬというひどい目にも遭いましたが。)サーバーの管理者は大変だったでしょうが、コンピューターに習熟している管理者が一人いれば運用コストを大幅に削減出来る手段になるということです。

いろいろとディスクレスシステム管理面の事を書いてきましたが、今回私はFreeBSDのディスクレス・サーバー構築を行おうとしています。理由はハードウェアコスト削減のためではなく、1)PCを静かにしたいから。2)そして、別OSのインストールを高速に行うため。

PCケースから出る音は、殆どがファンの回転音で、

  • CPUファン
  • HDDの回転
  • 電源ファン

から生じます。
IntelのAtom CPU搭載ボードにはファンレスのものが多く、低消費電力の割にそこそこの処理能力があります。こういうマザーボードを使えば、CPUファンを無くせます。
HDDの回転音はSSDを使う事によっても無くせますが、SSDはフラッシュメモリで構成されているため、書き込み可能回数に上限があります。Unixの場合、運用中は殆どのファイルは読み出しが主ですが、/var, /tmp あたりの下のファイルはかなり頻繁にファイルが更新されますから寿命が心配になります。書き込み回数が多いファイルシステムだけ使い捨て気分の安いSDメモリやUSBフラッシュメモリをマウントして使うという手もありますが、こういう安物メディアは一般的に書き込みが遅い!やはり書き込みが頻繁に発生するエリアはHDDかRAMディスク上に置くのが基本。ということで、静音システムはディスクレスクライアントにするというのが私のお薦め。
最後に電源のファン。これに関しては静かな電源を積んだPCケースを選ぶしかありませんが、でかいミニタワーケースは比較的静かなのでこれを採用予定。HDDを搭載するディスクレスサーバー機は離れたところに置いてノイズをかわす事にします。

続いて、もう一つの目的の、短時間でHDDにOSをインストールするOSクローニングの話です。

  1. OSのインストールは何かと時間が掛かります。いつも使っているOSなら作業はスムーズに進むかもしれませんが、動作確認のために昔のOSが必要になる場合が面倒です。今は、VMを利用すればハードウェアは不要ですが、一度はOSをインストールしなくてはならないことには代わりありません。
    一度インストールしたOSをハードディスクイメージとして保存しておき、必要なときに短時間でHDDに戻せればOSのインストールが簡単になると言う理屈です。
    まず、ディスクレスクライアントに空のHDDを接続。ディスクレスサーバーからFreeBSDを起動。
    ディスクレスサーバー上に保存してある別OSマスター(たとえばWindowsやLinux)イメージをダンプコマンドで、ローカルに接続したHDDへコピー。(反対方向にコピーすればディスクバックアップ。)
    特にFreeBSDを使う気がなくても、セットアップ用にディスクレスサーバーを準備しておけばOSセットアップが簡単になるはず。
  2. PanicやフリーズでOSが停止してしまい、次回起動しようとしたらfsckが修復してくれない場合、ディスクレスとして起動して、ブートできなくなってしまったHDDパーティションをマウントすれば、修復可能。

こういった背景から、FreeBSDディスクレス・サーバー環境の構築を行ってみたいと考えています。

コメントを残す