というメッセージが出て起動できなくなりました。Loading /boot/defaults/loader.conf Unable to load a kernel! | can't load 'kernel'
前兆はあり、利用中にファイルシステム(ZFS)にあるファイルがすこしずつ消えていっていたのです。最初はportupgradeが異常終了するようになり、原因を調べているうちに、ssl関連のファイルがなくなり、sshやsuが利用できなくなりました。
これではどうしようもないので、OSごと強制終了し、 再起動したところ、上記の状態になりました。
FreeBSDのインストールCDからコマンドなどを書き戻せば復旧できそうでしたが、設定ファイルなどを失ってしまう可能性があります。そうなると復旧には時間がかかります。
他に方法がないかと検索エンジンでいろいろと調べていると、以下のことを思いつきました。
- 現象としてはファイルが消えたただけ
- ファイルを復旧させれば動作するのではないか
- ZFSでスナップショットをとっているので、よさそうな時点のスナップショットにroolbackすればよいのでは?
FreeBSD 9 ZFS the easy wayにある
https://forums.freebsd.org/threads/freebsd-9-zfs-the-easy-way.31557/
Boot back with the installation CD and choose "live CD" and import back your zpool:という記述に従い、
You will now have access to your zfs file system on /mntzpool import -f -o altroot=/mnt -o cachefile=/var/tmp/zpool.cache zroot
- FreeBSDのインストールCDからLiveCDで起動
- ファイルシステムをインポート
そして、rollbackは
ZFS スナップショットにロールバックするにあるように
http://docs.oracle.com/cd/E19253-01/819-6260/gbcxk/index.html
zfs rollback -r tank/home/ahrens@tuesdayなどとしてスナップショットを指定してロールバックします。-rオプションは最新のスナップショットより前のものに戻るときに指定します。
スナップショットの一覧は、
ZFS スナップショットを表示してアクセスするにあるように、
http://docs.oracle.com/cd/E19253-01/819-6260/gbiqe/index.html
zfs list -t snapshotとすれば一覧を得ることができます。
上記の手順でなんとか回復することができました。ZFSの障害は、推測ですが、1週間ほど前にファイルシステムを溢れさせたことがあり、これで状態がおかしくなったように思います。そのときは
- 一度シャットダウン
- 再起動してファイルを削除
- 動くようになったので安心