Debian
/etc/fstab 無法在啟動時綁定掛載,但執行 mount -a 可以正常工作
我正在執行安裝了 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=