我們的文章 “學(xué)習 Linux,101:硬盤(pán)布局” 介紹了硬盤(pán)驅動(dòng)器布局、分區、以及使用 fdisk 命令來(lái)查看分區信息的基本知識。您學(xué)習了主分區、擴展分區 和邏輯分區 等分區的相關(guān)知識,了解到 Linux 文件系統包含一些文件,它們存儲在磁盤(pán)上或目錄 中的塊存儲設備 上。與許多其他系統一樣,Linux 系統上的目錄也可能包含其他目錄,這些目錄稱(chēng)為子目錄。這篇文章還討論了一些指導您進(jìn)行分區選擇的注意事項。
本文將首先回顧一下塊設備和分區,然后進(jìn)一步展示如何使用 fdisk 命令創(chuàng )建、修改或刪除塊設備上的分區。您還將學(xué)習 mkfs(mkfs 代表 make filesystem) 命令的各種形式;mkfs 命令用于將分區格式化為一種特殊的文件系統類(lèi)型。
注意:除了 LPI 考試要求的工具和文件系統外,您可能會(huì )遇到或需要其他工具和文件系統。其他工具和文件系統 小節提供了其他可用工具的一個(gè)簡(jiǎn)單摘要。
塊設備 是能夠以固定大小塊 格式化的任意存儲設備的抽象層。單獨的塊的訪(fǎng)問(wèn)可以獨立于其他塊的訪(fǎng)問(wèn)。這樣的訪(fǎng)問(wèn)通常稱(chēng)為隨機訪(fǎng)問(wèn)。
隨機可訪(fǎng)問(wèn)的固定大小塊的抽象層允許程序使用這些塊設備,而無(wú)需擔心底層設備是硬盤(pán)驅動(dòng)器、軟盤(pán)、CD、固態(tài)(solid-state)驅動(dòng)器、網(wǎng)絡(luò )驅動(dòng)器,還是某種虛擬設備,比如內存中文件系統。
塊設備示例包括系統上的第一 IDE 硬盤(pán)驅動(dòng)器(/dev/sda 或 /dev/hda)或第二 SCSI、IDE 或 USB 驅動(dòng)器(/dev/sdb)。使用 ls -l 命令來(lái)顯示 /dev 條目。每行輸出的第一個(gè)字符是 b(針對一個(gè)塊設 備,比如軟盤(pán)、CD 驅動(dòng)器、IDE 硬盤(pán)驅動(dòng)器或 SCSI 硬盤(pán)驅動(dòng)器)和 c(針對一個(gè)字符設備,比如 a、終端(tty)或空設備。清單 1 展示了一些示例。
[ian@echidna ~]$ ls -l /dev/loop1 /dev/null /dev/sd[ab] /dev/sr0 /dev/tty0brw-rw----. 1 root disk 7, 1 2010-06-14 07:25 /dev/loop1crw-rw-rw-. 1 root root 1, 3 2010-06-14 07:25 /dev/nullbrw-rw----. 1 root disk 8, 0 2010-06-14 07:25 /dev/sdabrw-rw----. 1 root disk 8, 16 2010-06-14 07:25 /dev/sdbbrw-rw----+ 1 root cdrom 11, 0 2010-06-14 07:25 /dev/sr0crw--w----. 1 root root 4, 0 2010-06-14 07:25 /dev/tty0 |
對于某些塊設備,比如軟盤(pán)和 CD 或 DVD 磁盤(pán),通常使用整個(gè)媒體作為單個(gè)文件系統。但是,對于大型硬盤(pán)驅動(dòng)器,甚至是 USB 存儲器,更常見(jiàn)的用法是將可用空間劃分為幾個(gè)不同的分區。
分區的大小可能不同,不同的分區上可以擁有不同的文件系統,因此一個(gè)磁盤(pán)可以用于多種目的,包括在多個(gè)操作系統之間共享該磁盤(pán)。例如,我使用的測試系統包含幾個(gè)不同的 Linux 發(fā)行版,有時(shí)還包含一個(gè) Windows? 系統,它們都共享一個(gè)或兩個(gè)硬盤(pán)驅動(dòng)器。
文章 “學(xué)習 Linux,101:硬盤(pán)布局” 介紹過(guò),硬盤(pán)驅動(dòng)器擁有一個(gè)幾何參數(geometry),根據術(shù)語(yǔ)柱面、磁頭和扇區定義。即使是現代驅動(dòng)器也使用邏輯塊尋址(LBA),這使得幾何參數變得幾乎無(wú)關(guān)緊要,用于分區目的的基本分配單元通常仍舊是柱面。
分區信息存儲在磁盤(pán)上的分區表 中。分區表列示每個(gè)分區的起始柱面和結束柱面的相關(guān)信息,關(guān)于它的類(lèi)型 的信息,以及它是否標記為可引導。要創(chuàng )建和刪除分區,需要使用一個(gè)專(zhuān)門(mén)設計的程序來(lái)編輯分區表。對于 LPI 考試,您需要了解 fdisk 程序,這也是本文介紹的程序,盡管也可以使用其他幾個(gè)工具。本文末尾將提到其中幾個(gè)工具。
fdisk 命令加上 -l 選項用于列示分區。如果想查看一個(gè)特定驅動(dòng)器上的分區,需要添加一個(gè)設備名稱(chēng),比如 /dev/sda。注意,分區工具需要根訪(fǎng)問(wèn)權限。清單 2 展示了我的系統的兩個(gè)主硬盤(pán)驅動(dòng)器上的分區。
[root@attic4 ~]# fdisk -l /dev/sdaDisk /dev/sda: 640.1 GB, 640135028736 bytes255 heads, 63 sectors/track, 77825 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00064a1a Device Boot Start End Blocks Id System/dev/sda1 1 127 1020096 83 Linux/dev/sda2 128 1402 10241437+ 82 Linux swap / Solaris/dev/sda3 * 46340 56538 81920000 83 Linux/dev/sda4 1403 46339 360956422 5 Extended/dev/sda5 1403 10420 72437053+ 83 Linux/dev/sda6 10421 19344 71681998+ 83 Linux/dev/sda7 19345 28350 72340663+ 83 Linux/dev/sda8 28351 37354 72324598+ 83 Linux/dev/sda9 37355 46339 72171981 83 LinuxPartition table entries are not in disk order[root@echidna ~]# fdisk -l /dev/sdaDisk /dev/sda: 1000.2 GB, 1000204886016 bytes255 heads, 63 sectors/track, 121601 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDisk identifier: 0x000de20f Device Boot Start End Blocks Id System/dev/sda1 * 1 9111 73184076 7 HPFS/NTFS/dev/sda2 9634 9730 779152+ 83 Linux/dev/sda3 9731 116679 859067842+ 5 Extended/dev/sda5 9731 20917 89859546 83 Linux/dev/sda6 20918 39644 150424596 83 Linux/dev/sda7 39645 53905 114551451 83 Linux |
注意:
您剛剛已經(jīng)看到如何使用 fdisk 命令來(lái)顯示分區信息。這個(gè)命令還提供了一個(gè)菜單驅動(dòng)的環(huán)境來(lái)編輯分區表,以便創(chuàng )建或移除分區。
開(kāi)始修改分區之前,需要記住一些重要事項。如果不遵守以下這些原則,就會(huì )出現丟失您的現有數據的風(fēng)險。
fdisk 命令不會(huì )向您的磁盤(pán)提交任何更改,除非您要求它那樣做。其他工具,其中包括 parted 可能會(huì )隨著(zhù)您的操作提交更改。要以交互模式啟動(dòng) fdisk,只需提供一個(gè)磁盤(pán)的名稱(chēng)(比如 /dev/hda 或 /dev/sdb)作為參數。以下示例啟動(dòng)一個(gè) Knoppix 實(shí)時(shí) DVD。您需要根權限,并將看到類(lèi)似于清單 3 的輸出。
knoppix@Microknoppix:~$ su -root@Microknoppix:~# fdisk /dev/sdaThe number of cylinders for this disk is set to 121601.There is nothing wrong with that, but this is larger than 1024,and could in certain setups cause problems with:1) software that runs at boot time (e.g., old versions of LILO)2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK)Command (m for help): |
大多數磁盤(pán)擁有超過(guò) 1024 個(gè)柱面,因此您通常會(huì )看到清單 3 中顯示的警告。類(lèi)型 m 將顯示一個(gè)可用的單字母命令列表,如清單 4 所示。
Command (m for help): mCommand action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only)Command (m for help): |
使用 p 命令來(lái)顯示這個(gè)特定磁盤(pán)上的現有分區,清單 5 顯示輸出。
Command (m for help): pDisk /dev/sda: 1000.2 GB, 1000204886016 bytes255 heads, 63 sectors/track, 121601 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDisk identifier: 0x000de20f Device Boot Start End Blocks Id System/dev/sda1 * 1 9111 73184076 7 HPFS/NTFS/dev/sda2 9634 9730 779152+ 83 Linux/dev/sda3 9731 116679 859067842+ 5 Extended/dev/sda5 9731 20917 89859546 83 Linux/dev/sda6 20918 39644 150424596 83 Linux/dev/sda7 39645 53905 114551451 83 LinuxCommand (m for help): |
這個(gè)特殊磁盤(pán)是一個(gè) 1TB 磁盤(pán),包含一個(gè)略低于 80GB 的 Windows/XP 分區。它是一個(gè)主分區,標記為 bootable,這是 Windows 系統的典型特征。
現在我們使用部分閑置空間來(lái)添加一些分區。
我們首先使用 n 命令來(lái)創(chuàng )建一個(gè)新分區,如清單 6 所示。
Command (m for help): nCommand action l logical (5 or over) p primary partition (1-4)pSelected partition 4First cylinder (9112-121601, default 9112): Using default value 9112Last cylinder, +cylinders or +size{K,M,G} (9112-9633, default 9633): +521Command (m for help): pDisk /dev/sda: 1000.2 GB, 1000204886016 bytes255 heads, 63 sectors/track, 121601 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDisk identifier: 0x000de20f Device Boot Start End Blocks Id System/dev/sda1 * 1 9111 73184076 7 HPFS/NTFS/dev/sda2 9634 9730 779152+ 83 Linux/dev/sda3 9731 116679 859067842+ 5 Extended/dev/sda4 9112 9633 4192965 83 Linux/dev/sda5 9731 20917 89859546 83 Linux/dev/sda6 20918 39644 150424596 83 Linux/dev/sda7 39645 53905 114551451 83 LinuxPartition table entries are not in disk orderCommand (m for help): |
我們采用默認值作為第一個(gè)柱面并指定值 +521 作為柱面的數量。清單 6 顯示,我們的分區大小約為 4GB。由于它是一個(gè)主分區,因此它的編號必須為 1 至 4。順序指定分區編號是個(gè)好主意;否則一些工具會(huì )報告錯誤,fdisk 將警告我們:我們的分區表條目不再按磁盤(pán)順序排列。
還要注意一點(diǎn):我們的新分區類(lèi)型被指定為 83,表明這是一個(gè) Linux 數據分區??梢詫⑦@個(gè)數字視為分區預定用途的操作系統的指示符。分區的最終用途應該匹配這個(gè)設置,但這時(shí)我們的分區甚至還沒(méi)有格式化,更談不上有數據了。我們將首先創(chuàng )建其他分區,然后介紹如何更改分區類(lèi)型。
您可能已經(jīng)注意到,當我們輸入 n 子命令創(chuàng )建一個(gè)新分區時(shí),惟一的選擇是 “l(fā)”(表示邏輯分區)和 “p”(表示主分區)。您只能看到剩余的可能分區類(lèi)型的選項。如果驅動(dòng)器還沒(méi)有擴展分區,您將看到選項 “e”(表示擴展分區)。還要注意,我們的擴展分區(/dev/sda3)為類(lèi)型 5。
現在我們來(lái)定義 40GB Linux 分區和 2000MB FAT32 分區。這次我們只需指定大小 +40G 和 +2000M,分別表示 40GB 和 2000MB。結果如清單 7 所示。
Command (m for help): nFirst cylinder (53906-116679, default 53906): Using default value 53906Last cylinder, +cylinders or +size{K,M,G} (53906-116679, default 116679): +40GCommand (m for help): nFirst cylinder (59129-116679, default 59129): Using default value 59129Last cylinder, +cylinders or +size{K,M,G} (59129-116679, default 116679): +2000MCommand (m for help): pDisk /dev/sda: 1000.2 GB, 1000204886016 bytes255 heads, 63 sectors/track, 121601 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDisk identifier: 0x000de20f Device Boot Start End Blocks Id System/dev/sda1 * 1 9111 73184076 7 HPFS/NTFS/dev/sda2 9634 9730 779152+ 83 Linux/dev/sda3 9731 116679 859067842+ 5 Extended/dev/sda4 9112 9633 4192965 83 Linux/dev/sda5 9731 20917 89859546 83 Linux/dev/sda6 20918 39644 150424596 83 Linux/dev/sda7 39645 53905 114551451 83 Linux/dev/sda8 53906 59128 41953716 83 Linux/dev/sda9 59129 59384 2056288+ 83 LinuxPartition table entries are not in disk orderCommand (m for help): |
在離開(kāi) fdisk 之前,我們將更改 swap 和 vfat 分區的分區類(lèi)型。為此,我們使用 t 子命令來(lái)設置分區類(lèi)型。我們將 /dev/sda4 設置為類(lèi)型 82(Linux 交換分區),將 /dev/sda9 設置為類(lèi)型 9(FAT32)。如果您想查看受支持類(lèi)型的完整列表,請輸入 L,如清單 8 所示。
Command (m for help): tPartition number (1-9): 4Hex code (type L to list codes): 82Changed system type of partition 4 to 82 (Linux swap / Solaris)Command (m for help): tPartition number (1-9): 9Hex code (type L to list codes): bChanged system type of partition 9 to b (W95 FAT32)Command (m for help): |
到目前為止,我們只是對分區表進(jìn)行了內存中編輯。我們可以用 q 命令退出,不保存更改。如果某些分區不能滿(mǎn)足您的要求,您可以使用 d 命令來(lái)刪除一個(gè)或多個(gè)分區,以便重新定義它們。如果您對設置滿(mǎn)意,則可以使用 v 命令來(lái)驗證您的設置,然后使用 w 命令來(lái)寫(xiě)入新的分區表并退出。參見(jiàn)清單 9。如果您再次運行 fdisk -l 命令,您將看到,Linux 現在已能夠識別新分區。與其他操作系統不同的是,Linux 并不總是需要重新啟動(dòng)才能看到更改。舉例來(lái)說(shuō),如果 /dev/hda3 變成 /dev/hda2,則需要重新啟動(dòng),因為原來(lái)的 /dev/hda2 已被刪除。如果需要重新啟動(dòng),fdisk 應該會(huì )告訴您。
Command (m for help): v999521580 unallocated 512-byte sectorsCommand (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.WARNING: If you have created or modified any DOS 6.xpartitions, please see the fdisk manual page for additionalinformation.Syncing disks.root@Microknoppix:~# fdisk -l /dev/sdaDisk /dev/sda: 1000.2 GB, 1000204886016 bytes255 heads, 63 sectors/track, 121601 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDisk identifier: 0x000de20f Device Boot Start End Blocks Id System/dev/sda1 * 1 9111 73184076 7 HPFS/NTFS/dev/sda2 9634 9730 779152+ 83 Linux/dev/sda3 9731 116679 859067842+ 5 Extended/dev/sda4 9112 9633 4192965 82 Linux swap / Solaris/dev/sda5 9731 20917 89859546 83 Linux/dev/sda6 20918 39644 150424596 83 Linux/dev/sda7 39645 53905 114551451 83 Linux/dev/sda8 53906 59128 41953716 83 Linux/dev/sda9 59129 59384 2056288+ b W95 FAT32Partition table entries are not in disk order |
您可能已注意到,我們沒(méi)有更改任意分區上的 bootable 標志?,F在,我們的磁盤(pán)還有 Windows Master Boot Record (MBR),因此將啟動(dòng)標記為 bootable 的第一個(gè)主分區(我們的示例中為 NTFS 分區)。
LILO 和 GRUB 都不使用 bootable 標志。如果其中一個(gè)安裝在 MBR 中,那么它就能夠引導 Windows/XP 分區。您也可以將 LILO 或 GRUB 安裝到您的 /boot 分區(/dev/hda2)中,將該分區標記為 bootable 并移除 /dev/hda1 的 bootable 標志。如果機器今后將恢復為 Windows 專(zhuān)用機器,那么保留原始 MBR 可能會(huì )有用。
如果需要,您還可以使用 fdisk 來(lái)修復分區表中的分區順序。這通常將會(huì )更改分區編號,因此您可能需要完成其他工作才能將您的系統恢復為工作系統。要進(jìn)行這個(gè)更改,使用 f 子命令切換到專(zhuān)家模式,然后使用 r 子命令修復分區順序,如清單 10 所示。如果您只是想看看新的分區順序而不實(shí)際更改,可以使用 q 子命令退出(本例的做法),而不是將更新后的分區表寫(xiě)到磁盤(pán)中。
Command (m for help): pDisk /dev/sda: 1000.2 GB, 1000204886016 bytes255 heads, 63 sectors/track, 121601 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDisk identifier: 0x000de20f Device Boot Start End Blocks Id System/dev/sda1 * 1 9111 73184076 7 HPFS/NTFS/dev/sda2 9634 9730 779152+ 83 Linux/dev/sda3 9731 116679 859067842+ 5 Extended/dev/sda4 9112 9633 4192965 82 Linux swap / Solaris/dev/sda5 9731 20917 89859546 83 Linux/dev/sda6 20918 39644 150424596 83 Linux/dev/sda7 39645 53905 114551451 83 Linux/dev/sda8 53906 59128 41953716 83 Linux/dev/sda9 59129 59384 2056288+ b W95 FAT32Partition table entries are not in disk orderCommand (m for help): xExpert command (m for help): fDone.Expert command (m for help): rCommand (m for help): pDisk /dev/sda: 1000.2 GB, 1000204886016 bytes255 heads, 63 sectors/track, 121601 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDisk identifier: 0x000de20f Device Boot Start End Blocks Id System/dev/sda1 * 1 9111 73184076 7 HPFS/NTFS/dev/sda2 9112 9633 4192965 82 Linux swap / Solaris/dev/sda3 9634 9730 779152+ 83 Linux/dev/sda4 9731 116679 859067842+ 5 Extended/dev/sda5 9731 20917 89859546 83 Linux/dev/sda6 20918 39644 150424596 83 Linux/dev/sda7 39645 53905 114551451 83 Linux/dev/sda8 53906 59128 41953716 83 Linux/dev/sda9 59129 59384 2056288+ b W95 FAT32Command (m for help): q |
您現在已經(jīng)了解了向 Linux 工作站添加分區的一種方法。文章 “學(xué)習 Linux,101:查找并放置文件系統” 介紹了其他可能的方法。
Linux 支持幾種不同的文件系統。每個(gè)文件系統都有自己的優(yōu)缺點(diǎn)和性能特征。文件系統的一個(gè)重要屬性是日志,它允許系統在崩潰后更快地恢復。通常,日志文件系統比非日志文件系統更好。您可能還需要考慮,您選擇的文件系統是否支持 Security Enhanced Linux(或 SELinux)。以下是備考 LPI 考試需要了解的文件系統類(lèi)型的一個(gè)簡(jiǎn)單摘要。參考 參考資料 了解其他背景信息。
ext2 文件系統(也稱(chēng)為第二擴展文件系統)旨在克服早期 Linux 版本中使用的 Minix 文件系統的缺點(diǎn)。多年來(lái),該文件系統一直廣泛應用于 Linux。但 ext2 中沒(méi)有日志,現在基本上已被 ext3 取代。
ext3 文件系統向標準 ext2 文件系統添加了日志功能,因此是一個(gè)非常穩定的文件系統的一個(gè)演化發(fā)展。它在大多數情況下提供合理的性能并且仍舊在改進(jìn)。由于它在可靠的 ext2 文件系統之上添加了日志功能,因此可以將現有 ext2 文件系統轉換為 ext3 文件系統,并且在必要時(shí)還可以轉換回來(lái)。
ReiserFS 是一個(gè)基于 B 狀樹(shù)的文件系統,擁有非常好的總體性能,特別是對于大量小文件。ReiserFS 擁有良好的伸縮性并具有日志功能。但該文件系統不再受到積極開(kāi)發(fā),不支持 SELinux,基本上已被 Reiser4 取代。
XFS 文件系統擁有日志功能,包含一些健壯的特性,并針對可伸縮性進(jìn)行了優(yōu)化。XFS 在 RAM 中強制緩存中轉(in-transit)數據,因此如果使用 XFS,建議采用不間斷電源供應。
交換空間在使用之前必須相應格式化,當它通常不被視為文件系統。
vfat 文件系統(也稱(chēng)為 FAT32)沒(méi)有日志功能,且缺乏完整的 Linux 文件系統實(shí)現所需的許多特性。它可用于在 Windows 和 Linux 系統之間交換數據,因為 Windows 和 Linux 都能讀取它。不要將這個(gè)文件系統用于 Linux,除非要在 Windows 和 Linux 之間共享數據。如果您在一個(gè) vfat 磁盤(pán)上解壓縮一個(gè) Linux 歸檔文件,那么您將丟失權限(比如執行權限),還會(huì )丟失該歸檔文件中可能存儲的符號鏈接。
ext3 文件系統是一個(gè)成熟的文件系統,用作幾個(gè)發(fā)行版上的默認文件系統。ReiserFS 文件系統多年來(lái)一直用作一些發(fā)行版(包括 SUSE)的默認文件系統,但現在用得少了。
Linux 使用 mkfs 命令來(lái)創(chuàng )建文件系統,用 mkswap 命令來(lái)創(chuàng )建交換空間。mkfs 命令實(shí)際上是幾個(gè)特定于文件系統的命令的前端,這些命令包括針對 ext3 的 mkfs.ext3 和針對 ReiserFS 的 mkfs.reiserfs。
您的文件系統上安裝的是什么文件系統支持?使用 ls /sbin/mk* 命令來(lái)找到答案。清單 11 展示了一個(gè)示例。
[ian@echidna ~]$ ls /sbin/mk*/sbin/mkdosfs /sbin/mkfs.ext2 /sbin/mkfs.ntfs/sbin/mke2fs /sbin/mkfs.ext3 /sbin/mkfs.vfat/sbin/mkfs /sbin/mkfs.ext4 /sbin/mkfs.xfs/sbin/mkfs.btrfs /sbin/mkfs.ext4dev /sbin/mkhomedir_helper/sbin/mkfs.cramfs /sbin/mkfs.msdos /sbin/mkswap |
您將注意到一些命令的各種形式。例如,您通常會(huì )發(fā)現,文件 mke2fs、mkfs.ext2 和 mkfs.ext3 是一樣的,文件 mkreiserfs 和 mkfs.reiserfs 也一樣。啟動(dòng)系統可能需要的文件系統將使用多個(gè)名稱(chēng)不同的相同文件。不能用于 Linux 中的 / 文件系統的那些文件系統(比如 vfat 或 msdos)可能會(huì )使用符號鏈接代替。
所有 mkfs 命令都有幾個(gè)公共選項。根據在 -type 選項中指定的文件系統類(lèi)型,特定于正在創(chuàng )建的文件系統類(lèi)型的選項將被傳遞到適當的創(chuàng )建命令。我們的示例使用 mkfs -type,但您也可以直接使用其他類(lèi)型,效果一樣。例如,您可以使用 mkfs -type ext2、mk2fs 或 mkfs.ext2。要獲取一個(gè)特定文件系統的手冊頁(yè),使用適當的 mkfs 命令作為名稱(chēng),比如 man mkfs.ext3。下面的輸出示例中顯示的許多值都能通過(guò) mkfs 的選項控制。
既然我們已經(jīng)創(chuàng )建了所有分區,我們將重新啟動(dòng) Fedora 12 系統(而不是有點(diǎn)緩慢的實(shí)時(shí) Knoppix DVD)并格式化文件系統。當然,如果愿意,您也可以繼續使用 Knoppix 系統。注意,創(chuàng )建文件系統需要根權限。
我們使用 mkfs 命令將 /dev/sda8 分區格式化為 ext3,如清單 12 所示。
[root@echidna ~]# mkfs -t ext3 /dev/sda8mke2fs 1.41.9 (22-Aug-2009)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)2624496 inodes, 10488429 blocks524421 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=4294967296321 block groups32768 blocks per group, 32768 fragments per group8176 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624Writing inode tables: doneCreating journal (32768 blocks): doneWriting superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 20 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override. |
注意,一個(gè)日志與 ext3 一同創(chuàng )建。如果您想向一個(gè)現有 ext2 系統添加一個(gè)日志,使用 tune2fs 命令和 -j 選項。
針對 ext2 和 ext3 文件系統的一個(gè)有用選項是帶有一個(gè)名稱(chēng)的 -L 選項,該選項為分區指定一個(gè)標簽。這個(gè)標簽可用于在掛載文件系統時(shí)代替設備名稱(chēng);它針對可能需要在各種控制文件中反映的更改提供某種級別的隔離。要為一個(gè)現有 ext2 或 ext3 文件系統顯示或設置標簽,使用 e2label 命令。標簽的最大大小限制為 16 個(gè)字符。
最近的一個(gè)進(jìn)展是使用 Universally Unique Identifier(或 UUID)而不是標簽。UUID 是一個(gè) 128 位標識符,通常顯示為 32 位 16 進(jìn)制數字和 4 個(gè)連詞號。大多數 Linux 文件系統在被格式化時(shí)自動(dòng)生成一個(gè) UUID。使用 blkid 命令(不需要根權限)來(lái)查看我們剛剛格式化的分區的 UUID,如清單 13 所示。與標簽相比,UUID 更可能具備惟一性,對 USB 驅動(dòng)器這樣的熱插拔設備尤其有用。
[ian@echidna ~]$ blkid /dev/sda8/dev/sda8: UUID="87040def-920e-4525-9c81-c585ddc46384" SEC_TYPE="ext2" TYPE="ext3" |
現在我們將剛才格式化為 ext3 的分區重新格式化為 XFS 文件系統。我們的 Fedora 12 系統使用 SELinux(Security Enhanced Linux),因此我們應該使用 -i 參數指定比默認值 256 更大的索引節點(diǎn)。推薦值是 512。注意,如果 XFS 格式化程序發(fā)現分區上已有一個(gè)公認的文件系統,那么它將會(huì )通知您。還要注意一點(diǎn),XFS 格式重新指定了 UUID。
[root@echidna ~]# mkfs -t xfs -i size=512 /dev/sda8mkfs.xfs: /dev/sda8 appears to contain an existing filesystem (xfs).mkfs.xfs: Use the -f option to force overwrite.[root@echidna ~]# mkfs -t xfs -f -i size=512 /dev/sda8meta-data=/dev/sda8 isize=512 agcount=4, agsize=2622108 blks = sectsz=512 attr=2data = bsize=4096 blocks=10488429, imaxpct=25 = sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0log =internal log bsize=4096 blocks=5121, version=2 = sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0[root@echidna ~]# blkid /dev/sda8/dev/sda8: UUID="1b6798f2-f07f-4d5e-af06-2470df37ddb3" TYPE="xfs" |
您可以使用帶有一個(gè)名稱(chēng)的 -L 選項來(lái)設置 XFS 系統的標簽。還可以使用 xfs_admin 命令和 -L 選項來(lái)為一個(gè)現有 XFS 文件系統添加一個(gè)標簽。使用帶 -l 選項的 xfs_admin 命令來(lái)顯示一個(gè)標簽。與 ext2、ext3 和 ReiserFS 不同,XFS 標簽的最大長(cháng)度為 12 個(gè)字符。
創(chuàng )建一個(gè) ReiserFS 文件系統
可以使用帶 -t reiserfs 選項的 mkfs 命令或 mkreiserfs 命令創(chuàng )建 ReiserFS 文件系統。ReiserFS 不支持 SELinux,正在被 Resier4 替代。
可以使用 -l 選項(或帶有一個(gè)名稱(chēng)的 --label 選項)為一個(gè) ReiserFS 系統設置標簽??梢允褂?reiserfstune 命令添加標簽或顯示現有 ReiserFS 文件系統上的標簽。標簽的最大長(cháng)度限制為 16 個(gè)字符。
您可能需要在您的系統上安裝 ReiserFS 包才能使用 ReiserFS,因為它可能不包含在默認安裝內。參見(jiàn)手冊頁(yè)或信息頁(yè)了解更多細節。
現在,我們將在 /dev/sda9 上創(chuàng )建 FAT32(vfat)文件系統。
[root@echidna ~]# mkfs -t vfat /dev/sda9mkfs.vfat 3.0.9 (31 Jan 2010)[root@echidna ~]# blkid /dev/sda9/dev/sda9: LABEL="" UUID="CF72-99A8" TYPE="vfat" |
vfat 文件系統的 UUIDs 比標準 UUIDs 短,因此不惟一的幾率要大一些。如果想用一個(gè)標簽代替,可以使用 dosfslabel 命令。DOS 分區的標簽的最大長(cháng)度限制為 11 個(gè)字符。
現在我們使用 mkswap 命令在 /dev/sda4 分區上創(chuàng )建一些交換空間,如清單 16 所示。
[root@echidna ~]# mkswap /dev/sda4Setting up swapspace version 1, size = 4192960 KiBno label, UUID=8f5a3a05-73ef-4c78-bc56-0e9b1bcc7fdb |
注意,mkswap 的最近幾個(gè)版本都顯示生成的 UUID。
與常規文件系統不同,交換分區不能掛載。相反,它們使用 swapon 命令啟用。您的 Linux 系統的啟動(dòng)腳本將負責自動(dòng)啟用您的交換分區。
以下工具和文件系統不是這個(gè)考試的 LPI 目標的內容。這個(gè)非常簡(jiǎn)略的概述僅觸及您可能會(huì )遇到的一些工具和文件系統的皮毛。
許多 Linux 發(fā)行版都包含 cfdisk 或 sfdisk 命令。cfdisk 命令提供一個(gè)比 fdisk 更圖形化的界面,使用 ncurses 庫函數,如圖 1 所示。sfdisk 命令面向程序員,可被腳本化。如果您對該命令了如指掌,盡管使用它。

用于處理分區表的另一個(gè)流行工具是 parted,該命令能夠對許多類(lèi)型的分區執行大小重置、格式化、創(chuàng )建分區以及銷(xiāo)毀分區等操作。盡管 parted 不能重置 NTFS 分區大小,但 ntfsresize 卻可以。qtparted 工具使用 Qt 工具包來(lái)提供一個(gè)圖形界面。它包含 parted 功能和 ntfsresize 功能。
gparted 是另一個(gè)圖形分區工具,主要用于 GNOME 桌面。它使用 GTK+GUI 庫,如圖 2 所示。(參見(jiàn) 參考資料 獲取到 qtparted 和 gparted 的鏈接。)
要使用上述工具,可能需要安裝相應的包,因為它們可能不包含在您的默認安裝中。

許多發(fā)行版都允許在安裝過(guò)程中對磁盤(pán)分區,有時(shí)還允許縮小現有的 Windows NTFS 或 FAT32 分區。請參閱您的發(fā)行版的安裝文檔。
Linux 的邏輯卷管理程序(或 LVM)允許將多個(gè)物理存儲設備合并為單個(gè)卷組。例如,您可能會(huì )將一個(gè)分區添加到一個(gè)現有卷組,而不是必須開(kāi)辟出足夠您想要的文件系統使用的連續空間。
RAID(Redundant Array of Independent Disks)技術(shù)使用比高端系統上的磁盤(pán)便宜得多的廉價(jià)磁盤(pán)來(lái)提供一個(gè)可靠的數據存儲。RAID 有幾種類(lèi)型,可以在硬件或軟件中實(shí)現。Linux 同時(shí)支持硬件和軟件 RAID。
除了上面介紹的文件系統之外,您可能還會(huì )遇到其他文件系統。
IBM 的 Journaled File System (JFS)(目前用于 IBM 企業(yè)服務(wù)器)旨在用于高吞吐量服務(wù)器環(huán)境。它可用于 Linux,包含在幾個(gè)發(fā)行版中。要創(chuàng )建 JFS 文件系統,使用 mkfs.jfs 命令。
btrfs(B-Tree 文件系統)最初由 Oracle 開(kāi)發(fā),在 GPL 許可之下可用。它是一個(gè)用于 Linux 的新型寫(xiě)入時(shí)拷貝(copy-on-write)文件系統,旨在關(guān)注容錯性、修復和輕松管理的同時(shí)實(shí)現高級特性。這個(gè)文件系統可能不會(huì )默認安裝,因此您可能需要安裝一個(gè)包(比如 btrfs-progs)來(lái)啟用 btrfs 支持。
還有其他文件系統,比如通常在嵌入式設備上使用的 cramfs 文件系統。
學(xué)習
獲得產(chǎn)品和技術(shù)
討論


Ian Shields 參與 developerWorks Linux 專(zhuān)區的許多 Linux 項目。他是 IBM 北卡羅來(lái)納州 Research Triangle Park 的一名高級程序員。他于 1973 年作為一名系統工程師加入 IBM 位于澳大利亞堪培拉的子公司。此后,在加拿大蒙特利爾和北卡羅來(lái)納州 RTP 從事通信系統和普適計算。他擁有多項專(zhuān)利并發(fā)表了許多論文。他畢業(yè)于 Australian National University,取得純數學(xué)和哲學(xué)學(xué)位。他擁有北卡羅來(lái)納州州立大學(xué)的計算機碩士和博士學(xué)位。更多信息參見(jiàn) My developerWorks 上 Ian 的個(gè)人信息。
聯(lián)系客服