RHEL中可能有成千上萬的檔案必須要存儲在磁盤中;對系統管理者而言,如何管理好磁盤與檔案系統,也是一門必備的學問。本章我們一起來學習RHEL的磁盤與檔案系統必備的知識與技術。
2.1 磁盤的管理
2.1.1 動态磁盤參數
每一個磁盤都會提供一些參數,通過磁盤的參數,可以修改磁盤的結構與功能。檢視磁盤的參數,可以使用hdparm :
hdparm device ...
下面我們來查詢/dev/hda磁盤參數:
hdparm除了可以用來檢視磁盤的參數外,還可以用來設定磁盤的參數:
hdparm [options...] device
常用的options如下表所示: 注:下表在最後附件中有下載下傳!
下面使用hdparm設定/dev/hda DMA狀态的例子:
① /dev/hda開啟了DMA功能。
② 使用hdparm關閉/dev/hda的DMA。
③ 再次檢視是否關閉了/dev/hda的DMA。
2.2 管理分區
在RHEL系統中,有幾項工具來管理磁盤中的分區。
fdisk : 這是最廣為人知的分區管理工具。fdisk使用交談的方式,來進
行分區管理的工作。
sfdisk : 其實是fdisk姊妹産品,隻是fdisk是以交談的方式管理分區
的;而sfdisk則是以指令列的參數方式來管理我們的分區。
parted : 這是GNU計劃中分區編輯工具。與fdisk和sfdisk相比,parte
-d還允許調整分區的大小。
下面我僅以常用的fdisk作為分區管理工具來學習。
1、fdisk的文法:
fdisk簡單文法為:
fdisk device
上面的device為要管理分區的硬碟裝置檔案名。
fdisk是一個互動式(Interactive)的分區管理工具,也就是在執行fdisk指令後,必須輸入fdisk所提供的指令,fdisk才會執行指定的動作,fdisk執行後可使用的指令如下表所示: 注:下表在最後附件中有下載下傳
下面來看看執行fdisk的例子:
① 執行fdisk時,沒有指定參數,則顯示其簡短的使用說明。
① 執行fdisk /dev/hda 時,以便于利用fdisk 管理/dev/hda。
② 執行fdisk期間,若不清楚該下一步輸入什麼指令,則輸入m,就會顯
示fdisk的指令清單。
③ 輸入q指令,則為退出且不儲存。
2、檢視分區
檢視某一個硬碟的分區資訊,用兩種方式:
⑴ 執行fdisk後,再輸入p指令。
⑵ 在shell中直接執行fdisk -l 指令。
① 執行fdisk查詢。
② 使用p指令,顯示/dev/hda磁盤的分區表。
① 直接使用fdisk查詢/dev/hda磁盤的分區表。
當檢視分區資料時,fdisk會先顯示下面的資訊,此為該磁盤的基本資訊。
① 硬碟的裝置名稱。
② 硬碟的實際大小。
③ 該硬碟有多少個磁面。
④ 該硬碟每個磁道有多少個扇區。
⑤ 磁柱的數量。
⑥ 每一個磁柱的大小,也可以視為分區資料表中每一個機關的大小。
3、添加分區
若要在一個磁盤上生成一個新的磁盤分區,可以在fdisk中使用n指令來添加磁盤分區。此時要提供下面兩項資訊。
⑴ 分區開始的磁柱編号。
⑵ 分區擁有的磁柱數量。
下面來用fdisk指令添加一個100MB的分區的例子:
① 執行fdisk /dev/hda,便于fdisk管理/dev/hda。
② 查詢目前有哪些分區。
① 使用n指令,添加一個擴充分區。
② 再輸入e,即為extended。
③ 輸入該分區開始的磁柱編号。此處沒有指定開始磁柱編号,而是回
車,意即為第一個可用的磁柱。也就是預設值1491。
④ 輸入該分區的結束磁柱編号,此處也是回車,也就是預設值5221。
① 使用p指令,顯示/dev/hda磁盤的分區表。
② 驗證了此分區是擴充分區。
① 使用n指令,在擴充分區中建立一個邏輯分區。
② 輸入該分區開始的磁柱編号。此處沒有指定開始磁柱編号,而是回
車,意即為第一個可用的磁柱。也就是預設值1504。
③ 輸入該分區的結束磁柱編号,此處輸入:+100M後,再回車。
分區的大小可以直接指定:
⑴ +size: 直接指定分區使用size個磁柱。
⑵ +sizek: 直接指定分區為size kB。
⑶ +sizeM: 直接指定分區為size MB。
注:若直接指定分區大小,一定要記得加上“+”這
個符号,否則fdisk将自動視為磁柱編号。若沒有指定分區的大小,fdisk也會自動以可用磁柱的最後一個作為預設值。
④ 使用p指令,顯示/dev/hda磁盤的分區表。
⑥ 驗證了是否生成了正确的分區。
思考:如何添加一個分區為100MB,結果為⑤所示的分區。
① 因為我們修改了分區資料表的内容,則必須使用w指令來将修改的數
據寫入到磁盤中。
② 此處提示我們要重新啟動系統,讓剛剛生成的分區生效。
4、删除分區
fdisk中的d指令來删除分區,在此之前一定要确認該分區沒有重要資料,否則分區一經删除,該分區的上的檔案可能就無法搶救。
下面來使用fdisk指令删除分區:
① 裝置名為/dev/hda6 。
① 輸入d指令,告之fdisk要删除某一個分區。
② 輸入要删除的分區編号,此處僅需輸入号碼即可。
③ 使用p指令,顯示/dev/hda磁盤的分區表。
④ 驗證是否真的删除了/dev/hda6 。
① 最後當然是要儲存且重新開機RHEL5,以便更新分區資料表。
5、修改分區系統辨別符
不同的分區可以存儲不同的作業系統的檔案資料,是以,每一個分區還得記錄這個分區上存儲的是哪一種檔案系統(File System)。這個用來記錄分區用途的資訊,我們稱之為分區系統辨別符(Partition systemId)。目前的分區系統辨別符是一個16進制的數值,如果想要知道fdisk工具支援哪些分區辨別符,可以在fdisk中使用l指令,列出目前使用的fdisk支援的所有分區辨別符清單。
初看上面這麼多系統辨別符,其實常用的沒有幾個。如下表所示:
修改分區的系統辨別符,先執行fdisk後,再輸入t指令進行修改。
下面我們來看看如何修改分區系統辨別符:
① 此處的/dev/hda5這個分區的系統辨別符是83,系統是Linux 。
① 執行t指令。
② 指定要修改的分區編号。
③ 直接指定新的系統辨別符是82。
④ fdisk提示新的辨別符資料已經修改為82(Linux swap/Solaris)。
⑤ 驗證系統辨別符确實變成了82。
⑥ 最後儲存且重新開機RHEL5後,則生效。
2.3 Linux常見的檔案系統
目前的Linux核心支援了數十種檔案系統,分類為:
⑴ Linux 專用檔案系統
針對RHEL執行所需的環境量身打造的,歸類為“Linux 專用檔案系統”。
⑵ 支援其他平台的檔案系統
為了讓RHEL可以直接調用其他系統的檔案,RHEL也提供一些其他平台的檔案系統,如:msdos、vfat、ntfs、udf等。
⑶ 系統運作類的檔案系統
為了滿足RHEL的特殊功能而設計的,此類稱之為“系統運作類的檔案系統”。常見的有:procfs、devfs、tmpfs等。
⑷ 網絡檔案系統
通過網絡調用另外一台PC的磁盤空間的檔案系統,統稱為網絡檔案系統。常見的有:NTFS、smbfs、AFS等。
2.4 制作檔案系統
若磁盤沒有提供檔案系統,則RHEL就無法通過檔案系統使用磁盤空間。是以,要使用磁盤空間,就必須在該磁盤空間上建立檔案系統(Make File System)。
在制作檔案系統過程中,會破壞原先磁盤中的檔案系統資料,将使原先檔案系統中的檔案全部消失。故,在制作檔案系統之前,确認磁盤空間中沒有重要的資料。否則,損失就大了,請務必特别小心。
制作檔案系統前必須準備下面兩項内容:
一個磁盤空間:制作檔案系統是以磁盤空間為機關的,必須要準備好一個磁盤空間,才能在上面制作檔案系統。
決定要制作成為何種檔案系統:必須在開始制作檔案系統前,先決定好要在該磁盤上建立何種檔案系統。
在RHEL中制作檔案系統,使用mkfs指令,文法如下:
mkfs [-t fstype] [device] [blocks]
下面我們來使用mkfs制作/dev/hda5的檔案系統:
① 用mkfs将/dev/hda5制作檔案系統,此處沒有加任何參數,故mkfs采用預設值ext2檔案系統且為hda5所有空間。
① 加了-t msdos參數,在/dev/hda5上建立msdos檔案系統了。
2.5 挂載檔案系統
在RHEL中,整個系統隻會有一個根目錄,不允許有第二個以外的根目錄。故要在RHEL系統中使用某個磁盤空間的根目錄與其中所有檔案,就必須将該檔案系統挂載到檔案系統的某一個目錄下。
挂載檔案系統的指令是 mount,文法如下:
mount [-a]
或者
mount [-t fstype] [-o mount_options] [-device] [mount_pointer]
執行mount時,沒有指定參數,則表示要檢視目前的挂載資料表。mount常用參數見下表:
好啦,我們來看看如何使用mount指令:
① 建立/mnt/tmp/目錄,作為挂載點。
② 檢視/mnt/tmp/的内容,目前為空的,表示沒有任何檔案資料。
③ 使用mount指令,将/dev/hda5分區的檔案系統挂載到/mnt/tmp/ 。
④ 再次檢視/mnt/tmp/,結果顯示有一個lost+found的目錄,即存放在/dev/hda5分區中的檔案系統。
2.5.1 挂載資料表
如何才能知道RHEL共挂載了哪些檔案系統?其實非常簡單,直接使用mount指令,不加任何參數即可。
由上述資料,可知是以下列的格式顯示檔案系統的挂載資訊。
device on mount_pointer type fstype (mount_options)
其中的每一個字段說明如下:
⑴ device : 檔案系統的裝置檔案名。若device顯示為
none : 則表示不是實體的磁盤空間。
⑵ mount_pointer : 挂載點的路徑名稱。
⑶ fstype : 檔案系統的類型。
⑷ mount_options : 挂載時的參數。
除此之外,每挂載一個檔案系統的時候,RHEL會自動将挂載的資訊加入到/etc/mtab檔案中;而解除安裝一個檔案系統時,RHEL也會自動删除/etc/mtab中相關的記錄。是以,另一種檢視目前檔案系統挂載資訊的方法,就是直接讀取/etc/mtab檔案。
不過,/etc/mtab會以/etc/fstab檔案的格式顯示目前的挂載資訊。
2.5.2 挂載參數
使用mount挂載檔案系統時,可以指定挂載的參數來修改檔案系統的功能。挂載參數分為:共享挂載參數和檔案系統特定的挂載參數。
1、共享挂載參數
共享挂載參數可以用在任何檔案系統上,而且大部分是兩兩一組,同一組的參數通常是互斥的;也就是說如果你使用了其中一個,就不能使用同一組的另外一個參數。例如:ro/rw就是一組共享挂載參數,若使用ro,就不能使用rw 。
另外,有一個名為defaults的共享挂載參數,即使用mount時沒有加任何參數,defaults這個挂載參數等于rw、suid、dev、exec、auto、nouser、async幾個參數的組合。
2、檔案系統特定挂載參數
它僅适用于某檔案系統,我們稱之為檔案系統特定挂載參數。
3、指定與修改挂載參數
改變檔案系統參數有兩種方式:
⑴ 執行mount時,直接指定 -o mount_options參數。
⑵ 使用mount -o remount,mount_options修改挂載參數。
方法⑴:僅适用新挂載檔案系統時,若已經挂載,則先解除安裝,再使用方法⑴重新挂載一次;
方法⑵:不需要解除安裝,直接修改檔案系統的挂載參數。
下面來舉一個例子,修改挂載參數:
① 使用mount指令,直接把/dev/hda5挂載到/mnt/tmp/目錄中,因未指定參數,故使用defaults作為挂載參數。由于defaults包含rw,是以/dev/hda5應為可讀可寫的。
② 驗證/dev/hda5是否為rw的狀态。顯然是。
③ 當使用touch /mnt/tmp/file1時,沒有報錯資訊,說明已經順利建立了/mnt/tmp/file1 。
④ 解除安裝/dev/hda5檔案系統後,再使用mount挂載/dev/hda5到/mnt/tmp/中。此時參數為ro,是以/dev/hda5的讀寫狀态是隻讀取的。
⑤ 果然,挂載資料表中顯示的的确是ro
⑥ 試着生成/mnt/tmp/file2檔案,RHEL告訴我們這是一個隻讀檔案系統,當然無法生成/mnt/tmp/file2檔案了。
⑦ 那我們就用mount -o remount 的技巧,在不解除安裝/dev/hda5的情形下,直接修改/dev/hda5的挂載參數再度成為可讀可寫。
⑧ 修改後,/dev/hda5的挂載參數就變成了rw
⑨ 當然,/mnt/tmp/file3就可以被生成出來了。
<a href="http://down.51cto.com/data/2352404" target="_blank">附件:http://down.51cto.com/data/2352404</a>