by shigemk2

当面は技術的なことしか書かない

サーバ/インフラを支える技術5 ネットワークブートの活用

前回
サーバ/インフラを支える技術5 デーモンの稼動管理 - by shigemk2

ネットワークブートとは、マシンがブートするために必要なデータや
ファイルをネットワークから取得してブートすることである。

通常のブートでは、マシンの起動に必要なブートローダ
OSのカーネルは、BIOSがローカルに接続されたハードディスクや
CD-ROMなどの二次記憶装置から読み出すが、ネットワークブートでは
これらのファイルをネットワーク上のサーバから読み出す。

ネットワークブートを使えば、マシンの起動にローカルの二次記憶装置は
必要がなくなる。しかし、ブートローダとカーネルをネットワークから
取得するだけでは、通常の起動に比べて運用の柔軟性が少々増すだけである。

より柔軟性を持たせるためには、initramfsというしくみを使う。

initramfsとは、カーネルがルートファイルシステムをマウントして
initを起動する前に、カーネルの外部でしか行い得ない初期化をするための
しくみである。

典型的な役割として、カーネルがルートファイルシステムをマウントするのに
必要とするドライバモジュールを、カーネルにロードすることである。

initramfsの実体は、初期化するのに必要なファイルを集めてcpioで
まとめ、gzip圧縮したファイルである。

ネットワークブートでは、ブートローダがinitramfsをカーネルとともに
ファイルサーバから取得する。これはつまり、事前に起動するマシン上で
何も準備しておかなくても、ファイルサーバ上にいろいろなシステム用の
カーネルとinitramfsを用意しておけば、どのマシンでも任意のシステムとして
起動することが出来る。つまり、OSを起動する上でディスクは不要になる。


ネットワークブートの枠組みで代表的なものとして、
PXEがある。これは、NIC上に実装された拡張BIOSである。

ネットワークブートの活用例

  • ロードバランサ
  • DBサーバ/ファイルサーバ

物理的な故障がサービス停止に直結する部分は、ディスクレスにするべきであ
り、またメンテナンス目的でもネットワークブートは利用される

いくつかの注意点
複数の種類のシステムをinitramfsを使ってネットワークブートするなら、
initramfs自体は共通で使えたほうがよい。
initramfsはカーネルの起動直後に動作するのでデバッグがしづらいから。

また、

  • ログの出力(ディスクレルシステムでもログの保存は必要)
  • ファイルの変更管理(起動中のマシンのみの設定を変更してもリブートしたら戻る)
  • マスタファイルのセキュリティ(ルートファイルシステムのマスタを用意する必要がある)

次回
サーバ/インフラを支える技術5 リモートメンテナンス - by shigemk2

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)