起動時に特定のデバイスが認識 されるまでzpoolのimportを待つ方法

From: <freebsdusersjp_at_t11i.jp>
Date: Mon, 08 Aug 2022 13:02:39 UTC
戸川と申します。

13.1-RELEASEにおいて、起動時に特定のディスクデバイスが認識されるまで
zpoolのimportを待つ方法を探しています。

----

下記のようなディスク環境を使用しています。

・FreeBSD 12.3-RELEASE → 13.1-RELEASEにupgrade
・Root FS (/usr や /var を含まない):
     NVMe SSD上のパーティション(UFS)
・/usr, /var:
     HDD 4台(/dev/ada0 - /dev/ada3)で構成されるRAIDZのpool上にあるZFS

----

12.3-RELEASEを動作させている時点で、既に
「起動時に /etc/rc.d/zfs を実行していると思しき時点で、
   まだ /dev/ada0 等のディスクデバイスが認識されておらず、
   /usr のマウントに失敗して起動が停止する」
という現象が発生していました。
(このRoot FSは、NVMe SSDの前はUSBメモリ上に構築しており、
  速いNVMe SSDに移した際にこの現象が発生しました)

この時は、下記のページを参考に、/etc/fstab に
/usr のマウント指定を書き足す、というworkaroundで解決しました。
https://lists.freebsd.org/pipermail/freebsd-questions/2013-July/252121.html

(このあたりの対処は以下のページに書きました。
  http://toga.vegalta.org/wordpress/2022/01/09/1097 )

----

13.1-RELEASEにupgradeしたところ、起動時のzpoolのimportが
/etc/rc.d/zpool から行われるようになったようで、
このスクリプトが実行される時点で /dev/ada0 等が認識されていないと
importに失敗するようです。

試しにこのスクリプトを編集し、/dev/ada3 が認識されるまで
sleepするようにしたところ、zpoolのimportに成功しました。

FreeBSD標準で同じような機能が無いかと思い、お伺いしました。


よろしくお願いいたします。