PCをディスクレス構成のFreeBSDで使用するための設定方法については、いろいろと情報がある。そのため、初めてFreeBSDディスクレスサーバーを構築しようとしたときに、どういうポリシーで構築するのかを決めておくことが望ましい。
- とりあえずHDD無しで使えればいい。
- 組織のコアシステムに採用するためメンテナンス性優先、自己ルールもあり
- 基本的にOSに組み込まれている機能でメンテナンスをしたい
などなど。
クライアント側の設定
ディスクレスPC側は、基本的にはBIOS設定で、ネットワークブートを選択するだけ。pxeboot 対応NICを搭載していないPCの場合は、IntelのNICを搭載しているNICをインストールする事でネットブートが可能になる。
その他、DHCPサーバーに設定を行うため、NICのアドレスをメモしておく必要がある。
ディスクレスサーバー構築の考え方
ディスクレスにするための設定は全てディスクレスサーバー側で行うが、検索エンジンで検索してみるとわかるが、FreeBSD のディスクレス化は 情報がいろいろとあって、しかも、異なる方法が記述されているので、結構困ってしまう。
それも良く考えると当然。
- OSのバージョン毎に、ディスクレス化のスクリプト(rcファイル)が若干異なっている。
- 同一のディスクレス環境を複数作りたいのか、目的が異なるディスクレス端末を複数作りたいのか。
- OSに含まれるスクリプトでクライアントを管理したいのか、自前ルールで管理したいのか。
など、複数の観点から構築方法が異なっているようだ。
私は、OSに搭載されているスクリプトを出来る限りそのまま利用するのがよいと思っている。(システム管理者は保守的なのよ!)
結局は以下のファイルをよく読んで、検索エンジンで見つかる情報と合わせて実機でテストを行いながら構築して行くしか無さそうだ。
読むべきファイル
- /etc/rc.initdiskless
- /usr/share/examples/diskless の下のファイル
root / のコピーをNFSで公開するだけで済むなら非常に楽なのだが、Unix系OSの場合、バイナリーが同一なら、
- /bin
- /sbin
- /lib
- /usr
- /boot
などのディレクトリは、共有してもほぼ差し支えない。
しかし、端末固有の情報を含むファイルが保存されているディレクトリ、
- /etc
- /var
- /tmp
- /mnt
などのディレクトリは端末毎に独立したディレクトリを持つ必要がある。例えば、ホスト名や自IPアドレス、動作中プロセスのpid・ロックファイル、編集中ファイル、ファイヤーウォールログファイル などの変数領域。
全領域をディスクレス端末一台ごとに確保するという手もあるが、それをやるとディスク容量の節約にならないし、管理の手間は台数分必要になる。
私は次のリンクのページを参考にさせてもらいました。
http://www.nber.org/sys-admin/FreeBSD-diskless.html
http://su.kineya.org/index.php?FreeBSD%2Fpxeboot
その2 に続く