什麼是 Linux fstab 文件,它是如何工作的?

已發表: 2022-01-29

如果您運行的是 Linux,那麼您可能需要更改文件系統的某些選項。 熟悉 fstab 可以讓整個過程變得容易很多,而且比你想像的要容易得多。

什麼是 Fstab?

Fstab 是您操作系統的文件系統表。 如果您想查看文件系統,請務必查看我們的另一篇文章,HTG 說明:您應該選擇哪種 Linux 文件系統? 在過去,這是系統自動掛載文件的主要方式。 如今,您可以插入任何類型的 USB 驅動器,它會像在 Windows 和 Mac OS 中一樣在 Nautilus 中彈出,但曾幾何時,您必須使用“掛載”命令。 這適用於 DVD、CD 甚至軟盤(還記得那些嗎?)。

那時,您唯一的選擇是告訴計算機,只要插入特定設備,它就應該自動安裝在特定位置。 這就是 fstab 的用武之地,它很棒。 假設您交換了 IDE 或 SCSI 控制器上的硬盤。 計算機可能會以不同的順序加載文件系統,這可能會搞砸事情。 Fstab 被配置為查找特定的文件系統,並每次都以所需的方式自動掛載它們,從而防止發生無數災難。

您的 Fstab 文件

fstab 文件位於:

/etc/fstab

讓我們看看我的 fstab 文件,好嗎?

fstab 文件

您肯定會看到差異,但如果您想使用自己的 fstab,只需將此命令彈出到終端:

不帶 sudo 的命令

廣告

如果您對 nano 不滿意,也可以使用 gedit。

顯而易見的選擇

您會注意到所有條目都以 UUID 開頭。 您可能還記得在我們之前的一篇文章“如何為您的 Linux PC 選擇分區方案”中看到過這一點,但無論如何我們都會再次解釋它。 在格式化期間,每個文件系統都被分配了一個通用唯一標識符,並將其帶入墳墓。 由於無法更改,因此這是選擇要掛載的文件系統的理想方式,尤其是對於重要的文件系統。 假設您的 /home 分區位於第二個硬盤驅動器上,而您最終將其移動到外部硬盤驅動器上; fstab 仍會找到該分區並正確掛載它,從而避免啟動失敗。 如果您切換到(或卡在使用)使用設備標識符選擇分區的舊方法(即 /dev/sda1),則此優勢將消失,因為硬盤驅動器和分區是由它們的控制器計算的,因此可以更改。

編輯:在 fstab 文件中使用 UUID,雖然對大多數家庭用戶來說很方便,但確實有一些重要的警告。 這在使用“組裝”或“基於網絡”的設備時不起作用。 如果您是高級用戶,或者計劃將來使用軟件 RAID 之類的東西,最好不要使用 UUID。

fstab 的下一部分與所有後續部分一樣,由空格或製表符或它們的組合分隔。 在這裡,您將找到掛載點。 如您所見,我有一個根 (/) 掛載點、一個交換空間和兩個手動添加的共享網絡存儲驅動器。 如果要向 fstab 添加條目,則必須在重新啟動計算機之前手動創建掛載點(更改生效)。

接下來是識別分區上文件系統類型的部分。 很多,比如 ext2/3/4、ReiserFS、jFS 等都是 Linux 原生讀取的。 您的特定係統可能仍需要安裝特定的軟件包才能讀取和寫入它們。 完美的例子是我的 NTFS 分區; 你可以看到我正在使用 ntfs-3g 驅動程序來訪問它們。

更可怕的東西

接下來的幾個部分通常會嚇跑新手,但它們實際上並沒有那麼複雜。 有很多可用的選項,但也有一些非常常見的選項。 讓我們來看看它們。 (默認選項是第一個,然後是替代選項,但由於 Linux 發行版可能非常不同,您的里程可能會有所不同。)

  • auto/noauto:指定分區是否應在啟動時自動掛載。 您可以使用“noauto”阻止特定分區在啟動時掛載。
  • exec/noexec:指定分區是否可以執行二進製文件。 如果您有一個可以編譯的暫存分區,那麼這將很有用,或者如果您在單獨的文件系統上有 /home 的話。 如果您擔心安全性,請將其更改為“noexec”。
  • ro/rw:“ro”是只讀的,“rw”是讀寫的。 如果您希望能夠以用戶而不是 root 用戶身份寫入文件系統,則需要指定“rw”。
  • 同步/異步:這個很有趣。 “同步”強制在執行命令時立即發生寫入,這對於軟盤(你是多少個極客?)和 USB 驅動器來說是理想的,但對於內部硬盤來說並非完全必要。 “異步”所做的是允許命令在經過的時間段內執行,可能是當用戶活動停止等時。 是否曾經收到一條消息,詢問您“等待將更改寫入驅動器”? 這通常是原因。
  • nouser/user:這允許用戶擁有掛載和卸載權限。 一個重要的注意事項是“user”自動暗示“noexec”,因此如果您需要執行二進製文件並仍然以用戶身份掛載,請務必明確使用“exec”作為選項。
廣告

這些選項用逗號分隔,沒有空格,可以按任意順序排列。 如果您不確定默認值,可以明確說明您的選項。 從臨時位置(如 USB)掛載的東西不會遵循這個基本模式,除非您在 fstab 中為它們創建條目(通過 UUID)。 當您希望外部硬盤驅動器始終以特定方式安裝時,這很方便,因為普通的拇指驅動器等不會受到影響。

可以看到我的兩個存儲驅動器都開啟了用戶掛載權限,開啟了讀寫權限,並且開啟了自動掛載。 我編譯的軟件不多,但當我編譯時,我會在列表末尾添加“exec”選項。

傾倒和 Fscking

下一個選項是二進制值(“0”表示假,“1”表示真)用於“傾銷”。 對於系統出現故障的情況,這是一種非常過時的備份方法。 您應該將其保留為“0”。

最後一個選項是“通過”的數值。 這告訴系統 fsck 的順序(發音為你喜歡的),或執行文件系統檢查。 如果磁盤的選項為“0”,它將被跳過,就像我的 NTFS 格式的存儲驅動器一樣。 根文件系統應始終為“1”,其他文件系統可以放在後面。 這最適用於 ext3/4 和 ReiserFS 等日誌文件系統。 FAT16/32 和 ext2 等較舊的文件系統可能需要一段時間,因此最好關閉它們的 fscking 並自己定期進行。


既然您知道自己在做什麼,那麼您可以瘋狂地使用自動安裝等。 當您有大量需要管理的分區時,這非常方便。 永遠記得做備份以防萬一出現問題,但玩得開心,並確保在評論中留下您的經驗!

相關:適合開發人員和愛好者的最佳 Linux 筆記本電腦