Debian

/etc/fstab 無法在啟動時綁定掛載,但執行 mount -a 可以正常工作

  • August 9, 2019

我正在執行安裝了 Debian 8 (Jessie) 的修改後的 WD MyCloud (Gen 1) NAS。

由於設備的細微差別,我無法調整根分區的大小,並且正在努力解決上面的空間問題。

為了解決這個問題,我將/var/usr目錄同步到主數據分區。

然後,我將以下行添加到/etc/fstab

/data/rootfs/var    /var    none    defaults,bind    0    0
/data/rootfs/usr    /usr    none    defaults,bind    0    0

重啟後發現/var目錄已經掛載成功,但是/usr目錄沒有

如果然後執行mount -a,則不會出現錯誤,並且/usr目錄已正確安裝。

怎麼了?

如果您使用的是 systemd,則安裝是並行完成的(通過將 fstab 條目動態轉換為安裝單元),不會像 systemd 之前的經驗所預期的那樣保留行順序。

您有一個無法自動猜到的不為人知的依賴關係:在安裝/data/之前安裝/usr。沒有它,您將獲得比賽條件。

您必須手動將依賴項添加為偽掛載選項,使用x-systemd.requires=. 因此,如果應該掛載的前一個掛載點是/data,這應該使它工作:

/data/rootfs/var    /var    none    x-systemd.requires=/data,bind    0    0
/data/rootfs/usr    /usr    none    x-systemd.requires=/data,bind    0    0

如果其他人發現這個問題,但案例是/data像 NFS 這樣的遠端網路文件系統,則還必須在條目上添加偽掛載選項*(* systemd_netdev也可以辨識的 pre-systemd 選項)以使一切正常,因為無法自動提示這一點,並且沒有它可能會混淆解析度。/data/rootfs/usr``none``x-systemd.requires=

引用自:https://unix.stackexchange.com/questions/486777