/etc/fstab 引數詳解及如何設定開機自動掛載

不一樣的天空w發表於2017-07-07
/etc/fstab 引數詳解及如何設定開機自動掛載


某些時候當Linux系統下劃分了新的分割槽後,需要將這些分割槽設定為開機自動掛載,否則,linux是無法使用新建的分割槽的。 /etc/fstab 檔案負責配置Linux開機時自動掛載的分割槽。


Windows的檔案結構是多個並列的樹狀結構,最頂部的是不同的磁碟(分割槽),如:C,D,E,F等。Linux的檔案結構是單個的樹狀結構。最頂部的為根目錄,即/。在根目錄下,分為多個子目錄,包括/bin、/boot、/dev、/etc、/home、/lib、/media、/mnt、/opt、/proc、/root、/sbin、/tmp、/usr和/var等。

磁碟Linux分割槽都必須掛載到目錄樹中的某個具體的目錄上才能進行讀寫操作,而fstab正是負責這一配置。顯然,根目錄是所有Linux的檔案和目錄所在的地方,需要掛載上一個磁碟分割槽。上面還提到,Linux分割槽交換也需要獨立使用一個分割槽,因此,安裝一個Linux至少需要兩個分割槽。(事實上,只使用一個分割槽安裝Linux也是可能的,而且,如果電腦的實體記憶體足夠大,交換分割槽並不是必須的)

本文將以某一典型的debian系統為例。開啟 /etc/fstab 檔案
[root@www ~]# vi /etc/fstab

預設情況下,fstab中已經有了當前的分割槽配置,內容可能類似:

 #                                 
    proc              /proc              proc            defaults              0            0
    /dev/hda1         /                  ext3            errors=remount-ro     0            1
    /swapfile          swap              swap            defaults              0            0
    /dev/hdc        /media/cdrom0        udf,iso9660     user,noauto           0            0

由上面的內容可以看出,系統的 /dev/hda1 分割槽被掛載在根目錄,檔案系統是ext3。此外,還有proc、swap等特殊的“分割槽”,與 /dev/hdc 被作為光碟機掛載在了 /media/cdrom0
因此,如果希望將新分割槽 /dev/hda5 掛載在 /home/new 目錄下,則只需在fstab檔案中加入一行:

    /dev/hda5       /home/new               ext3    default   0       1

/etc/fstab各列解析如下:
第一列可以是實際分割槽名,也可以是實際分割槽的卷標(Lable)。
    如果磁碟是SATA介面,且有多個磁碟,則每個磁碟被標記為 /dev/hda 、 /dev/hdb、 /dev/hdc 等以此類推;而每個磁碟的分割槽被標記為 /dev/hda1、 /dev/hda2等。
    如果磁碟是SCSI型別,則多個磁碟會被分別標記為 /dev/sda、/dev/sdb等等。分割槽同理。
    如果使用標籤來表示,則格式如:    LABLE=/

第二列是掛載點。
掛載點必須為當前已經存在的目錄,為了相容起見,最好在建立需要掛載的目標目錄後,將其許可權設定為777,以開放所有許可權。

第三列為此分割槽的檔案系統型別。
Linux可以使用ext2、ext3等型別,此欄位須與分割槽格式化時使用的型別相同。也可以使用 auto 這一特殊的語法,使系統自動偵測目標分割槽的分割槽型別。auto通常用於可移動裝置的掛載。

第四列是掛載的選項,用於設定掛載的引數。常見引數如下:
    auto: 系統自動掛載,fstab預設就是這個選項
    defaults: rw, suid, dev, exec, auto, nouser, and async.
    noauto 開機不自動掛載
    nouser 只有超級使用者可以掛載
    ro 按只讀許可權掛載
    rw 按可讀可寫許可權掛載
    user 任何使用者都可以掛載
    請注意光碟機和軟碟機只有在裝有介質時才可以進行掛載,因此它是noauto
fstab中的第四列表示裝置或者分割槽所需要的掛載選項。這一列也是fstab中最複雜最容易出錯的一列,當然,只要你能知道一些最常用的選項是什麼意思,就可以讓你從頭疼中解脫出來。如果要把可用的選項一項一項介紹……恩,我估計我會寫到明天,所以,我還是隻是分析最常用的一些選項,如果你想知道更多的東西,還是求助於man吧。

auto 和 noauto:這是控制裝置是否自動掛載的選項。auto是預設選擇的選項,這樣,裝置會在啟動或者你使用mount -a命令時按照fstab的內容自動掛載。如果你不希望這樣,就使用noauto選項,如果這樣的話,你就只能明確地透過手工來掛載裝置。

user 和 nouser:這是一個非常有用的選項,user選項允許普通使用者也能掛載裝置,而nouser則只允許root使用者掛載。nouser是預設選項,這也是讓很多 Linux新手頭疼的東西,因為他們發現沒有辦法正常掛載光碟機,Windows分割槽等。如果你作為普通身份使用者遇到類似問題,或者別的其他問題,就請把 user屬性增加到fstab中。

exec 和 noexec: exec允許你執行對應分割槽中的可執行二進位制程式,同理,noexec的作用剛好相反。如果你擁有一個分割槽,分割槽上有一些可執行程式,而恰好你又不願意,或者不能在你的系統中執行他們,就可以使用noexec屬性。這種情況多發生於掛載Windows分割槽時。exec是預設選項,理由很簡單,如果 noexec變成了你/根分割槽的預設選項的話……

ro: 以只讀來掛載檔案系統。

rw: 以可讀可寫的屬性來掛載系統。

sync 和 async:對於該檔案系統的輸入輸出應該以什麼方式完成。sync的意思就是同步完成,通俗點講,就是當你複製一個東西到裝置或者分割槽中時,所有的寫入變化將在你輸入cp命令後立即生效,這個東西應該立馬就開始往裝置或者分割槽裡面複製了。而如果是async,也就是輸入輸出非同步完成的話,當你複製一個東西到裝置或者分割槽中時,可能在你敲擊cp命令後很久,實際的寫入操作才會執行,換句話說,就是進行了緩衝處理。

有時候這種機制蠻不錯的,因為sync會影響你係統的執行速度,但是這也會帶來一些問題。想一想,當你希望將一個檔案複製到u盤上時,你執行了 cp 命令,卻忘記執行umount命令(它會強行將緩衝區內容寫入),那麼你複製的檔案實際上並沒有在u盤上面。如果你是使用的mv命令,而你又很快將u盤拔出……恭喜你,檔案會從這個星球上消失的。因此,雖然async是預設屬性,但是對於u盤,行動硬碟這種可移動儲存裝置,最好還是讓他們使用sync選項。

defaults: 所有選項全部使用預設配置,包括rw, suid, dev, exec, auto, nouser, 和 async。

一般使用者沒有特殊需求,直接使用defaults就可以了。看完介紹,我們再回過頭去看看前面的示例內容,以光碟機為例,主要關注掛載選項這裡,可以看到,光碟機和其他分割槽裝置的不同是ro,因為普通光碟機是隻讀的。而exec則讓你可以從光碟機上直接執行某些程式。


第五列是dump備份設定。
當其值設定為1時,將允許dump備份程式備份;設定為0時,忽略備份操作;

第六列是fsck磁碟檢查設定。
其值是一個順序。當其值為0時,永遠不檢查;而 / 根目錄分割槽永遠都為1。其它分割槽從2開始,數字越小越先檢查,如果兩個分割槽的數字相同,則同時檢查。
當修改完此檔案並儲存後,重啟伺服器生效。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2141695/,如需轉載,請註明出處,否則將追究法律責任。

相關文章