ファイルシステムあれこれ
RAM ディスク
4.x では mfs で (swap の中にファイルシステムがあるかのような書き方で) RAM ディスクを使用できる。 5.x では md を用いて RAM ディスクを使用できる。 /etc/fstab の記述例を示す。
4.x /dev/ad0s2b none swap sw 0 0 /dev/ad0s2b /ram mfs rw 0 0 5.x md /ram mfs rw,nosuid,async,noatime,-s262144 0 0
RAM ディスクに付けるオプションとしては、以下を候補として検討されたい。
- nosuid : set user, set group のスティッキービットを無効にする
- nodev : そのファイルシステムにデバイスファイルがあっても無視する
(FreeBSD 5 以降では、指定しても意味が無いし、 FreeBSD 7 では、指定するとエラーになる) - async : 非同期処理を行う。
- noatime : atime の更新を行わない。
- 0 0 : ダンプは要らないだろう。
-s で指定するサイズは 512 bytes block なので、ぱっと見では倍に見える。
softupdate
Softupdate とは、同期書き込み(遅い)を減らして非同期書き込み(速い) を増やし、しかもファイルシステムの一貫性を損ねないようにすることで ディスクへの書き込みを激減するものである。
4.3-RELEASE 頃から インストール時に softupdate にするかどうか選択できる。 また、インストール時に softupdate を選択しなかった場合でも 手動で softupdate を組み込むことができる。 / 以外のパーティションについては、一回 umount して tunefs して mount してあげれば、すぐにでも softupdate の恩恵にあずかれる。
/ イッパツというパーティションになっていて なかなか umount する機会がない場合でも、システムを止めるチャンスがあれば、 その時に行ってしまうのがよい。 稼働状態からシングルユーザに落として mount -r / するか、もしくは 起動時に boot -s でシングルユーザで上げて / を read-only な状態にしてから、tunefs を行う。
# tunefs -n enable / tunefs: soft updates set tunefs: file system reloaded # reboot
これだけで、簡単に softupdate の恩恵にあずかることができる。
効果は、細かい大量のファイルを扱う時に最も顕著に体感できる。 MH で管理している FreeBSD-users-jp の ML の記事をいくつか削除したあとの pack の作業など、softupdate なしでは数秒かかっていたものが、 計測不能なほど一瞬で終わるようになることだろう。
softupdate の技術的な詳細については、 「FreeBSD press Vol.4」で詳しく述べられている。
ufs の情報
ファイルシステムが ufs なのか ufs2 なのか知りたくても、 mount コマンドでは教えてくれない。ちょっとケチだと思う。 が、こういう場合は dumpfs を用いることができる。
% dumpfs / | head -1 magic 19540119 (UFS2) time Tue Dec 27 08:49:47 2005