FreeBSD 10からの起動時に自動的にiSCSIパーティションをマウントする

FreeBSD 10からの起動時に自動的にiSCSIパーティションをマウントする

iSCSIドライブがインストールされているFreeBSD 10.2サーバーがあります。これらのドライブが再起動後も維持されるように、fstabに自動的にマウントされたいと思います。

私がコマンドを実行すると

mount /dev/da0p1 /mnt

完璧に動作します。

mount
/dev/ada0p2 on / (ufs, local, journaled soft-updates)
devfs on /dev (devfs, local, multilabel)
/dev/da0p1 on /mnt (ufs, local, soft-updates)

ただし、/etc/fstabシステムにエントリを入れると起動プロセスが停止し、そのエントリが/dev/dap1無効であるというメッセージが表示されます。これは、ネットワークおよび iSCSI サービスがまだ開始されていないためであると仮定します。

私の/etc/fstabファイルシステムに「late」オプションを追加しましたが、うまくいきません。

# cat /etc/fstab
# Device    Mountpoint  FStype  Options Dump    Pass#
/dev/ada0p2     /       ufs     rw        1        1
/dev/ada0p3    none     swap    sw        0        0


#User Added Entries
#/dev/da0p1      /mnt            ufs     rw,late  3       3

起動プロセスが「ファイルまたはディレクトリ/dev/da0p1を持っていません。ls /dev/da*そのディレクトリで実行すると表示されます(下の画像を参照)。 ここに画像の説明を入力してください。

実際にいくつかのテストを行った後、シングルユーザーモードで数秒待ってから、プロンプトに「exit」と入力すると、システムが起動し続け、ドライブが正常にマウントされます。

マウントが失敗しないようにiscsiデバイスを作成できるように5秒の遅延を設定する方法はありますか?

答え1

免責事項:これが正しいかどうかわかりません。正しいやるべきことがありますが、これは私にとって効果的でした。

したがって、ネットワークサービスのロードを完了し、何かをマウントできるようにiSCSIマウントを作成できるようにするには、起動プロセスに少し時間がかかります。

私がしたことはそれをスクリプトsleep 5に追加するだけでした。/etc/rc.d/mountlate

# PROVIDE: mountlate
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: nojail

. /etc/rc.subr

name="mountlate"
start_cmd="mountlate_start"
stop_cmd=":"

mountlate_start()
{
        local err latefs
        sleep 5               <-------- Added this line
        # Mount "late" filesystems.
        #
        err=0

私には5秒が良い数字のようです。マイレージはさまざまであり、異なる値をテストする必要があります。

繰り返しますが、これがこの特定の問題を解決する正しい方法であるかどうかはわかりません。誰でも良いか正しい方法があれば投稿してください。

答え2

現在最高のソリューション(FreeBSD 11.0+が必要)は次のとおりです。

  • fstab エントリには以下が含まれます。
    • 「遅い」オプション(起動プロセスの速度を遅くしない)
    • "failok"オプション(iSCSI接続エラーが発生した場合はシングルユーザーモードに切り替えません)
    • ダンプ/パス値が0に設定されている
  • iscsictlがiscsi接続を待つように(最大10秒)、rc.confのiscsictl_flagsに「-w 10」を追加します。

/etc/fstab:

/dev/PARTITION.journal         /mnt         ufs     rw,async,failok,late     0       0

/etc/rc.conf:

iscsictl_enable="YES"
iscsictl_flags="-Aa -w 10"
iscsid_enable="YES"

PS:理由はわかりませんが、iSCSIではGPTラベルを使用できません(作成時には機能しますが、再起動時にラベルはここにあります。「gpart show -l」と表示されますが、/ dev / gptでは使用できません)。 /)。

答え3

/etc/rc.d/mountlateにスリープモードを追加する必要はないことがわかりました。代わりに、/etc/fstabでダンプ番号を0に、fsckパス番号を0に変更しました。 fsckは起動時に実行されませんが、パーティションはマウントされます。

/dev/da0p1      /opt            ufs     rw,late 0       0

関連情報