Linux自動掛載(設定/etc/fatab)詳解

2020-07-16 10:04:45
了解了 mount 命令之後,讀者可能會問,系統如何在開機時自動掛載硬碟,它又是怎麼知道哪些分割區是需要掛載的呢?

很簡單,Linux 通過 /etc/fstab 組態檔來確定這些資訊,這個組態檔對所有使用者可讀,但只有 root 使用者有權修改此檔案。也就是說,如果我們想實現開機自動掛載某個硬體裝置,只需要使用 root 身份在 /etc/fstab 檔案中新增此裝置即可。

首先,我們開啟這個檔案看看吧,執行如下命令:

[[email protected] ~]# vi /etc/fstab
UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 defaults 1 1
UUID=0b23d315-33a7-48a4-bd37-9248e5c44345 /boot ext4 defaults 1 2
UUID=4021be19-2751-4dd2-98cc-383368c39edb swap swap defaults 0 0
#只有這三個是真正的硬碟分割區,下面的都是虛擬檔案系統或交換分割區
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5, mode=620 0 0
sysfs /sys sysfe defaults 0 0
proc /proc proc defaults 0 0

目前,大家可以忽略 tmpfs、devpts、sysfs 和 proc 這幾行,它們分別是與共用記憶體、終端視窗、裝置資訊和核心引數相關聯的特殊裝置。

可以看到,在 fstab 檔案中,每行資料都分為了 6 個欄位,它們的含義分別是:
  1. 用來掛載每個檔案系統的分割區裝置檔名或 UUID(用於指代裝置名);
  2. 掛載點;
  3. 檔案系統的型別;
  4. 各種掛載引數;
  5. 指定分割區是否被 dump 備份;
  6. 指定分割區是否被 fsck 檢測;
下面,我們一一進行講解。

/etc/fstab檔案各欄位的含義

首先介紹第一個欄位,什麼是 UUID 呢?UUID 即通用唯一識別符號,是一個 128 位位元的數位,可以理解為就是硬碟的 ID,UUID 由系統自動生成和管理。

這個欄位在 CentOS 5.5 系統中是寫入分割區的卷標名或分割區裝置檔名的,現在變成了硬碟的 UUID。這樣做的好處是當硬碟増加了新的分割區,或者分割區的順序改變,或者核心升級後,仍然能夠保證分割區能夠正確地載入,而不至於造成啟動障礙。

那麼,每個分割區的 UUID 到底是什麼呢?用 dumpe2fs 命令(後續會講)就可以檢視到,具體執行命令如下:

[[email protected] ~]# dumpe2fs /dev/sdb5
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name: test_label
Last mounted on: <not available>
Filesystem UUID: 63f238f0-a715-4821-8ed1-b3d18756a3ef
#UUID
...省略部分輸出...

另外,也可以通過檢視每個硬碟UUID的連結檔名來確定UUID,命令如下:

[[email protected] ~]# ls -l /dev/disk/by-uuid/
總用量 0
Irwxrwxrwx. 1 root root 10 4 月 11 00:17 0b23d315-33a7-48a4-bd37-9248e5c44345
-> ../../sdal
Irwxrwxrwx. 1 root root 10 4 月 11 00:17 4021 be19-2751 -4dd2-98cc-383368c39edb
-> ../../sda2
Irwxrwxrwx. 1 root root 10 4 月 11 00:17 63f238f0-a715-4821-8ed1-b3d18756a3ef
-> ../../sdb5
Irwxrwxrwx. 1 root root 10 4月 11 00:17 6858b440-ad9e-45cb-b411 -963c5419e0e8
-> ../../sdb6
Irwxrwxrwx. 1 root root 10 4月 11 00:17 c2ca6f57-b15c-43ea-bca0-f239083d8bd2
-> ../../sda3


第二個欄位關於掛載點的含義,我們已經在 《Linux掛載》 和 《Linux mount命令》 章節中講解,所以這裡不再贅述。但需要強調的是,掛載點一定要是已經建立的空目錄。

第三個欄位為檔案系統名稱,CentOS 6.3 的預設檔案系統應該是 ext4。

第四個欄位是掛載引數,這個引數和 mount 命令的掛載引數一致。

第五個欄位表示“指定分割區是否被 dump 備份”,0 代表不備份,1 代表備份,2 代表不定期備份。

第六個欄位表示“指定分割區是否被 fsck 檢測”,0 代表不檢測,其他數位代表檢測的優先順序,1 的優先順序比 2 高。所以先檢測 1 的分割區,再檢測 2 的分割區。一般分割區的優先順序是 1,其他分割區的優先順序是 2。

設定 /etc/fatab 檔案

能看懂這個檔案了吧?我們把 /dev/sdb5 和 /dev/sdb6 兩個分割區加入 /etc/fstab 檔案,執行命令如下:

[[email protected] ~]# vi /etc/fstab
UUID=c2ca6f57-b15c-43ea-bca0-t239083d8bd2 ext4 defaults 1 1
UUID=0b23d315-33a7-48a4-bd37-9248e5c44345 I boot ext4 defaults 1 2
UUID=4021be19-2751-4dd2-98cc-383368c39edb swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5, mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/sdb5 /disk5 ext4 defaults 1 2
/dev/sdb6 /disk6 ext4 defaults 1 2

可以看到,這裡並沒有使用分割區的 UUID,而是直接寫入分割區裝置檔名,也是可以的。不過,如果不寫 UUID,就要注意,在修改了磁碟順序後,/etc/fstab 檔案也要相應的改變。

這裡直接使用分割區的裝置檔名作為此檔案的第一個欄位,當然也可以寫分割區的 UUID。只不過 UUID 更加先進,裝置檔名稍微簡單一點。

至此,分割區就建立完成了,接下來只要重新啟動,測試一下系統是否可以正常啟動就可以了。只要 /etc/fstab 檔案修改正確,就不會出現任何問題。