Azure Marketplace から FreeBSD 仮想マシン イメージが提供されていますが、デプロイ後の稼働で最新バージョンへのアップグレードやセキュリティ パッチの適用は行うケースがあると思います。
なお、現時点 (12/30) で提供されている FreeBSD 11.0 の最新バージョンは「FreeBSD 11.0-RELEASE-p5」となっています。
FreeBSD には容易にアップグレード、パッチを適用するためのコマンド (freebsd-update) が用意されていますが、Azure IaaS 上の FreeBSD 11.0 仮想マシンにこのコマンドを実行、再起動すると OS 自体起動しなくなる可能性があります。
現象が発生するケース
この現象が発生するケースとしては、確認している限り以下となります。どちらのケースも A シリーズ、D シリーズのインスタンスで発生しており、DS シリーズのインスタンスでは今のところ発生していません (それ以外のシリーズのインスタンスは未確認)。
- FreeBSD 11.0-RELEASE 環境で freebsd-update を実施
- FreeBSD 11.0-RELEASE へのアップグレードで freebsd-update を実施
現象が発生した後でブート診断を見てみると、仮想ディスクがなぜがデタッチされ、起動できないことが確認できます。
原因
この現象は、Hyper-V (2012 R2) 仮想マシンで動作する FreeBSD 11.0 の環境で発生する現象と同様の不具合となっています。サポートに確認した限りでは修正パッチは作成完了、Azure Marketplace の FreeBSD には修正パッチ適用済み、ディストリビューターにも展開済みとのことです (個別のパッチ提供はなし)。
- Bug 212721 – FreeBSD 11.0-RC2/RC3/RELEASE fails on Hyper-V 2012r2
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=212721
なぜ修正パッチ適用済みの環境でも現象が発生するか
Azure Marketlace 経由で FreeBSD 11.0-RELEASE デプロイ直後のバージョンを見てみると、以下のようになっています。一見 GENERIC カーネルに見えますが、カスタム カーネル (修正パッチ適用済み) のようです。
しかしながら、freebsd-update を実行した際、以下のとおりカーネルが書き換わっていることが確認できます。この書き換わったカーネルには修正パッチが適用されていないため、現象が発生します。
回避策について
ディストリビューター側にて修正パッチが適用されるまで Azure 上で動作する FreeBSD の環境を FreeBSD 11.0-RELEASE にアップグレードを控えたほうがよいと思います。
既に FreeBSD 11.0-RELEASE 環境であれば、/etc/freebsd-update.conf を以下の図のように編集し、カーネルをアップデートしないようにして、ユーザーランドのみアップデートする、というように回避することは可能です。
補足
Azure 仮想マシン自体のバックアップについて、FreeBSD は現状サポート対象外となっています。
参考
- FreeBSD now available in Azure Marketplace
https://azure.microsoft.com/ja-jp/blog/freebsd-now-available-in-azure-marketplace/ - FreeBSD 11.0 on Microsoft Azure Marketplace
https://azure.microsoft.com/en-us/marketplace/partners/microsoft/freebsd110/ - FreeBSD 10.3 on Microsoft Azure Marketplace
https://azure.microsoft.com/en-us/marketplace/partners/microsoft/freebsd103/ - The FreeBSD Project
https://www.freebsd.org/ja/ - FreeBSD Security Advisories
https://www.freebsd.org/security/advisories.html - FreeBSD Errata Notices
https://www.freebsd.org/security/notices.html - 17.2. FreeBSD Update
https://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/updating-upgrading-freebsdupdate.html