2006.12.15 tunefs(8)の怪 とりあえずはまったのでメモっておく。確認は FreeBSD 6.1-RELEASE ではあるが, おそらくは 5 系以降 7-current でも持ってる問題だ と思われる。 tunefs(8) で softupdate を有効にする場合, / の場合だけ注意し なければならない。いわゆるシングルユーザーモードでの作業を必 要とする点はもちろんのこと, 設定後再起動が必要であるという点 である:-)。 これは undocumented であるどころか POLA の観点か らも承伏しかねる問題である:-(。 (シングルユーザーモードで) # tunefs -p / tunefs: ACLs: (-a) disabled tunefs: MAC multilabel: (-l) disabled tunefs: soft updates: (-n) disabled tunefs: gjournal: (-J) disabled tunefs: maximum blocks per file in a cylinder group: (-e) 2048 tunefs: average file size: (-f) 16384 tunefs: average number of files in a directory: (-s) 64 tunefs: minimum percentage of free space: (-m) 1% tunefs: optimization preference: (-o) space tunefs: volume label: (-L) # tunefs -n enable / soft updates set # tunefs -p / tunefs: ACLs: (-a) disabled tunefs: MAC multilabel: (-l) disabled tunefs: soft updates: (-n) enabled tunefs: gjournal: (-J) disabled tunefs: maximum blocks per file in a cylinder group: (-e) 2048 tunefs: average file size: (-f) 16384 tunefs: average number of files in a directory: (-s) 64 tunefs: minimum percentage of free space: (-m) 1% tunefs: optimization preference: (-o) space tunefs: volume label: (-L) この時点で enabled になっているにもかかわらず, exit でシン グルユーザーモードを抜ける(exit)と, 無効になってしまう。 # exit : # mount /dev/ad0s1a on / (ufs, local) devfs on /dev (devfs, local) : おそらくは, ファイルシステムに関するメタ情報をキャッシュし てしまっていて, tunefs(8)で設定しても無視されてしまうため と思われる。 ワークアラウンドとしては tunefs(8) による設定 を行った後, さっさと reboot コマンドを実行することである。 (シングルユーザーモードで) # tunefs -n enable / soft updates set # reboot なお, ACL (-a enable | -a disable)の時もこの問題は発生する。 Written by 重村法克