容忍失敗的自動掛載的檔案系統

容忍失敗的自動掛載的檔案系統

(我運行的是 openSUSE 13.2)

我目前的設置

我有一個外部備份驅動器,我在啟動時使用以下行安裝該驅動器/etc/fstab

/dev/mapper/cr_backup    /backup    ext4     comment=systemd.automount,nofail 0 2

我有這個nofail選項,因為有時備份驅動器不存在,並且我不希望啟動在這種情況下掛起。

問題

當備份磁碟機不存在時,ls在我的根目錄上運行會進入無限循環,我必須使用 ctrl+c 取消該循環。錯誤訊息是:

ls: cannot access /backup: Interrupted system call

似乎ls失敗了,因為它試圖訪問備份驅動器但不能。

一種解決方案是將備份磁碟機嵌套在此處,/backup/backup以免ls /發生故障。然而,這感覺像是一個骯髒的駭客,我想知道是否有一個更優雅的解決方案(我渴望了解更多有關係統如何運作的信息!)。

根據我的(有限)經驗mount,如果未安裝設備,則安裝點是一個空目錄。我可以在這裡實現類似的目標嗎?不過,我需要小心,因為我安排了每小時自動備份,如果未安裝設備,目前備份不會運行。如果備份尚未安裝備份驅動器,我絕對不希望備份將所有內容轉儲到空目錄中!

答案1

在我看來,嘗試在啟動時掛載備份檔案系統是一種不好的做法,因為如果出現問題(rm -rf / [enter] ops),備份上的資料可能會一起刪除。

因此,如果您使用腳本來執行此操作,請在腳本內或 cron 內掛載,並在完成後卸載。

這樣您的啟動將不再掛起,檔案系統也將正常運作。

但是,另一個解決方案是將其從 fstab 中刪除,並將其作為掛載命令放入 rc.local 中,並使用「&」字元在背景執行:

mount /dev/mapper/cr_backup /backup -t ext4&

對於可移動設備,您也有 autofs 解決方案: https://linuxconfig.org/automatically-mount-usb-external-drive-with-autofs

答案2

我知道您正在運行 SUSE,但是來自 Ubuntu fstab wiki 的此聲明(https://help.ubuntu.com/community/Fstab)可能會為您指明正確的方向:

可移動設備,例如閃存驅動器加到 fstab,但通常由 gnome-volume-manager 掛載,超出了本文檔的範圍。

更新:這可能很有趣http://www.novell.com/coolsolutions/tip/17785.html,一篇關於 SUSE 的舊文章。

相關內容