鳥哥的Linux私房菜 基礎學習篇讀書筆記(10):Linux磁盤與文件系統管理(3)

這篇文章主要總結在Linux操作系統中管理我們的硬盤和文件系統所需要用到的命令。當我們在系統中增加了一塊硬盤,我們需要經歷哪些步驟才能真正使用這塊硬盤呢?大致可以分爲以下步驟:

(1)對磁盤進行分區,新建可以使用的分區;

(2)對分區進行格式化,將分區格式化爲我們操作系統能夠使用的文件系統;

(3)對新建好的文件系統進行檢驗;

(4)創建掛載點,將該文件系統掛載上來。

接下來就介紹磁盤分區,格式化,檢驗和掛載的相關命令。

磁盤分區通過 fdisk命令進行,fdisk命令的基本使用方法 爲“fdisk [-l]  設備名”。進入fdisk命令後,具體如何操作,可以通過按下m查看幫助。比較重要的幾個命令爲: d : 刪除一個分區; n: 新增一個分區; p:在屏幕上顯示分區表 ; q,離開fdisk程序,不保存任何設置;w:將所做的設置寫入分區表。當然,也可以通過 fdisk -l 命令直接查看當前主機的硬盤信息和分區情況。如圖所示:


使用fdisk命令還有一些注意事項,當我們使用w命令將設置寫入分區表後,可能會出現警告信息,讓我們重新啓動以更新分區表信息,這是因爲我們的磁盤還處於使用狀態,無法卸載,因此內核無法重新取得分區表信息。除了重啓之外,還可以使用GNU推出的partprobe工具程序強制內核重新查找分區表。另外fdisk命令對於2TB以上的磁盤也無法處理,此時就需要parted命令來進行磁盤分區了。

格式化的命令是通過mkfs(make file system)命令進行的。它的使用方法爲 “mkfs [-t 文件系統格式]  設備文件名”。mkfs是一個綜合命令,當我們使用 “mkfs -t ext3 ...”命令時,系統會調用mkfs.ext3命令來進行相應的格式化。我們可以在輸入mkfs命令後連續按下兩個tab鍵,就可以查看mkfs支持的文件格式了。以下是我的的系統上mkfs支持的文件系統格式:


其中vfat格式是可以在Windows和Linux中同時被支持的,因此需要在Windows和Linux中共享的U盤可以使用這種格式。在使用mkfs命令時,除了指定文件系統的類型,還可以指定文件系統的卷標,block大小,inode大小等等。mkfs是調用mke2fs這個公用程序來設置這些參數,mke2fs的使用方法爲“mke2fs  [-b blocksize]  [-i inodesize]  [-L 卷標]  [-cj]  設備”。 

fsck命令是用來檢查和修正文件系統錯誤的命令。fsck命令只有身爲root用戶而且文件系統有問題情況下才使用這個命令,否則正常情況下使用這個命令,可能會對系統造成損害,當然剛剛格式化成功的分區也可以通過fsck命令來進行檢測,此時被檢測的分區務必不能掛在到系統上,也就是說文件系統必須處於卸載狀態。當使用fsck命令檢測磁盤時,有問題的數據都會被放置到到該文件系統的lost+found這個目錄下。每個文件系統最頂層的目錄(就是掛在點那個目錄下面)都會存在一個lost+found目錄。除了fsck命令用來檢測文件系統是否出過錯,還可以使用badlocks命令來檢查硬盤扇區是否有壞軌。

接下來是磁盤掛載與卸載,關於掛載的概念已經講了很多遍了。掛載點一定是目錄,該目錄就是進入磁盤分區的入口,訪問該目錄就能訪問到該文件系統的數據。Linux中使用mount命令進行文件系統的掛載,mount命令是個很有用的命令,可以掛載 ext3/vfat/nfs等文件系統。mount命令的使用方法如下:

          mount -a: 依照配置文件 /etc/fstab的數據將所有未掛載的磁盤都掛載上來;

          mount -l: 僅僅輸入mount命令會顯示出當前系統的掛載信息,加上 -l 參數可以增加Label名稱;

          mount [-t 文件系統] [-L Label名] [-o 額外選項] [-n] 設備文件名 掛載點 : 將某個設備按指定方式進行掛載。

mount命令使用起來非常簡單,在實際掛載的時候甚至不需要通過 -t 參數來指定文件系統的類型,因爲文件系統幾乎都有super block,掛載的時候Linux會自動分析super block並搭配Linux自己的驅動程序去測試掛載,如果測試成功了,就立即使用該類型的文件系統去掛載設備。所以當我們在電腦中插入U盤了,如果想使用該U盤,也需要使用mount命令將U盤進行掛載。mount命令還可以通過 -o remount 參數進行重新掛載,當我們進入單用戶維護模式時,由於根目錄常會被系統掛載爲只讀,這個時候就可以通過這個參數來重新掛載了。

除了掛載設備,通過mount --bind 命令還可以將某個目錄掛載到另外一個目錄上面去,以後訪問掛載點就相當於訪問該目錄,當然這種效果也可以通過符號連接實現。以下是使用mount 掛載一個目錄的舉例:


掛載之後可以使用umount命令進行卸載,umount的使用方法爲 “umount [-fn]  設備文件名或掛載點”。可以使用設備文件名或者掛載點來進行卸載,卸載之後可以使用df命令或mount -l命令來查看該文件系統還是否存在於目錄樹中,但是如果掛載的是目錄而不是磁盤設備,則就只能通過掛載點來卸載。而且卸載的時候請注意,需要將工作目錄換到掛載點(及其子目錄)之外的目錄裏去。

接下來介紹一些修改磁盤參數的命令。之前講過,在Linux下所有設備都是用文件來表示,那如何通過文件來表示一個設備呢,就是通過文件的major和minor數值來代替。major爲主設備碼,minor爲次設備碼,內核認識設備數據就是通過這兩個數值來決定的。在Linux內核升級爲2.6之後,硬件的設備文件名可以自動被系統實時產生了,不需要我們手動創建,但是還是瞭解一下如何手動創建設備文件,以備不時之需。創建設備文件是通過mknod命令進行,該命令的使用方法爲“mknod 設備文件名 [bcp] [Major] [Minor]”。

每個文件系統有一個文件系統卷標(Label),該卷標值可以在文件系統格式化(mkfs)時指定,也可以使用e2label命令來修改。e2label的使用方法爲:“e2label  設備名稱  新的Label名稱“。 Linux文件系統的卷標名類似於Window裏每個盤都有的一個名字(C盤/D盤等)。掛載的時候我們也可以使用文件系統的卷標名來進行掛載,而在CentOS中,/etc/fstab文件的設置都是默認用Label name。使用卷標名有什麼好處呢?無論你的磁盤設備文件名怎麼變,系統是通過Label name來識別你的硬盤,因此無論你的硬盤插到哪個接口都不會有影響。

還有tune2fs命令,tune2fs命令功能比較廣泛,可以自行man以下。hdparm命令對於IDE接口的硬盤而言,可以設置很多高級參數,但是對於SATA接口的硬盤,就沒有多大用處了,唯一可以做的就是通過 “hdparm -t 設備名稱” 的方式來測試磁盤的性能,但是測試結果不是很準確,只能作爲一個參考。

手動使用mount命令來掛載不是很方便,可以讓系統在開機的時候自動將文件系統掛載好,主要通過修改/etc/fstab文件來設置開機自動掛載。我們每次使用mount命令掛載文件系統時,其實就是把相應的參數寫到/etc/fstab這個文件裏的。該文件共有六個字段,通過名字就能理解每個字段的意義的。其中Device字段是代表磁盤設備的文件名或設備的Label name,而且默認是採用Label name。第四列的parameters代表的是文件系統的參數,可以設置非常多的參數,例如同步還是異步,是否允許用戶掛載等等。dump列是指該文件系統能否被dump命令進行備份。0是不備份,1是每天都dump備份,2代表其它不定日期的dump備份。fsck列代表是否用fsck程序檢測該文件系統,0代表不檢測,1代表檢測,2也代表檢測,但是比1檢測的晚,因此將根目錄所在的文件系統設置爲1,其它的設置爲2即可。當我們修改/etc/fstab文件後,爲了防止語法錯誤而導致我們無法開機,在修改後一定要使用df命令或mount -l命令來測試是否能夠得到正確地掛在信息。

在Linux中,對於一個鏡像文件,我們可以不用把它刻錄成光盤,就能夠訪問到該文件裏的數據。我們可以直接使用特殊特備loop方式掛載,mount -o loop的方式將一個鏡像文件進行掛載,然後訪問該掛載點就能訪問到鏡像文件裏的數據。真的非常方便,想想在Windows中,我們得通過第三方軟件才能打開鏡像文件。除了鏡像文件,對於一個大文件,我們也可以使用這種方式來掛載,這就相當於我們不需要修改分區表就能製造出我們想要的分區了。以下是我使用 mount -o loop 方式將CentOS安裝鏡像文件進行掛載:


最後介紹一下內存交換空間(swap)的構建。在安裝CentOS時,就說明了需要構建swap(內存交換空間)。當主機的物理內存不足時,內核就會把物理內存中暫時用不到的程序和數據挪到swap中,從而空出物理內存來加載需要執行的程序。因此swap的功能就是在物理內存不足的情況下起到擴展內存的作用。如果在安裝Linux時忘記了構建swap,可以使用如下方式來創建swap:首先依然是使用fsck命令分出一個分區來給系統作爲swap,然後使用mkswap命令來將該分區格式化爲swap格式,然後用“swapon 設備文件名”的方式來將該swap設備啓動。可以使用free這個內存查看命令觀察swap是否被正確加載。除了可以把一個分區構建爲swap,還可以使用一個大文件來構造swap,方法是類似的。而且使用文件構建swap時,還可以使用swapoff來釋放 swap file。


本章Linux命令總結:

fdisk,partprobe,mkfs,mke2fs,fsck,badlocks,mount,umount,mknod,e2label,tune2fs,hdparm,mkswap,swapon,swapoff,free。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章