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)

参考になりました。ありがとうございます。

コメントする

perl adv
perl adv