この間の続き。
早速完成した環境でsshdの設定やportsnapでportsツリーを更新。
その後locateコマンドを効かす為に
/usr/libexec/locate.updatedb を実行したらカーネルがパニくってシステムが完全固まった。
もう一度再起動してdmesgを確認するとZFS関連のメッセージで以下が出力されていた。
ZFS NOTICE: Prefetch is disabled by default on i386 -- to enable,
add "vfs.zfs.prefetch_disable=0" to /boot/loader.conf.
ZFS WARNING: Recommended minimum kmem_size is 512MB; expect unstable behavior.
Consider tuning vm.kmem_size and vm.kmem_size_max
in /boot/loader.conf.
ZFS filesystem version 3
ZFS storage pool version 14
どうやらI/O周りに負荷がかかるとやっぱりメモリを多く割り当てないとダメなようだ。
そこで、ハンドブック[1]を参照にカーネルを再ビルドすることにした。
カーネルコンフィグレーションファイルを以下のように変更。色々弄くってみたいが、とりあえず余計なことはせず、options KVA_PAGES=512だけを追加。
後はハンドブックの指示通りにmake buildkernelしてmake installkernelしたら再起動。dmesgにidentに指定した i386_ZFS_KERNELという文字列が出力され、うまくカーネルがさし変わったことを確認した後、似たような構成でZFS環境を構築している方のパラメータを参考に[2] /boot/loader.confに以下を追記し、また再起動。
vm.kmem_size="1536M"
vm.kmem_size_max="1536M"
vfs.zfs.arc_max="1024M"
dmesgにZFS WARNINGが消えたのを確認。
/usr/libexec/locate.updatedb を再実行しても落ちなくなった!
後はnoticeに出ているプリフェッチを有効化するのかどうかだが、性能と引き替えに落ちるという報告[3]を見かけたので特に何もしないことにした。
参考
[1]カスタムカーネルの構築とインストール http://www.freebsd.org/doc/ja/books/handbook/kernelconfig-building.html
[2]ともちゃ日記 - 元大学生のぐだぐだOL日記- http://tomocha.net/diary/?20100608#201006082
[3]ZFSが落ちる - smectic_gの日記 http://d.hatena.ne.jp/smectic_g/20100827/1282862472