Linux開機時略過掛載失敗的外接裝置 / Skip Disconnected Devices on Boot in Linux
要記得在/etc/fstab的掛載參數加上nofail。
掛載設定 / fstab
https://linux.vbird.org/linux_basic/centos7/0230filesystem.php#fstab
要在Linux掛載儲存裝置的話,除了在開機之後再用mount手動指令掛載之外,比較正式的寫法是在 /etc/fstab 檔案裡面設定儲存裝置,這樣就能在開機時自動掛載。
/etc/fstab的設定相當複雜,可以參考鳥哥的介紹。大家比較常注意的是以下幾點:
- 掛載的裝置:用路徑表示,通常是/dev/開頭。
- 掛載點:實際上可以存取的資料夾,一樣用路徑表示。
- 檔案系統:通常是ext4。
然而,後面的掛載參數還有更多設定值得關注。
nofail
https://bobcares.com/blog/nfs-fstab-nofail/
其中一項值得關注的參數叫做「nofail」。他的意思是,Linux會在開機的流程中嘗試掛載該裝置。但如果該裝置無法掛載,那Linux會略過它,繼續完成後面的開機裝置。
nofail通常用在連線狀態可能不穩的設備上。例如:
- 用網路連接的裝置:NFS
- 用USB連接的外接裝置:隨身碟、隨身硬碟。
- 透過讀卡機的讀取的裝置:電腦上的Micro SD記憶卡。
如果你的Linux會連接以上裝置的話,那可能你也需要加上nofail喔。
https://unix.stackexchange.com/questions/589434/emergency-mode-error-on-startup
如果沒有nofail,而儲存裝置在開機時又無法連線的話,通常Linux會卡在開機程序中,出現類似上圖的提示,讓你可以用維護模式進入指令列。進入指令列之後,可以試著在 /etc/fstab 加入 nofail 參數,接著再 reboot 看看。下次開機可能就會成功。
設定例子 / Example
以下是在 /etc/fstab 加上nofail掛載的例子:
/dev/sda3 /mnt/ssd2t/ext4 ext4 rw,user,exec,nofail 0 2
它的意思是:
- /dev/sda3 : 掛載的設備。這是SATA設備 (/dev/sd) 之中的第一個設備 (a) 之中的第一個磁碟分區 (3) 。
- /mnt/ssd2t/ext4 : 掛載之後的路徑。成功掛載的話,該路徑就可以看得到儲存裝置裡面的檔案。掛載失敗的話,該路徑就只是空的資料夾。要注意,如果該路徑不存在的話,掛載也會失敗喔。
- ext4 : 用ext4 檔案系統掛載。關於檔案系統,可以參考Ubuntu手冊的檔案系統介紹。
- rw,user,exec,nofail :掛載參數。rw表示可讀寫、user表示允許使用者掛載、exec 表示可以在該裝置上執行程式、nofail是掛載失敗也會繼續開機。
使用nofail的好處是裝置沒連好也不會妨礙你的開機,壞處是有可能會在沒掛載的情況下進入系統。
如果是在自動化管理的伺服器上存放重要資料的外接裝置的話,那預設不要用nofail比較好。如果是像我一樣,在Linux筆電外接各種裝置的話,那使用nofail會是比較適合的選擇。
文章最後的問題是:你有看過 /etc/fstab 嗎?你會在什麼時候用到它呢?
下面留言喔!