ports 作業ディレクトリの削除の高速化 ― 2007年02月24日 12時27分09秒
WRKDIRPREFIX=/ports/tmp
を /etc/make.conf に設定している。その為、ports をビルドする時の作業ディレクトリは全て /ports/tmp 以下になり、make clean
をする必要がなく、作業ディレクトリの削除も rm -rf /ports/tmp/usr/ports
ですむ。
今回、ports を最初から入れ直したら、5 GB 程の作業ディレクトリがたまった。そこで、rm -rf /ports/tmp/usr/ports
をしたのだが、15 分も掛かったのだ。こんなに時間が掛かっては、高速化したくならないわけがない!!!
そこで、ports 作業ディレクトリに専用パーティションを与える。特に余裕もないので、mdconfig で vnode 型を割り当てるのだ。パーティションを占める領域はわずかに減るかも知れないが、ファイルの削除は一瞬で出来るようになる。
# dd if=/dev/zero of=tmp.md count=1 seek=5000 bs=1M
# mdconfig -a -t vnode -f tmp.md
md1
# newfs -U /dev/md1
/dev/md1: 5001.0MB (10242048 sectors) block size 16384, fragment size 2048
using 28 cylinder groups of 183.77MB, 11761 blks, 23552 inodes.
with soft updates
super-block backups (for fsck -b #) at:
160, 376512, 752864, 1129216, 1505568, 1881920, 2258272, 2634624, 3010976,
3387328, 3763680, 4140032, 4516384, 4892736, 5269088, 5645440, 6021792,
6398144, 6774496, 7150848, 7527200, 7903552, 8279904, 8656256, 9032608,
9408960, 9785312, 10161664
vnode 型の デバイスの準備が出来た。
次は、起動時に自動的にマウント出来るように準備する。
# echo "/dev/md /ports/tmp mfs rw,-P,-F/ports/tmp.md 0 0" >> /etc/fstab
# mount -d /ports/tmp
exec: mount_mfs -o rw -P -F/ports/tmp.md /dev/md /ports/tmp
# mount /ports/tmp
# df /ports/tmp
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md2 4955182 4 4558764 0% /ports/tmp
これで、次回から自動的に /ports/tmp にマウントしてくれる。
もし、ports の作業ディレクトリを消したいのであれば、
# umonut /ports/tmp && newfs -U /dev/md2 && mount /ports/tmp
で終る。一秒もあれば終るので、今回やっていたら、一万倍の高速化と言ったところか。もちろん、ファイルの数によって、すぐに倍率は変わってしまうが。
最近のコメント