:::

Linux開機時略過掛載失敗的外接裝置 / Skip Disconnected Devices on Boot in Linux

11月 01, 2023 , , , 0 Comments Edit Copy Download

2023-0429-103453.png

要記得在/etc/fstab的掛載參數加上nofail。


掛載設定 / fstab

2023-0429-100331.png

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/

https://bobcares.com/blog/nfs-fstab-nofail/ 

其中一項值得關注的參數叫做「nofail」。他的意思是,Linux會在開機的流程中嘗試掛載該裝置。但如果該裝置無法掛載,那Linux會略過它,繼續完成後面的開機裝置。

nofail通常用在連線狀態可能不穩的設備上。例如:

  • 用網路連接的裝置:NFS
  • 用USB連接的外接裝置:隨身碟、隨身硬碟。
  • 透過讀卡機的讀取的裝置:電腦上的Micro SD記憶卡。

如果你的Linux會連接以上裝置的話,那可能你也需要加上nofail喔。

2023-0429-101006.png

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 嗎?你會在什麼時候用到它呢?

下面留言喔!