tmpmfs: g_vfs_done() ― 2006年09月15日 14時10分23秒
g_vfs_done():md0[WRITE(offset=130381824, length=2048)]error = 28
g_vfs_done():md0[WRITE(offset=131135488, length=2048)]error = 28
が出ているのをしばしば見かけていた。。md0 から mfs 関連らしいのは察していた。長い間様子を見ていたのだが、mfs tmp がやはり怪しいようだ。
/etc/defaults/rc.conf には
tmpmfs="AUTO" # Set to YES to always create an mfs /tmp, NO to never
tmpsize="20m" # Size of mfs /tmp if created
tmpmfs_flags="-S -M" # Extra mdmfs options for the mfs /tmp
と設定されている。
それを、rc.conf にて以下のように設定していた。
tmpmfs="YES" # Set to YES to always create an mfs /tmp, NO to never
tmpsize="128m" # Size of mfs /tmp if created
tmpmfs_flags="-S -M -o async" # Extra mdmfs options for the mfs /tmp
-o async が実際に役に立っていたかはよく分からない。実メモリは 512MB なので、大き過ぎることはないと思ったが、時折カーネルがパニックを起こしていた。そのほとんどが、/tmp に大きめのアーカイブを展開したときだった。また、パニックにまで陥らなくても、上記のようなエラーが、/var/log/messages に残っていた。
man mdmfs には、
とある。 man mdmconfig を見ると、-M Create a malloc(9) backed disk (MD_MALLOC) instead of a swap- backed disk.
とある。-o reserve が無いせいではないのだろうか。-t type Select the type of the memory disk. malloc Storage for this type of memory disk is allocated with malloc(9). This limits the size to the malloc bucket limit in the kernel. If the -o reserve option is not set, creating and filling a large malloc-backed memory disk is a very easy way to panic a system.
元々、MD_MALLOC よりも、MD_SWAP の動作の方が、都合がいい。現在のところは、tmpmfs_flags から -M を除き MD_SWAP にしている。それ以降、/tmp に絡むカーネルパニックは起こらなくなった。
コメント
_ 抹茶 ― 2007年11月05日 09時04分38秒
_ uyota ― 2007年11月09日 15時16分30秒
それに引き替え、MD_SWAP は仮想メモリから割り当てます。実メモリが足りなくなった場合には、カーネルはこの md に割り当てたメモリを一時的にスワップ領域に退避出来ます。それ故、実メモリ以上の領域を割り当てても、panic しないのです。ディスクに余裕があれば、スワップ領域を追加できるので、MD_MALLOC などと違い応急措置も取れるので、比較的安全なのです。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2006/09/15/524634/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
なぜMD_MALLOC よりも、MD_SWAP の動作の方が、都合がいいなのですか?