Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1336710
  • 博文数量: 177
  • 博客积分: 3640
  • 博客等级: 中校
  • 技术积分: 1778
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-27 16:51
文章分类

全部博文(177)

文章存档

2014年(1)

2013年(10)

2012年(3)

2011年(163)

分类: LINUX

2011-05-10 18:51:37

開機掛載 /etc/fstab 及 /etc/mtab
剛剛上面說了許多,那麼可不可以在開機的時候就將我要的磁區都掛好呢?!這樣我就不需要每次進入 Linux 系統都還要在掛載一次呀!當然可以囉!那就直接到 /etc/fstab裡面去修修就行囉!不過,在開始說明前,這裡要先跟大家說一說系統掛載的一些限制:
  • 根目錄 / 是必須掛載的﹐而且一定要先於其它 mount point 被掛載進來。
  • 其它 mount point 必須為已建立的目錄﹐可任意指定﹐但一定要遵守必須的系統目錄架構原則
  • 所有 mount point 在同一時間之內﹐只能掛載一次。
  • 所有 partition 在同一時間之內﹐只能掛載一次。
  • 如若進行卸載﹐您必須先將工作目錄移到 mount point(及其子目錄) 之外。
好了,那麼我們進入 /etc/fstab 看一看吧:
[root@linux ~]# cat /etc/fstab # Device Mount point filesystem parameters dump fsckLABEL=/ / ext3 defaults 1 1 /dev/hda5 /home ext3 defaults 1 2 /dev/hda3 swap swap defaults 0 0 /dev/hdc /media/cdrom auto pamconsole,exec,noauto,managed 0 0 /dev/devpts /dev/pts devpts gid=5,mode=620 0 0 /dev/shm /dev/shm tmpfs defaults 0 0 /dev/proc /proc proc defaults 0 0 /dev/sys /sys sysfs defaults 0 0
其實這個 /etc/fstab 就是將我們使用 來掛載一個裝置到系統的某個掛載點, 所需要下達的指令內容,將這些內容通通寫到 /etc/fstab 裡面去,而讓系統一開機就主動掛載囉~ 那麼 mount 下達指令時,需要哪些參數?不就是『裝置代號、掛載點、檔案系統類別、參數』等等, 而我們的 /etc/fstab 則加入了兩項額外的功能,分別是備份指令 dump 的執行與否, 與是否開機進行 掃瞄磁碟呢~

我這個人比較龜毛一點,因為某些 distributions 的 /etc/fstab 檔案排列方式蠻醜的, 雖然每一欄之間只要以空白字元分開即可,但就是覺得醜,所以通常鳥哥就會自己排列整齊, 並加上註解符號,就是 # 字號,來幫我記憶這些資訊!由上面的說明,我們知道 /etc/fstab 內總共有六欄,分別來談一談每一欄的內容吧!
  1. 磁碟裝置代號或該裝置的 Label
    這個就是裝置代號啦!將您需要的裝置代號給他填上去吧!! 不過,還記得我們的 filesystem 可以擁有標頭名稱吧 (Label)? 沒錯,我們也可以利用 Label 來掛載檔案系統喔!例如上表當中的特殊字體的第一行, 我的根目錄 (/) 就是以 Label 名稱為 / 的磁碟分割槽來掛載的啊! 利用 label 掛載時,您必須要知道您的磁碟內的 label 名稱,可以利用 來讀取, 也可以利用 來更改標頭名稱啊。 在知道了 label 名稱後,最後就可以利用 LABEL=(your label name) 來設定您的裝置囉~
    Tips:
    記得有一次有個網友寫信給鳥哥,他說,依照 的設定去練習修改自己的 partition 的 Label name 之後,卻發現,再也無法順利開機成功! 後來才發現,原來他的 /etc/fstab 就是以 Label name 去掛載的。但是因為在練習的時候, 將 Label name 改名字過了,導致無法在開機的過程當中順利搜尋到~所以啦, 各位親愛的朋友,這裡再次的強調,利用裝置名稱 (ex> /dev/hda1) 來掛載 partition 時, 雖然是被固定死的,所以您的硬碟不可以隨意插在任意的插槽,不過他還是有好處的。 而使用 Label name 來掛載,雖然就沒有插槽方面的問題,不過,您就得要隨時注意您的 Label name 喔!尤其是新增硬碟的時候! ^_^
    /etc/fstab <wbr>与 <wbr>/etc/mtab
  2. 掛載點 (mount point):
    就是掛載點啊!掛載點是什麼?一定是目錄啊~要知道啊!!!

  3. 磁碟分割槽的檔案系統
    就如同我們在這個章節一開始就談到的, Linux 在傳統上面,使用的是 ext2/ext3 等檔案系統, 目前則加入了很多日誌式檔案系統,例如 reiserfs 及 XFS 等檔案系統的支援。 此外,存在已久的 Windows vfat, msdos 及 iso9660 的光碟檔案系統, 還有網路檔案系統如 nfs, smbfs 等等,都可以被支援。這個欄位就是寫這些檔案系統的地方啊!

  4. 檔案系統參數
    每個檔案系統還有很多參數可以加入的,例如中文編碼的 iocharset=big5,codepage=950之類的,當然還有很多常見的參數, 雖然之前在 mount 已經提過一次,這裡我們利用表格的方式再次的說明一下:
    參數內容意義
    async/sync
    非同步/同步
    是否允許磁碟與記憶體中的資料以同步寫入的動作?使用 async 這個非同步寫入的方式會比較快速一些。
    auto/noauto
    自動/非自動
    在開機的時候是否自動掛載該磁區?既然設定在這個區域內了, 當然希望開機的時候自動掛載囉!
    rw/ro
    可讀寫/唯讀
    讓該磁區以可讀寫或者是唯讀的型態掛載上來,如果是 vfat 之類的非 Linux 傳統磁區,您不想讓 Linux 變更的話,那麼使用 ro 也不錯!能夠提供有效的保護呢!
    exec/noexec
    可執行/不可執行
    限制在此檔案系統內是否可以進行『執行』的工作?如果是純粹用來儲存資料的, 那麼可以設定為 noexec 會比較安全,相對的,會比較麻煩!
    user/nouser
    允許/不允許使用者掛載
    是否允許使用者使用 mount 指令來掛載呢?一般而言,我們當然不希望一般身份的 user 能使用 mount 囉,因為太不安全了,因此這裡應該要設定為 nouser 囉!
    suid/nosuid
    具有/不具有 suid 權限
    該檔案系統是否允許 SUID 的存在?一般而言,如果不是 Linux 系統的磁區,而是一般資料的 partition ,那麼設定為 nosuid 確實比較安全一些!畢竟有 SUID 是蠻可怕的一件事。
    usrquota注意名稱是『 usrquota』不要拼錯了!這個是在啟動 filesystem 支援模式,更多資料我們在第四篇再談。
    grpquota注意名稱是『grpquota』,啟動 filesystem 對群組磁碟配額模式的支援。
    defaults同時具有 rw, suid, dev, exec, auto, nouser, async等參數。 基本上,預設情況使用 defaults 設定即可!

  5. 能否被 dump 備份指令作用
    在 Linux 當中,可以利用 dump 這個指令來進行系統的備份的。而 dump 指令則會針對 /etc/fstab 的設定值,去選擇是否要將該 partition 進行備份的動作呢! 0 代表不要做 dump 備份, 1 代表要進行 dump 的動作。 2 也代表要做 dump 備份動作, 不過,該 partition 重要度比 1 小。

  6. 是否以 fsck 檢驗磁區
    開機的過程中,系統預設會以 fsck 檢驗我們的 partition 內的 filesystem 是否完整 (clean)。 不過,某些 filesystem 是不需要檢驗的,例如虛擬記憶體 swap ,或者是特殊檔案系統, 例如 /proc 與 /sys 等等。所以,在這個欄位中,我們可以設定是否要以 fsck 檢驗該 filesystem 喔。 0 是不要檢驗, 1 是要檢驗, 2 也是要檢驗,不過 1 會比較早被檢驗啦! 一般來說,根目錄設定為 1 ,其他的要檢驗的 filesystem 都設定為 2 就好了。

所以說,如果我想要將我們剛剛練習時,建立的 /dev/hdb5 這個 ext3 的 filesystem 掛載到 /mnt/hdb5 時, 並且在開機的時候就已經自動的掛載好,那麼就可以將底下這一行寫入到 /etc/fstab 當中了:
/dev/hdb5 /mnt/hdb5 ext3 defaults 2 2
很簡單吧!所以啦,以後您自己建立的磁碟檔案系統想在開機的時候掛載好時,就在 /etc/fstab 加入吧! 此外,這個 /etc/fstab 還有什麼特殊功能呢?還記得使用  -a 時,我們提到的該參數參考檔案吧?!沒錯啊!就是這個 /etc/fstab 啊!而且,一般來說, 當我們編輯 /etc/fstab 後,為了避免可能的錯誤,通常就會以 mount -a 這個指令來測試看看呢!這是很重要的一個測試動作喔!

另外,您也必須要瞭解到,除了這些磁碟檔案格式之外, 其實在系統裡面還有一些特殊的格式可以掛載來幫助系統的運作的! 例如上表當中非特殊字體的那幾行字!

而 /etc/fstab 是開機時的設定檔,不過,實際 filesystem 的掛載是記錄到 /etc/mtab 與 /proc/mounts 這兩個檔案當中的。每次我們在更動 filesystem 的掛載時,也會同時更動這兩個檔案喔!但是,萬一發生您在 /etc/fstab 輸入的資料錯誤,導致無法順利開機成功,而進入單人維護模式當中,那時候的 / 可是 read only 的狀態,當然您就無法修改 /etc/fstab ,也無法更新 /etc/mtab 囉~那怎麼辦? 沒關係,可以利用底下這一招:
[root@linux ~]# mount -n -o remount,rw /
加上 -n 則不更新 /etc/mtab ,加上 -o 則提供額外的參數設定。 利用這一動作,嘿嘿!您的 / 就可以讀寫,那麼自然就能夠更新檔案內容囉~
阅读(3444) | 评论(0) | 转发(0) |
0

上一篇:linux终端快捷键

下一篇:/etc/fstab

给主人留下些什么吧!~~