FreeBSD の管理
Last Modified: Tue Dec 27 00:06:02 JST 2011

FreeBSD をサーバとして使っていく上で、インストールに関連した様々な注意点を列挙していく。

アプリケーションのインストール

FreeBSD には ports や package という強力なアプリケーション・インストールの仕組みが用意されていて、ほとんど何も考えずに様々なアプリを使うようにできる。 だが、このような自動化は諸刃の剣だ。 たとえば、例外や不測の事態によってインストールできなくなったり動かなくなったりすることがあるし、 ports のデフォルト設定では要求仕様が満たせず、結局手で変更してやらなければならないこともある。 また、ports 発表以後に出た新バージョンへの対応も手で行う必要がある。

一般的なアプリケーションインストールの際には、以下のようなポリシーで行うとよいだろう。

バージョンアップに関して

FreeBSD は Linux に負けず劣らずバージョンアップが頻繁だ。 細かいバグがすぐ取れるという意味では、バージョンアップは歓迎すべきことだが、インストールの手間が増えるのはあまりありがたいことではない。 特にシステム設定が大きく変わると、インストール済のアプリケーション(Apache などのサーバも含まれる)にまで影響が及び、make をやり直すことにもなりかねない。 実際、2.X から 3.X へのバージョンアップでは、ライブラリ形式が変わって大変な事態を招いた。
上書きインストールという手法もあるが、これまでのバージョンアップでもシステムファイルの細かな書式や依存関係が変更になっていたりして、あまりよい方法とは言えない。 かといって、カーネル部分を手で選んで消すというのも非能率的だ。 バージョンアップの手間を最小限に押さえるには、カーネルとその周辺部分と、その他のアプリケーションとを分離しておくのがよい。 そのために、カーネルとその他とを別パーティションに配置する方法をとる。 カーネルのバージョンアップに際しては、カーネルのあるパーティションだけをフォーマットしてインストールし、アプリケーション部分はそのまま引き継ぐようにするわけだ。

原則として、FreeBSD のカーネルと関連ファイルは以下のディレクトリに集中している。

一方、その他のローカルにインストールしたアプリケーションは一般的に以下のディレクトリに配置される。

この2つを別のパーティションに分けてやれば、バージョンアップのときに迷わず目的のディレクトリだけをフォーマットできる。 というわけで、だいたい次のようなラベリングが考えられる。

/
/var
/usr
/usr/local
/usr/home

できれば2個のディスクを用意して、 カーネル部とローカル部を完全に分てしまうとよい。 その方が、バージョンアップのときに間違って消してしまう事故をなくすことができる。

バージョンアップの際は、Partition を飛ばして Label から始める。 以前のラベル情報を読み込んで、以下のように表示するはずだ。


FreeBSD Disklabel Editor Disk: da0 Partition name: da0s1 Free: 0 blocks (0MB) Part Mount Size Newfs Part Mount Size Newfs ---- ----- ---- ----- ---- ----- ---- ----- da0s1a <none> 32MB * da0s1b swap 267MB SWAP da0s1e <none> 300MB * da0s1f <none> 1000MB * da0s1g <none> 1000MB * da0s1h <none> 1032MB * The following commands are valid here (upper or lower case): C = Create D = Delete M = Mount pt. W = Write N = Newfs Opts T = Newfs Toggle U = Undo Q = Finish A = Auto Defaults for all! Use F1 or ? to get more help, arrow keys to select.

参照できるのはサイズ情報だけなので、マウントポイントとフォーマット状況(Newfs の欄)を設定してやる必要がある。 以前の情報を参考に、各パートを設定してやればよい。 たとえば以下のようにする。


FreeBSD Disklabel Editor Disk: da0 Partition name: da0s1 Free: 0 blocks (0MB) Part Mount Size Newfs Part Mount Size Newfs ---- ----- ---- ----- ---- ----- ---- ----- da0s1a / 32MB UFS Y da0s1b swap 267MB SWAP da0s1e /var 30MB UFS Y da0s1f /usr 1000MB UFS Y da0s1g /usr/local 1000MB UFS N da0s1f /usr/home 1032MB UFS N The following commands are valid here (upper or lower case): C = Create D = Delete M = Mount pt. W = Write N = Newfs Opts T = Newfs Toggle U = Undo Q = Finish A = Auto Defaults for all! Use F1 or ? to get more help, arrow keys to select.

以上で commit すれば、/、/var、/usr をフォーマットした後カーネル部分をコピーしてくれる。 /usr/local と /usr/home はそのまま引き継がれる。

バージョンアップでバイナリ互換性が損なわれた場合は、それなりの注意が必要だ。 /usr/local/bin などに置かれたプログラムが動かなくなるからである。 しかし、/usr/local 以下はすべて残っているはずだから、make install だけで対応できると思う。


[back to index]