unionfs on /usr/ports/... ― 2006年02月15日 14時25分12秒
/usr は昔は 1GB から 2GB、今でも、3GB から 5GB ぐらいしか割り当てないので、jdk 等の大物の port をコンパイルするときに、ディスクが足りなくなるのである。そこで、/usr の上に、スペースのあるディスクを mount して、その場しのぎをするのである。
mount -t unionfs /export/tmp /usr/ports
cd /usr/ports/java/jdk15
make
などとやってはダメなのである。このままではディレクトリパスを展開するのに /usr/ports と /export/tmp を展開し、合成するのでとても遅くなるのである。そのため、tar がとても遅いのである。
cd /usr/ports/java/jdk15
make extract
mount -t unionfs /export/tmp /usr/ports/java/jdk15/work
make
とすることで、パスの展開を最小限に抑えるのである。コンパイル時のファイルアクセスは tar に比べてとても少ないので、unionfs による遅延は微々たる物である。それに比べてここでの tar は細かいファイルを大量に生成するので、どうしても遅くなってしまう。
どれくらい早くなったかは計ってはいないが、前者では、数十分待っても tar が終らなかったのが、後者に変えたらあっと言う間に終ったのを覚えいる。
あと、いつも後者のやり方だったので、つい最近まで ports が chmod だか chown を走らせるときに、エラーが出るのに全然、気がつかなかった。make extract での作業なので。5.4 や 6.0 でも、この問題はあり。ここで unionfs のパッチが提供されている。http://people.freebsd.org/~daichi/unionfs/index-ja.html
コメント
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2006/02/15/254777/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。