http://forum.ubuntu.org.cn/viewtopic.php?t=58468php
主要翻譯自http://www.tuxfiles.org/linuxhelp/fstab.html,根據本身的理解作了修改和補充
可能玩Linux的朋友都知道fstab這個文件,若是要用好linux,熟悉linux的一些核心配置文件是必要的,而fstab則是其中之一。這個文件描述系統中各類文件系統的信息,應用程序讀取這個文件,而後根據其內容進行自動掛載的工做。所以,咱們須要理解其中的內容,瞭解它如何與 mount命令配合工做,並可以針對本身的狀況進行修改。
做爲系統配置文件,fstab一般都位於/etc目錄下,它包括了全部分區和存儲設備的信息,以及它們應該掛載到哪裏,以什麼樣子的方式掛載。若是遇到一些相似於沒法掛載你的windows分區阿,沒法使用你的光驅阿,沒法對某個分區進行寫入操做阿什麼的,那麼基本上能夠判定,你的fstab內容有問題了。也就是說,你能夠經過修改它來搞定這些問題,而不用去論壇冰天雪地裸體跪求答案了。
說了半天,/etc/fstab其實就是一個文本文件,用gedit或者vi均可以打開,固然,前提是root權限。在這個文件中,每一個文件系統(包括分區或者設備)用一行來描述,在每一行中,用空格或TAB符號來分隔各個字段,文件中以*開頭的行是註釋信息。Fstab文件中的紀錄的排序十分重要。由於 fsck,mount或umount等程序在作它們的工做時會按此順序進行本。下面進行詳細的講解,本文假設讀者已經有掛載文件系統和分區的基礎知識。
在講解以前要說一下,每一個人所使用的系統狀況都是不一樣的,包括硬件種類,所用系統等,所以fstab文件確定是有所差別的。可是其基本結構,如上所述,都不會變。因此咱們先以一個fstab內容做爲模板進行講解。
首先請看下面這個例子:
/dev/hda2 / ext2 defaults 1 1
/dev/hdb1 /home ext2 defaults 1 2
/dev/cdrom /media/cdrom auto ro,noauto,user,exec 0 0
/dev/fd0 /media/floppy auto rw,noauto,user,sync 0 0
proc /proc proc defaults 0 0
/dev/hda1 swap swap pri=42 0 0
這些看起來毫無心義的字符表明了什麼?在對應相應分區或者存儲設備信息的每一行中,每一列又是什麼意思?先大致講一下,第一列表示設備的名稱,第二列表示該設備的掛載點,第三列是文件系統,第四列是掛載選項,第五列是dump選項(用一個數字表示),第六列(接下來的數字)表示文件系統檢查選項。好了,接下來,就要詳細介紹這些參數的具體含義了。
第1、二列:設備和默認掛載點
說實話,第一列和第二列的內容是最簡單最直接的,它們的做用就是告訴mount命令,我想掛載什麼分區或者什麼設備,以及我所但願的掛載點在哪裏。在fstab中爲某一個設備指定的掛載點是其默認掛載點,也就是當你在掛載目錄的時候沒有手工指定其餘目錄的話,系統就將該設備掛載到這個目錄。大多數 Linux發行版都會爲掛載點建立專門的目錄,大多數是在/mnt下,可是一些發行版(好比SUSE或者ubuntu)是在/media下。筆者使用的是 ubuntu,因此示例信息中也是用的/media目錄。
按照咱們給出的fstab示例,若是你敲入命令
$ mount /dev/fd0
你的軟驅就將掛載到/media/floppy,由於這是你告訴系統的軟驅默認掛載點。若是沒有這個信息,當你敲入mount命令時,mount會感到很困惑:該死的,你想讓我把這玩意掛載到哪裏去呢?固然,若是你看fstab中發行版給你指定的默認掛載點不順眼,也能夠自由修改它,修改爲任何一個你但願的目錄均可以。若是還不存在,就首先建立這個目錄。要知道,fstab是不會把全部工做都給你包乾的哦。
另外,有一些分區和存儲設備是在Linux系統啓動的時候就自動掛載的,好比,讓咱們看看剛纔列出來的fstab示例信息,有兩行是這樣的:
/dev/hda2 / ext2 defaults 1 1
/dev/hdb1 /home ext2 defaults 1 2
正如剛纔咱們講到的那樣,這兩行表示/dev/hda2默認掛載到/根目錄,而 /dev/hdb1則默認掛載到/home目錄,。這些工做在你Linux系統啓動的時候就會經過讀取fstab自動完成,不然的話……想象你會遭受什麼樣的折磨吧,全部的程序都在/根目錄下,而你卻沒法使用,由於你沒有掛載/根目錄!恩,我保證,這將是一次讓人沮喪的系統使用經歷。
除了顯示的使用設備名,你可使用設備的UUID或設備的卷標籤,例如,你能夠在這個字段寫成「LABAL=root」或「UUID= 3e6be9de- 8139-11d1-9106-a43f08d823a6」,這將使系統更具伸縮性。例如,若是你的系統添加或移除了一個SCSI硬盤,這有能夠改變你的設備名,但它不會修改你的卷標籤。
對於NFS mount操做,這個字段應該包含host:dir格式的信息,例如:knuth.aeb.nl:/,對於進程文件系統procfs,使用proc。
第三列:文件系統類型
fstab中的第三列指示了設備或者分區的文件系統類型。它支持不少種類的文件系統,咱們在這裏只介紹最爲經常使用的。若是想了解你的kernel目前支持哪些文件系統,能夠查看/proc/filesystems的內容。若是這個字段定義爲swap,這條紀錄將關聯到一個用於交換目的的文件或分區。若是這個字段定義爲ignored,這行將被忽略。這對於顯示目前沒有使用的分區很是有用。
ext2 和 ext3: Linux下的Ext2文件系統,是 GNU/Linux 系統中標準的文件系統,其特色爲存取文件的性能極好,對於中小型的文件更顯示出優點,這主要得利於其簇快取層的優良設計。至於Ext3文件系統,它屬於一種日誌文件系統,是對ext2系統的擴展。日誌式文件系統的優越性在於,它會將整個磁盤的寫入動做完整記錄在磁盤的某個區域上,以便有須要時能夠回朔追蹤。因爲詳細紀錄了每一個細節,故當在某個過程當中被中斷時,系統能夠根據這些記錄直接回朔並重整被中斷的部分,而沒必要花時間去檢查其餘的部分,故文件系統檢測不一致時,重整的工做速度至關快,幾乎不須要花時間。
reiserfs: ReiserFS是一個很是優秀的文件系統。也是最先用於Linux的日誌文件系統之一,其機制比Ext3要先進得多,風雷小弟一直使用的就是它,不少發行版如今也把它做爲默認文件系統了。惋惜其做者前段時間出事了……具體狀況就不說了,也不知道下一代reiserfs4還能不能出來,由於ext4都有了。
swap: Swap,即交換區,把它想象成虛擬內存就好了。
vfat 和 ntfs:一看就知道是Windows分區格式了,呵呵。98,me等系統都是使用的vfat,也就是最流行的fat32格式,而NT系列則多使用NTFS,固然也不是固定的,所以2000或者XP系統要具體狀況具體分析。當初Linux對NTFS的寫入支持很差,因此大多數資料都建議用戶使用vfat格式,可是如今支持已經很好了,即便不從新編譯內核,也能夠經過ntfs-3g來進行寫入支持(具體方法請參考這篇文章),所以不用太在乎這個了。
auto:固然,這不是一個文件系統類型。auto只是表示,文件系統的類型將被自動檢測。在上面的示例中,你會發現軟驅和光驅的文件系統類型都是auto,爲何呢?由於它們的文件系統類型隨時均可能改變,好比軟驅,優盤這種設備,可能今天是vfat格式,明天你就把它格式化成了ntfs,所以,最明智的作法就是告訴系統,我無法肯定這東西的當前類型,仍是你本身檢測吧。
udf: 因爲刻錄光驅愈來愈流行,如今不少發行版自帶的fstab中,光驅的文件格式類型是UDF,UDF是Universal Disc Format的縮寫,與ISO 9660格式相容。它採用標準的封裝寫入技術(PW,Packet Writing)將CD-R/CD-RW看成硬盤使用,用戶能夠在光盤上修改和刪除文件。利用UDF格式進行刻錄時,刻錄軟件將數據打包,並在內存中臨時創建一個特殊文件目錄表,同時接管系統對光盤的訪問。
iso9660: 不少光驅也使用的這個選項。ISO9660是一種描述適合CD盤片的電腦文件結構的國際標準。採用此標準的盤片能夠在不一樣的操做系統上使用,如MAC和Windows。
第四列:掛載選項
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則讓你能夠從光驅上直接執行某些程序。
第5、六列:dump和fsck選項
Dump和fsck?這是什麼東西?恩,dump是一個備份工具,而fsck是一個文件系統掃描檢查工具。我不會在這裏詳細介紹它們,由於用man或者google均可以得到更加詳細的信息。
fstab的第五列是表示dump選項,dump工具經過這個選項位置上的數字來決定文件系統是否須要備份。若是是0,dump就會被忽略,事實上,大多數的dump設置都是0。而第六列是fsck選項,fsck命令經過檢測該字段來決定文件系統經過什麼順序來掃描檢查,根文件系統/對應該字段的值應該爲1,其餘文件系統應該爲2。若文件系統無需在啓動時掃描檢查,則設置該字段爲0。html