base/ports split: intro2006年04月06日 10時26分51秒

ports とはその名の通り、移植システムである。FreeBSD を起源にし、NetBSD と OpenBSD に移植された。pkgsrc と ports として、それぞれにある。元は同じものだったが、年月が経ち、それぞれに特徴を持ったものになったと思う。

今回の目的は、ports の base system からの分離である。それにより、システム移行時の負荷を減らし、ports への変更に柔軟性をもたせる。まず、FreeBSD を四つに分類する。なお、この分類の仕方は、uyota 流である。わざわざ、分類している人を見たことがないので、流派を名乗っただけなのだが。

まず、第一は「ユーザデータ」である。云わずと知れた、home 等を筆頭とする、各個人の所有するものである。また、ここのデータはバックアップのみでしか、復旧できない大切なものである。SunOS の影響からか、/export に全て置くようにしている。NFS 等で、export しやすくするためにマウントポイントを一つのみである。また、dump をやりやすくするの為に、ほぼ常にここは単一のパーティションを割り当てている。

次に、「FreeBSD System」である。普通に CD からインストールするものである。これがないと起動できない。壊れても、他から手に入れてほぼ完全に復旧はできる。しかし、各種設定等があり、こちらを復旧させるのは、困難なことが多いの。加えて、一つの system image を使い回しているので、大切な部分である。

第三に、「Ports System」である。こちらは、基本的に current しか存在しない。経験的には、こちらは壊れると、ソース等がバックアップされていても、完全復旧はかなり難しい。やはり、dump が一番簡単である。各 Release のみで、ports を一切更新しないのであれば、ゼロからの復旧もある程度は楽になる。しかし、ソースの配布が停止されたり、同じバージョンでも中身が違ったりと、色々と厄介なことが多い。

最後に、「tmp」である。/tmp と /var/tmp が代表的なものである。ここは、一時ファイルの置場である。ものによっては、mfs がよかったりするものもあれば、mozilla/firefox のキャッシュなど、長期に保存する必要なものもある。これをバックアップの対象にしてしまうと、全体的な量としてはかなりのものになり、/mnt/tmp などとして、分けている。一台に機械に最低二つの同一サイズのシステムが入っているので、片方のスライスからは swap を作り、もう片方から /mnt/tmp を作っている。

もう少し具体的に説明する。/dev/ad0s1 と /dev/ad0s2 が用意されているとする。これらのスライスは同じ大きさである。そこから、二つのスライス上各々に /、swap、/usr を同じ大きさにしながら分ける。/dev/ad0s1b と /dev/ad0s2b を両方とも swap にしてもいいのだが、そんなに必要ないので、/dev/ad0s1b は swap として、/dev/ad0s2b は /mnt/tmp として、使っている。どちらの領域も不慮の事故で消したとしても、ほとんど支障はない。

今の、運用だと base system と ports が一緒になっているので、システムのアップグレードや ports のアップグレードに互いが拘束しあっている。Release を入れ換えるのに ports も全てバックアップを取り、ports を入れ換えるのにベースシステムもバックアップを取っているのである。

そこで、運用でも ports を分離することにより、各種アップグレードの柔軟性を持たせようというわけである。

これにより、7-current と 6.x Release の並列運用の負荷が下げられる。ports を共有できれば、切替えも簡単、確実かつ容易に出来るだろう。両者の ports の手作業による同期も避けられる。

次回

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2006/04/06/317688/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。