FreeBSD パーテェション方法2007年05月14日 15時22分09秒

FreeBSD のファイルシステムを三分割して使っている。以前に書いた base/ports split introexperimentexperience に書いたもののまとめになる。なお、最近の FreeBSD の方針としては /usr/X11R6 から /usr/local に次々と移動させている様だ。

FreeBSD のシステムを構成する上で、三構成が一番理に叶っていると思う。


% df
Filesystem     1K-blocks      Used   Avail Capacity  Mounted on
/dev/ad0s3a       507630    231666  235354    50%    /
devfs                  1         1       0   100%    /dev
/dev/ad0s3d      3045006   1812004  989402    65%    /usr
/dev/ad0s3e      5580210   3721004 1412790    72%    /ports
/ports/db/pkg    5580210   3721004 1412790    72%    /var/db/pkg
/ports/X11R6     5580210   3721004 1412790    72%    /usr/X11R6
/ports/local     5580210   3721004 1412790    72%    /usr/local
/ports/compat    5580210   3721004 1412790    72%    /usr/compat

まずは、ルートパーティション。ad0s3a がある。そして、/usr 以下を置く ad0s3d。そして、ports を置く、ad0s3e。


# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad0s3b             none            swap    sw              0       0
/dev/ad0s3a             /               ufs     rw              1       1
/dev/ad0s3d             /usr            ufs     rw,noatime      2       2
/dev/ad0s3e             /ports          ufs     rw,noatime      2       2
/ports/db/pkg           /var/db/pkg     nullfs  rw,noatime      0       0
/ports/X11R6            /usr/X11R6      nullfs  rw,noatime      0       0
/ports/local            /usr/local      nullfs  rw,noatime      0       0
/ports/compat           /usr/compat     nullfs  rw,noatime      0       0


ルートファイルシステムには /etc を始め、/var など、個々に固有の情報や、データベースなどのデータが色々と保持されている。それを独立させるために、まずこれが一つのパーティションとなる。

そして、/usr。こちらには、FreeBSD のベースシステムによって作られた物のみが入る。/sbin や /boot などルートパーティションに入れられるものも幾つかあるが、起動時に必要なものは別パーティションに出来ないので、FreeBSD 固有のものを完全に /usr に独立させるのは無理だ。

最後に、ports。これは言わずと知れた、ports collection が入っている。ports の更新自体が失敗することは最近は滅多に無い。しかし、API やコマンドオプションなどが変わってしまい、一部に動作しなくなるエリアスやコマンドなども時折出てくる。また、使い勝手が変わったりユーザインターフェースが変わるのも大きい。それなりの試用期間が必要となる。そこで、ports 関連を全て /ports 以下に閉じ込る。そして、そこから本来の位置へ mount_nullfs で再配置する。

このパーティションの配置にして一年以上経つが、すこぶる調子が良い。以前は ports は一度上げてしまうと、もう二度とは戻れない状態だった。portdowngrade なるものもあったが、上手には元に戻してくれない。一パーティション、または / と /usr の二パーティションの時は restore しようにも色々と問題があった。特に/var/db/pkg 以下に困ることが多かった。dump/restore も何回か繰り返していると、訳が分からなくなるのが常だった。つまり、ほぼシステム全部を入れ直す事になっていたのだ。make installworld に失敗したときも然りである。

この三構成にしてから、特に FreeBSD Base と Ports の区別が明瞭につくようになり大変重宝している。

なお、安定環境では、頻繁に ports を更新しないので、/usr/ports には mkuzip で固めたファイルを使っている。


/dev/md.uzip            /usr/ports      md      ro,-P,-F/ports/src/ports-20060830
.uzip   0       0

このようにすると、ports の入れ換えが、mount コマンドだけで済んでしまい、入れ換えが便利なのが一つ。そして、ファイルが一つ、かつ圧縮されているので、ディスク容量も取らないし、パーティション間を移動、コピー、削除時も操作がとても速い。