思考実験とD.I.Y.

D.I.Y and Gedankenexperiment

【FreeBSD13.4】ファイルサーバーのメンテ(13):RAID0再構築(3)/ASM1166なHBA⇒起動できなくなったけど、何とかなった。

zfs用のディスクを接続するために、新規にホストバスアダプタ(HBA)を購入して試してみる事にします【注*1

1.HBAの調達

最初は、安く、SATAが2ポートあれば十分なので、下記を候補にしました。

ただ、基盤をよく見ると、アクセス状態の信号を取り出すジャンパーがありません😢。

他に”SATA/2ポート”で、”アクセス信号ジャンパー”があるものを探しましたが、SATAIII×2のタイプでアクセス状態の信号を取り出すジャンパを持つものはみつかりませんでした。

結局、”アクセス信号ジャンパー”があるものとして見つけたのは下記。

値段はSATA/2ポートの物より少々高かったのですが、”ヨシ”としました(*2)。

2.HBAのセット&FreeBSDの起動

(1)調達したHBAをセット

HBAをマザーボード(M/B)のPCIe x4スロットに装着。

6Gbps/500GbyteのHDD2本をHBAのPORT0/3に接続。

(2)FreeBSDが起動できない
FreeBSDを起動しますが、
”ルートファイルシステムがマウントできない”と言われて起動できません😢。

起動中、気になるメッセージが見えた気がしました(*3)😅。

なんとなくHBA追加時の定番の問題のような気がするので、

サブコンソールの起動中の画面[*4]を、メインコンソール側のパソコンで録画(*5)し、吐き出されたメッセージを確認します。

(3)起動中のシステムメッセージを確認

本来、”ada0”でなければいけないシステムディスクが”ada2”になっています😑。

これでは、ルートファイルシステムをマウントできません😅。

今回、起動できないのは、HBA側のディスクが先に割り当てられる問題で、

久しぶりに、この問題にぶち当たりました😅。

(4)システムディスクの”scbus”を確認

対処法は、”scbus”と”ada0”との紐づけを設定することで解決できます😀。

まず、HBAに接続したHDDを一旦外して再起動。

”dmesg”でscbusとシステムディスクの関係を確認します。

HBAの方が先に”ahcich”が割り当てられています😑。

しかも、6 portのHBAなのに、32個もチャンネルが見えていますが😅、
これはASM1166の既知[*6]の問題ですので、気にしません😀。

本来のada0は、”scbus30”上にあることになっている😅。

また、ada1は、”scbus31”上にあることになっている😅。

3.FreeBSDの設定変更

(1)”device.hints”の編集

”scbus”と”ada0”との紐づけをするために、HBAに接続したHDDを外したままで作業を継続します。

再度、”dmesgコマンドで、”ada0/ada1とscbus/ahchiの関係を確認しておきます。

”/boot/device.hints”を編集して、、”scbus”と”ada0”との紐づけを設定します。

root@file_sv:~ # cd /boot ; /bootへ移動
root@file_sv:boot # cp /boo/device.hints /boot/device.hints.orig ; device.hintsのバックアップを作成
root@file_sv:boot # chmod +w /boot/device.hints ; 設定ファイルに書き込み属性を付与
root@file_sv:/boot # vi /boot/device.hints ; device.hintsを修正

下記の黄色字部分を追加・修正します(注*7)。

[..]
hint.acpi_throttle.0.disabled="1"
hint.p4tcc.0.disabled="1"

hint.scbus.0.at="ahcich32"
hint.ada.0.at="scbus0"
hint.scbus.1.at="ahcich33"
hint.ada.1.at="scbus1"

修正が終わったら、再起動します。

起動することを確認します。

Tips:修正したdevice.hintsに誤りがあって、起動できなくなった時には(*8
  1. FreeBSD13.4のインストールDVDから起動
  2. Single User Mode”を選択。
  3. "gpart show -lp"でスライスを確認
  4. ”mount  -w /dev/ada0 /mnt”
    で”ada0”(今回のシステムのルートファイルシステム)をマウント。
  5. "cd /mnt/boot"
    "cp device.hints.orig device.hints"
    で、オリジナルの ”deive.hints”に戻す
  6. 再起動。
(2)HBAにディスクを接続して起動確認

一旦、システムをシャットダウンし、HBAとの接続を外してたHDDを再び、HBAに接続して、起動。

無事起動しました😀。

久しぶりの”device.hints”の修正でハマりかけ、手間取ったので😅、zfs構築は次回行います😅。

【次回に続く予定】

ブログランキング・にほんブログ村へにほんブログ村 IT技術ブログへ

出典・引用・備考

*1:この投稿の内容は、特定の機種並びに特定の環境での確認結果になります。
同等機種や異なる環境での動作他を保証するものではありませんので、ご留意いただけます様お願いいたします。

*2:ファイルサーバーでの利用が終わっても、小生的には活用方法はあるので。。。😀

*3:メッセージが流れていくのが早すぎて、よくわかりませんでした。

*4:

*5:ルートファイルシステムがマウントできていませんので😅、起動中のメッセージはFreeBSD上に記録されることがないためです😀。

*6:"ahci: Asmedia ASM1166 lists 32-ports on 13-STABLE"、2021年11月8日、FreeBSD Bugzilla、https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=259705、最終閲覧日:2025年3月21日

*7:ada0/ada1とscbus/ahich”、

*8:ちなみに、小生はミスを犯して、起動できなくなりました😅。
対処に少々手間取ったので、このTipsは健忘禄メモです😅。