/etc/fstab文件 詳解

///////////////////////////////////////////////////////////////////////////////linux

http://lspgyy.blog.51cto.com/5264172/1297432ubuntu

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\windows


*******************************************************************************less

有不少人常常修改/etc/fstab文件,可是其中卻有不少人對這個文件所表達的意義不太清楚,由於只要按照必定的模式,就能夠垂手可得地添加一行掛載信息,而不須要徹底理解其中的原理。下面就讓咱們來看看到底還有多少是咱們不瞭解的。異步


/etc/fstab是用來存放文件系統的靜態信息的文件。位於/etc/目錄下,能夠用命令less /etc/fstab 來查看,若是要修改的話,則用命令 vi /etc/fstab 來修改。async

當系統啓動的時候,系統會自動地從這個文件讀取信息,而且會自動將此文件中指定的文件系統掛載到指定的目錄。下面我來介紹如何在此文件下填寫信息。ide

在這個文件下,咱們要關注的是它的六個域。下面將詳細介紹這六個域的詳細意義。工具


一、file system。這裏用來指定你要掛載的文件系統的設備名稱或塊信息,也能夠是遠程的文件系統。性能

作過嵌入式linux開發的朋友均可能知道 mount 192.168.1.56:/home/nfs /mnt/nfs/ -o nolock (能夠是其餘IP)命令所表明的意義。它的任務是把IP爲192.168.1.56的遠程主機上的/home/nfs/目錄掛載到本機的/mnt/nfs /目錄之下。若是要把它寫進/etc/fstab文件中,file system這部分應填寫爲:/192.168.1.56:/home/nfs/。 若是想把本機上的某個設備(device)掛載上來,寫法如:/dev/sda一、/dev/hda2或/dev/cdrom,其中,/dev/sda1 表示第一個串口硬盤的第一個分區,也能夠是第一個SCSI硬盤的第一個分區,/dev/hda1表示第一個IDE硬盤的第一個分區,/dev/cdrom 表示光驅。此外,還能夠label(卷標)或UUID(Universally Unique Identifier全局惟一標識符)來表示。用label表示以前,先要e2label建立卷標,如:e2label /dir_1 /dir_2,其意思是說用/dir_2來表示/dir_1的名稱。而後,再在/etc/fstab下添加:LABEL=/dir_2 /dir_2。重啓後,系統就會將/dir_1掛載到/dir_2目錄上。對於UUID,能夠用vol_id -u /dev/sdax來獲取。好比我想掛載第一塊硬盤的第一個分區,先用命令vol_id -u /dev/sda11 來取得UUID,好比是:5dc08a62-3472-471b-9ef5-0a91e5e2c126,而後在這個域上填寫: UUID=5dc08a62-3472-471b-9ef5-0a91e5e2c126,便可表示/dev/sda11。Red Hat linux 通常會使用label,而Ubuntu linux 通常會用UUID。ui


二、mount point。掛載點,也就是本身找一個或建立一個dir(目錄),而後把文件系統掛到這個目錄上,而後就能夠從這個目錄中訪問要掛載文件系統。

對於swap分區,這個域應該填寫:none,表示沒有掛載點。


三、type。這裏用來指定文件系統的類型。

下面的文件系統都是目前Linux所能支持的:

ext三、 ext二、extswap

nfs、hpfs、ncpfs、ntfs、affs

umsdos、proc、reiserfs、squashfs、ufs。

adfs、befs、cifs、iso9660

kafs、minix、msdos、vfat

四、options。這裏用來填寫設置選項,各個選項用逗號隔開。

因爲選項很是多,而這裏篇幅有限,因此再也不做詳細介紹,如需瞭解,請用 命令 man mount 來查看。但在這裏有個很是重要的關鍵字須要瞭解一下:defaults,它表明包含了選項rw,suid,dev,exec,auto,nouser和 async。


五、dump。此處爲1的話,表示要將整個裏的內容備份;爲0的話,表示不備份。

如今不多用到dump這個工具,在這裏通常選0。


六、pass。這裏用來指定如何使用fsck來檢查硬盤。

若是這裏填0,則不檢查;掛載點爲 / 的(即根分區),必須在這裏填寫1,其餘的都不能填寫1。若是有分區填寫大於1的話,則在檢查完根分區後,接着按填寫的數字從小到大依次檢查下去。同數字 的同時檢查。好比第一和第二個分區填寫2,第三和第四個分區填寫3,則系統在檢查完根分區後,接着同時檢查第一和第二個分區,而後再同時檢查第三和第四個分區。


fstab參數詳解

可能玩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。

http://lspgyy.blog.51cto.com/5264172/1297432

相關文章
相關標籤/搜索