FreeBSD 13 と一部の InfiniBand HBA の組み合わせで起動に失敗する
家のストレージサーバをやっている FreeBSD サーバを FreeBSD 13.0-RELEASE から 13.1-RELEASE にアップグレードしたら起きてこなくなったという話。
Symptom
- サーバで FreeBSD 13.1 (もしくはTrueNASなどのFreeBSD系システム)を運用している
- サーバ起動時に
Initializing ib_mthca
を示したまま起動が進まない(フリーズはしていない) - サーバにMellanox製、ないしMellanox製チップを搭載したInfiniBand HCAを搭載している
- TrueNASのForum では、
415-0017-08 E
という型番のカードが搭載されている場合に事象が発生したとの報告がある。 FreeBSDのForum でも同様の報告がある。 - 私の場合は hpe MicroServer Gen8 に Mellanox
MHES14-XTC
InfiniHost III Lx を搭載した環境で発生した
- TrueNASのForum では、
Resolution
Temporary solution
もっとも簡単な解決はHBAカードを抜くことだ。それで問題なく起動する。
あるいは 3rd Stage Loader (起動時の Welcome to FreeBSD スクリーン) で 3. Escape to loader prompt
を選び、以下のオプションを与えることで、一時的にカードを無効化して起動できる。
# 起動時に ib_mthca0: <ib_mthca> mem... と表示される場合 set hint.ib_mthca.0.disabled=1 boot
Permanent solution
カードを抜いてしまう他に、以下のオプションを用いて恒久的にカードの認識を無効化することができる。
sudo sh -c "echo 'hint.ib_mthca.0.disabled=\"1\"' >> /boot/device.hints"
ib_mthcaドライバが一部のInfiniBandカードを正しく初期化できていないか、もしくは対応していないInfiniBandカードを初期化しようとしているのではないかと思うが、リリースノートにそれらしい変更点は書いてないので、あまり深追いしていない。