FreeBSD の panic 時にログを残す仕組みが上手く動いているか確認。
デフォルトでも rc.conf に dumpdev=AUTO とあって有効になっていると思う。
panic時 ufs の swap だと自動で書いてくれて
ブート時にそれを見付けてここらあたりに保存してくれて
-rw------- 1 root wheel 383 May 19 00:00 /var/crash/info.0 -rw------- 1 root wheel 384 May 19 00:02 /var/crash/info.1 -rw------- 1 root wheel 11386849 May 19 00:00 /var/crash/vmcore.0.zst <- -Z の圧縮が効いてる場合 -rw------- 1 root wheel 76423168 May 19 00:02 /var/crash/vmcore.1
その後 /usr/sbin/crashinfo が起動して
# wc /var/crash/core.txt.0 1563 7986 63139 /var/crash/core.txt.0
ぐらいのファイルにテキストのサマリを纏めてくれる。
調べたこと。
- zvol の swap は未対応。
- gmirror の場合は man の通りなのだが
balance algorithm ( -b round-robin や -b prefer など ) によるようで
書くときは -b によらず高い priority のもに書かれるようだが
読むとき (/usr/sbin/crashinfo) は -b prefer でないと読めない。
man には /etc/rc.early で一時的に調整する方法が載っているが、今は動かない?
-b prefer にしていれば dumpdev=AUTO のままでも動くことは確認した。
なお 2台の mirror で両方とも priority 0 でも動作した。何回か試したが失敗しなかった。 - -Z の圧縮の効果は高いので dumpon_flags="-Z" はオススメ。
- netdumpd も動く。
サーバーで netdumpd_enable="YES" しておいて (ファイヤーウォールも確認してね)
クライアント側は sysrc dumpdev=vtnet0 dumpon_flags="-c client_ip -s server_ip" などとするだけでよい。
だた /usr/sbin/crashinfo はカーネルが一致しないと動かないので注意。もちろん panic したマシンに scp すれば動く。
また、-b round-robin でも dumpdev="片側" としておけば DEGRADED にはなるが動作はするようだ。(要 gmirror forget & insert)