附錄 A. 磁碟分割區的介紹

注意

本附錄並不一定適用於非 AMD64 和 Intel 64 架構的系統,然而其中提到的一般概念,也許能一體適用。
這部分討論了基本的磁碟概念、磁碟分割策略、Linux 系統所使用的分割區命名方案和其它相關主題。
若您對於磁碟分割沒有甚麼疑問,您可直接跳到〈節 A.2, “磁碟重新分割的策略”〉,以取得更多有關於釋放磁碟空間,以準備安裝 Red Hat Enterprise Linux 的程序上的相關資訊。

A.1. 硬碟的基本概念

硬碟執行一種很簡單的功能 — 它們儲存資料並穩定的因執行的指令來擷取資料。
當討論類似磁碟分割之類的問題時,您必須對基礎硬體有一定程度的理解;然而,因為此理論非常複雜且範圍廣泛,在此只會解釋基本的概念。本附錄使用了一組簡化的磁碟圖形,來協助解釋分割區的程序和理論。
圖形 A.1, “一個未使用過的硬碟”〉顯示了一個全新、未使用的磁碟。
一個未使用過的硬碟

圖形 A.1. 一個未使用過的硬碟

A.1.1. 檔案系統

若要在硬碟上儲存資料,您必須先格式化磁碟。格式化(一般亦稱為「製作檔案系統")會將資訊寫入磁碟,在未格式化磁碟中的空白空間上建立順序。
有檔案系統存在的硬碟

圖形 A.2. 有檔案系統存在的硬碟

如〈圖形 A.2, “有檔案系統存在的硬碟”〉所示,檔案系統的順序有些限制:
  • 一小部份的磁碟空間會用來儲存檔案系統相關的資料,這也能被視為是一種添加信號(overhead)。
  • 系統檔案會將剩餘的空間分割至較小、大小一致的區塊。在 Linux 中,我們稱這些區塊為 blocks[4]
有一點值得注意的就是單獨的通用檔案系統並不存在。如〈圖形 A.3, “有不同檔案系統的磁碟”〉所示,磁碟上可能會寫入許多檔案系統中的其中一種。不同的檔案系統之間一般來講無法互相相容;也就是說,一個支援某種檔案系統(或是其它相聯的檔案系統類型)的作業系統,可能不支援另一個檔案系統。然而,這並非是所有作業系統。比方說,Red Hat Enterprise Linux 支援了多種類型的檔案系統(包括許多其它作業系統常用的檔案系統),使得不同檔案系統之間的資料互換變得容易。
有不同檔案系統的磁碟

圖形 A.3. 有不同檔案系統的磁碟

將檔案系統寫入磁碟僅是第一個步驟。此程序的目標乃實際地儲存擷取資料。以下圖形顯示了一個寫入資料之後的磁碟:
有寫入資料的磁碟

圖形 A.4. 有寫入資料的磁碟

如〈圖形 A.4, “有寫入資料的磁碟”〉所示,原本為空白的區塊現在存有資料。然而,僅檢閱這些圖案,我們無法確定常駐於此磁碟區的檔案數量。在一個區塊內也許僅有一個,但也可能有多個檔案,有些檔案佔用數個塊區。另一個需要注意的重點就是,已使用的區塊不需要形成一個接觸區域;已使用或尚未使用的區塊可以被散置。這稱之為儲存片(fragmentation)。儲存片可用於重設既有分割區的大小。
就像大部分的電腦相關的科技,硬碟的製造技術也改變很多。特別是,它們越來越大了。不是外觀上變大,而是容量增大以儲存更多資料。而且,這些額外的容量徹底地改變了硬碟的使用方式。

A.1.2. 磁碟分割區:將一個硬碟變成很多個

磁碟可劃分成分割區。每一個分割區可被視為一個不同的磁碟。這是經由增加磁碟分割表(partition table)所達成的。
為獨立的磁碟分割區分配磁碟空間的原因有幾種,比方說:
  • 作業系統資料和使用者資料之間的邏輯區隔
  • 使用不同檔案系統的能力
  • 在一部機器上執行多重作業系統的能力
目前實體硬碟有兩種磁碟分割配置標準:Master Boot Record(MBR)和 GUID Partition Table(GPT)。MBR 是個搭配基於 BIOS 電腦使用的較舊磁碟分割方式。GPT 是個屬於 Unified Extensible Firmware Interface(UEFI)一部份的較新分割配置。此部分和〈節 A.1.3, “分割區中的分割區 - 延伸分割區的概論”〉主要詳述了 Master Boot RecordMBR)磁碟分割方案。欲取得更多有關於 GUID Partition TableGPT)磁碟分割配置上的相關資訊,請參閱〈節 A.1.4, “GUID 分割表(GPT)”〉。

注意

在這個章節中的圖解上顯示的磁碟分割表是與實際磁碟分離的,這並不是完全正確的。實際上,分割區表是儲存在該磁碟的起始處,在任何的檔案系統或使用者資料前。但為求清楚起見,我們還是將它們分別表示在圖解上。
含有磁碟分割表的硬碟

圖形 A.5. 含有磁碟分割表的硬碟

如〈圖形 A.5, “含有磁碟分割表的硬碟”〉所示,分割表分為四個區域,或是四個主要分割區。一個主要分割區為在硬碟上能夠含有一個邏輯驅動器(或區域)的分割區。每個區域皆可以儲存定義單一分割區的資訊。這代表分割表不可定義超過四個分割區。
每一個磁碟分割表的紀錄包含了分割區的許多重要特徵:
  • 分割區在這個磁碟上起始與結束的點。
  • 此分割區是否已「啟用」
  • 分割區的類型
起始點與結束點定義了這個分割區的大小與在磁碟上的位置。這個「啟用」的旗標使用於某些作業系統的開機管理程式。換句話說,位於標示為「啟用」之分割區上的作業系統將會被啟動。
這個類型是一個用來識別該分割區所使用之容量的號碼。有些作業系統使用分割區類型來代表一種特定的檔案類型、用來表示該分割區與特定的作業系統相聯,或者用來指出該分割區包含了一個可開機的作業系統,亦或表示以上三種的某些結合。
欲查看包含單分割區的磁碟之範例,請參閱〈圖形 A.6, “含有單一分割區的磁碟”〉。
含有單一分割區的磁碟

圖形 A.6. 含有單一分割區的磁碟

在大多數情況下,整個磁碟上只會有單一分割區,這延襲了使用分割區前的方法。磁碟分割表上只有使用一個項目,而它指向這個分割區的起始點。
我們已將此分割區標示為「DOS」類型了。雖然這只是幾種列在〈表格 A.1, “分割區類型”〉中的可能分割區種類之一,但是它對於此論題來講已足夠。
表格 A.1, “分割區類型”〉包含了一列常見(與不常見的)分割區類型,以及它們的十六進位數值。

表格 A.1. 分割區類型

分割區類型 數值 分割區類型 數值
空的 00 Novell Netware 386 65
DOS 12 位元 FAT 01 PIC/IX 75
XENIX root 02 Old MINIX 80
XENIX usr 03 Linux/MINUX 81
DOS 16-bit <=32M 04 Linux swap 82
Extended 05 Linux native 83
DOS 16-bit >=32 06 Linux extended 85
OS/2 HPFS 07 Amoeba 93
AIX 08 Amoeba BBT 94
AIX 可開機的 09 BSD/386 a5
OS/2 Boot Manager 0a OpenBSD a6
Win95 FAT32 0b NEXTSTEP a7
Win95 FAT32 (LBA) 0c BSDI fs b7
Win95 FAT16 (LBA) 0e BSDI swap b8
Win95 Extended (LBA) 0f Syrinx c7
Venix 80286 40 CP/M db
Novell 51 DOS access e1
PReP Boot 41 DOS R/O e3
GNU HURD 63 DOS secondary f2
Novell Netware 286 64 BBT ff

A.1.3. 分割區中的分割區 - 延伸分割區的概論

若四個分割區不足以滿足您的需求,您可使用延伸分割區(extended partition)來建立額外的分割區。若要這麼做,您需將分割區的類型設為「Extended」。
實質上,延伸分割區本身就像是個磁碟 — 它擁有一個自己的分割表,並指向了一或多個分割區(現稱為邏輯分割區,即為四個主要分割區的相反)。圖形 A.7, “含有延伸分割區的磁碟” 顯示了一顆磁碟含有一個主要分割區、一個含有兩個邏輯分割區的延伸分割區(以及一些尚未分割的可用空間)。
含有延伸分割區的磁碟

圖形 A.7. 含有延伸分割區的磁碟

如圖所示,主要分割區與邏輯分割區並不相同 — 硬碟上最多只能有四個主要分割區,但邏輯分割區的數量則沒有上限。然而,囿於Linux存取分割區的方式,您不可在同一顆硬碟上,定義超過十二個邏輯分割區。

A.1.4. GUID 分割表(GPT)

GUID Partition Table(GPT)是個較新、基於使用 Globally Unique Identifiers(GUID)的磁碟分割方案。GPT 主要開發來應付 MBR 分割表的限制,特別是可配置的磁碟空間的最大限制。和僅能配置 2.2 TB 以下儲存空間的 MBR 不同,GPT 可與更大的硬碟搭配使用;可配置的最大磁碟大小為 2 ZB。此外,GPT 就預設值支援建立達 128 個主要分割區。此數量能藉由分配更多空間給分割表來擴增。
GPT 磁碟使用邏輯區塊定址(Logical Block Addressing,LBA)並且分割區格式如下:
  • 若要 MBR 磁碟保留向後相容性,GPT 的第一個磁區(LBA 0)會被預留來保存 MBR 資料,並且稱為保護性 MBR(protective MBR)
  • 主要的 GPT 表頭會從裝置的第二個邏輯區塊(LBA 1)上開始。該表頭包含了磁碟的 GUID、主要分割表的位置、次要 GPT 表頭的位置,以及其本身和主要分割表的 CRC32 checksum。它亦指定了表格的分割區項目數量。
  • 主要的 GPT 表格就預設值包含了 128 個分割區項目,各個項目的大小皆為 128 個位元組,其分割區類型的 GUID 和獨特的分割區 GUID。
  • 次要的 GPT 表格與主要的 GPT 表格相似。它會在主要分割表損毀時,被用來作為進行備援用的備用表格。
  • 次要的 GPT 表頭位於磁碟的最後一個邏輯磁區上,並且可在主要表頭損毀時,使用來復原 GPT 資訊。它包含了磁碟的 GUID、次要分割表的位置,以及主要的 GPT 表頭、其本身與次要分割表的 CRC32 checksum,以及可使用的分割區項目數量。

重要

BIOS 開機分割區必須存取,開機載入程式才能成功安裝在包含了 GPT(GUID 分割表)的磁碟上。這包含了由 Anaconda 所初始化的磁碟。若磁碟早已包含了一個 BIOS 開機分割區,則您能夠重複使用它。


[4] Blocks 確實是大小一致,並非如我們所描述的。請記住,一般的硬碟會包含數千個區塊。然而以目前所進行的討論來說,我們簡化了其內容。