/etc/fstab 中的 _netdev 掛載選項如何工作?
我想知道在使用
_netdev
選項時將安裝推遲到網路介面啟動後的確切機制(實現)是/etc/fstab
什麼?會
systemd
改變這種行為嗎?另外,
delay_connect
sshfs 的選項提供什麼_netdev
不提供什麼?從
mount
手冊頁:
_netdev
文件系統駐留在需要網路訪問的設備上(用於防止系統在系統上啟用網路之前嘗試掛載這些文件系統)。
從
sshfs
手冊頁:
-o delay_connect
延遲連接到伺服器
從
man systemd.mount
systemd 版本 231 開始:引用本地和網路文件系統的掛載單元通過它們的文件系統類型規範來區分。在某些情況下,這還不夠(例如基於網路塊設備的掛載,例如 iSCSI),在這種情況下,_netdev可能會添加到單元的掛載選項字元串中,這會強制 systemd 將掛載單元視為網路掛載。
SysV 初始化
/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
,它聲明(通過 LSB 標頭)它們對$network
. 因此,這些會在網路啟動後稍後安排,而mountall.sh
可以更早地執行。系統
本地安裝單元由 拉入
local-fs.target
,遠端安裝單元由remote-fs.target
.systemd-fstab-generator
掃描/etc/fstab
,生成掛載單元,並根據與上述類似的條件將它們分配給上述目標。延遲連接
此選項意味著 sshfs 不會在掛載時啟動與遠端伺服器的 SSH 連接,但只會在實際需要它的第一個文件系統操作時這樣做。這會延遲錯誤報告,但在某些情況下可能是一種有用的解決方法,例如,如果您的 init 系統沒有足夠的資訊來正確訂購掛載操作。“網路”正在“啟動”是一個相當鬆散的術語,即使可以添加任意額外的依賴項到掛載單元,如果觸發事件不是啟動事務的一部分(用 systemd 的說法),這也無濟於事。