_netdev
の/etc/fstab
オプションを使用してネットワークインターフェイスが起動するまでマウントを延期するために使用される正確なメカニズム(実装)は何ですか?systemd
はこの動作を変更しますか?
また、sshfsのdelay_connect
オプションは、_netdev
が提供しないものを何に提供しますか?
mount
から man page :
_netdev
ファイルシステムは、ネットワークアクセスが必要なデバイスに存在します(システムでネットワークが有効になるまで、システムがこれらのファイルシステムをマウントしようとするのを防ぐために使用されます)。
sshfs
から man page :
-o delay_connect
サーバーへの接続を遅延
/etc/init.d/mountall.sh
initスクリプトは、ローカルファイルシステムのみをマウントします。
mount -a -t nonfs,nfs4,smbfs,cifs,ncp,ncpfs,coda,ocfs2,gfs,gfs2,ceph -O no_netdev
他のファイルシステムは、たとえば/etc/init.d/mountnfs.sh
などの個別のinitスクリプトによってマウントされ、(LSBヘッダーを介して)$network
への依存関係を宣言します。したがって、これらはネットワークが起動した後、後でスケジュールされますが、mountall.sh
ははるかに早く実行できます。
ローカルマウントユニットはlocal-fs.target
によってプルされ、リモートマウントユニットはremote-fs.target
によってプルされます。 systemd-fstab-generator
は/etc/fstab
をスキャンし、マウントユニットを生成して、上記と同様の条件に基づいて、これらを上記のターゲットに割り当てます。
このオプションは、sshfsがマウント時にリモートサーバーへのSSH接続を開始せず、実際にそれを必要とする最初のファイルシステム操作でのみ開始することを意味します。これはエラー報告を遅らせますが、たとえば、initシステムがマウント操作を正しく注文するのに十分な情報を取得していない場合など、場合によっては有効な回避策になることがあります。 「ネットワーク」が「アップ」であることはかなり 緩い用語 であり、任意の 追加の依存関係 を追加して、トリガーイベントが(systemd用語では)起動トランザクションの一部ではありません。
Systemdのバージョン231のman systemd.mount
から:
ローカルおよびネットワークファイルシステムを参照するマウントユニットは、ファイルシステムタイプの仕様によって区別されます。場合によってはこれでは不十分です(たとえば、iSCSIなどのネットワークブロックデバイスベースのマウント)。その場合、ユニットのマウントオプション文字列に_ netdevが追加され、systemdがマウントユニットネットワークマウント。
Upstart/Udev
upstart
および/またはudev
ベースのシステムの場合、これは少し異なります。
udev
はNFSファイルシステムをマウントしようとするようで、netfs
は失敗した場合の安全策です。
私が間違っていたら訂正してください。どちらにしても、この回答は最近の一部のレガシーシステム(Ubuntu 14.04 LTS、RHEL6)にのみ関連しています。