ディスクレスサーバを作ろう - その1.ディスクレスサーバとは?

小鳥たち


とある日、会社の上司との会話の中で、ディスクレスサーバを構築させてもらえることになりました。
# それ、ディスクレスで作りたいです、と話し始めてみたら、あっさりYOU!やっちゃいなよ、ってなった。いつもありがとうございます。

ディスクレスサーバとは何か?

読んで字の如くですが、ローカルディスクを積まないサーバ(PC)のことです。とはいっても、OSを動かすには、その情報(データ)を展開する場所が必要になります。
# 普通のPCだと、ローカルディスクに全てインストールされていますよね。


というわけで、ディスクレスサーバといっても、どこかにデータを持たせる必要があって、外部ディスク(NAS, SANストレージ)にデータを持つパターンと、メモリ上に全てを展開するパターンがあります。

最近だとCDブートできるOSなんかもありますよね。あれもメモリ上に展開するパターンの一種です。


例えば、後者のオンメモリ上に全てのOSイメージを展開するパターンだと、機器の中で、最も故障しやすいと言われているディスクを無くせますので、故障率が下がりますし、オンメモリで全てを処理するので、パフォーマンスにも良い影響が出るはずです。


また、OSイメージを外部から各マシンに展開する仕組みが前提となるので、各マシンに対して必ずしもセットアップが必要としません。この辺はやり方によって様々だろうけど。


ただし、扱えるデータ量が限られるので、用途は限定されます。例えば、ロードバランサ(ソフトウェアレベル)やプロキシ、Webサーバなどでしょうか。


とはいっても、DBサーバなんかで全く使えないかというと、決してそうでもなくて、OSやミドルウェア関連はオンメモリにして、DBのデータ領域だけをディスクに割り当てたりすると、ディスクI/OをDBが独り占めできることとなり、これはこれで良さそうです。

必要なもの

今回は、Linuxでディスクレスサーバを作る前提で話を進めます。イメージとしては、ネットワークブート(PXEブート等)を行った後に、OSイメージをオンメモリ(RAMディスク上)に展開します。


というわけで、まず準備するのは、以下の条件を満たすディスクレスサーバ、

  • ネットワークブートに対応したNIC
    • (今回は、PXEブートと呼ばれるやり方でやりました)
  • OSイメージを載せられるくらいのメモリ容量+稼動に必要なメモリ容量
    • (最低でも256MBくらいはあったほうがいいかと。1GBもあればヨユー。)
  • ローカルディスクは不要
    • (別にあっても良い。使いどころはある。)


と、上記のディスクレスサーバ以外に、ネットワークブートを実現させるため以下の条件を満たすサーバ、

  • DHCPサービスが稼動している
    • ディスクレスサーバと通信するために、IPアドレスの割当と、下記のブートローダの場所を教える
  • TFTPサービスが稼動している
    • ブートローダを転送する


の計2台が必要となります。

ネットワークブートの仕組み(Linux)

文章で説明するのは、なかなか小面倒くさいので省略します。
気が向いたら、絵を描いて説明してみます。

具体的な作り方

長くなってきたので、近々続きを書こうと思います。というか、今試行錯誤しながら、作っている最中なんですけどねf(^^;


# やべ、書きながら、だんだん面倒くさくなってきたのが丸わかりやな、このエントリw



続きはコチラ(d:id:rx7:20080316:p1)。