轉:http://c.biancheng.net/view/900.html
了解了 mount 命令之后,讀者可能會問,系統如何在開機時自動掛載硬盤,它又是怎么知道哪些分區是需要掛載的呢?
很簡單,Linux 通過 /etc/fstab 配置文件來確定這些信息,這個配置文件對所有用戶可讀,但只有 root 用戶有權修改此文件。也就是說,如果我們想實現開機自動掛載某個硬件設備,只需要使用 root 身份在 /etc/fstab 文件中添加此設備即可。
首先,我們打開這個文件看看吧,執行如下命令:
[root@localhost ~]# 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 個字段,它們的含義分別是:
- 用來掛載每個文件系統的分區設備文件名或 UUID(用於指代設備名);
- 掛載點;
- 文件系統的類型;
- 各種掛載參數;
- 指定分區是否被 dump 備份;
- 指定分區是否被 fsck 檢測;
下面,我們一一進行講解。
/etc/fstab文件各字段的含義
首先介紹第一個字段,什么是 UUID 呢?UUID 即通用唯一標識符,是一個 128 位比特的數字,可以理解為就是硬盤的 ID,UUID 由系統自動生成和管理。
這個字段在 CentOS 5.5 系統中是寫入分區的卷標名或分區設備文件名的,現在變成了硬盤的 UUID。這樣做的好處是當硬盤増加了新的分區,或者分區的順序改變,或者內核升級后,仍然能夠保證分區能夠正確地加載,而不至於造成啟動障礙。
那么,每個分區的 UUID 到底是什么呢?用 dumpe2fs 命令(后續會講)就可以查看到,具體執行命令如下:
[root@localhost ~]# 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,命令如下:
[root@localhost ~]# 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 文件,執行命令如下:
[root@localhost ~]# 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 文件修改正確,就不會出現任何問題