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

注意

本附錄並不一定適用於非x86架構的電腦,然而其中提到的一般概念,也許能一體適用。
本附錄並不一定適用於非x86架構的電腦,然而其中提到的一般概念,也許能一體適用。
若您對於磁碟分割沒有甚麼問題的話,您可直接跳到 節 A.1.5, “空出空間以安裝 Red Hat Enterprise Linux”,以取得更多有關於釋放磁碟空間,以準備安裝 Red Hat Enterprise Linux 的程序上的相關資訊。此部份也論及了 Linux 系統所使用的分割區命名方案、與其它作業系統共享磁碟空間,以及相關主題。

A.1. 硬碟的基本概念

硬碟執行一種很簡單的功能 — 它們儲存資料並穩定的因執行的指令來擷取資料。
當討論有關磁碟分割的問題時,了解一些硬體的基本知識是很重要的。但其牽涉非常廣泛複雜。因此,此附錄使用簡化的圖表來表示磁碟驅動器,以協助說明有硬碟的分割程序。圖形 A.1, “一個未使用過的硬碟” 顯示了一個全新尚未使用的硬碟。
一個未使用過的硬碟

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

沒有辦法看到甚麼,是嗎?不過如果我們只是談到基本層面的硬碟,這就是了。假設我們要儲存一些資料在這個硬碟上。就目前的情況來說是不可行的。在這之前,我們必須要先作一些動作。

A.1.1. 寫入的方式遠過於寫入的內容

有經驗的使用者也許會先執行這個動作。我們需要格式化這顆硬碟。格式化(亦可稱為「建立一個檔案系統」)會寫入資訊到硬碟上,並在這個未格式化的硬碟上規劃出順序。
有檔案系統存在的硬碟

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

圖形 A.2, “有檔案系統存在的硬碟” 所示,檔案系統的順序有些限制。
  • 一小部份的磁碟空間會用來儲存檔案系統相關的資料,這也能被視為是一種添加信號(overhead)。
  • 系統檔案會將剩餘的空間分割至較小、大小一致的區塊。在 Linux 中,我們稱這些區塊為 blocks[15]
但檔案系統也給了我們目錄與檔案,權衡之下,付出一些代價並不足以掛齒。
有一點值得注意的就是單獨的通用檔案系統並不存在。就如 圖形 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, “含有磁碟分割表的硬碟” 所示,分割表分為四個區域,或是四個主要分割區。一個主要分割區為在硬碟上能夠含有一個邏輯驅動器(或區域)的分割區。每個區域皆可以儲存定義單一分割區的資訊。這代表分割表不可定義超過四個分割區。
每一個磁碟分割表的紀錄包含了分割區的許多重要特徵:
  • 分割區在這個磁碟上起始與結束的點。
  • 此分割區是否已「啟用」
  • 分割區的類型
讓我們更詳細的來看這些特徵。起始與結束的點實際上定義了這個分割區的大小與在磁碟上的位置。這個「啟用」的 flag 是用於某些作業系統的開機管理程式。換句話說,在標示為「啟用」的分割區上的作業系統將會被啟動。
分割區的類型也許會比較令人困惑。這個類型是一個號碼用來識別該分割區所使用的容量。如果以上的說明有點含糊不清,那是因為分割區類型的含意也是有點含糊。有些作業系統使用分割區類型來代表一種特定的檔案類型,或用來表示這個分割區與一種特定的作業系統有相關,或者用來指出這個分割區包含了一個可開機的作業系統,亦或表示以上三種的某些結合。
至此,您也許想知道這些額外的複雜性一般是如何使用的。相關範例請參照 圖形 A.6, “含有單一分割區的磁碟”
含有單一分割區的磁碟

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

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

表格 A.1. 分割區類型

分割區類型數值分割區類型數值
空的00Novell Netware 38665
DOS 12 位元 FAT01PIC/IX75
XENIX root02Old MINIX80
XENIX usr03Linux/MINUX81
DOS 16-bit <=32M04Linux swap82
Extended05Linux native83
DOS 16-bit >=3206Linux extended85
OS/2 HPFS07Amoeba93
AIX08Amoeba BBT94
AIX 可開機的09BSD/386a5
OS/2 Boot Manager0aOpenBSDa6
Win95 FAT320bNEXTSTEPa7
Win95 FAT32 (LBA)0cBSDI fsb7
Win95 FAT16 (LBA)0eBSDI swapb8
Win95 Extended (LBA)0fSyrinxc7
Venix 8028640CP/Mdb
Novell51DOS accesse1
PReP Boot41DOS R/Oe3
GNU HURD63DOS secondaryf2
Novell Netware 28664BBTff

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

當然,時間一久四個分割區很顯然的會不敷使用。當硬碟容量不斷的增長,越來越有可能在已經設定好四個適當容量的分割區後,仍然有剩餘空間存在。這個時候就必須想辦法來建立更多的分割區。
請輸入已延伸的分割區。也許您在 表格 A.1, “分割區類型” 中已注意到,有一個「延伸」的分割區類型。此類型的分割區為延伸分割區的核心。
當一個分割區被建立,並且它的類型被設為「Extended」時,會有個延伸的分割表被建立。實質上,延伸分割區本身就像是個磁碟 —,它擁有一個分割表以顯示一個或多個包含了整個延伸分割區之分割區(現稱為邏輯分割區(logical partition),即為四個主要分割區的相反)。圖形 A.7, “含有延伸分割區的磁碟” 顯示了一顆含有一個主要分割區、一個含有兩個邏輯分割區的延伸分割區的硬碟(以及一些尚未分割的可用空間)。
含有延伸分割區的磁碟

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

如圖所示,主要分割區與邏輯分割區並不相同 — 硬碟上最多只能有四個主要分割區,但邏輯分割區的數量則沒有上限。然而,囿於Linux存取分割區的方式,您應該避免在同一顆硬碟上,製作超過十二個邏輯分割區。
我們已大致地討論了分割區,現在讓我們討論如何使用這項知識來安裝 Red Hat Enterprise 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 開機分割區,則您能夠重複使用它。

A.1.5. 空出空間以安裝 Red Hat Enterprise Linux

當您試著要重新分割硬碟時,您可能會面臨以下幾種情形:
  • 有未分割的剩餘空間
  • 有未使用的分割區
  • 正在使用的分割區上有剩餘的空間
讓我們依序探討每一種情況。

注意

請記得,下列圖示已簡化以便輕易閱讀,並且並不代表您實際上安裝 Red Hat Enterprise Linux 時所會看見的分割區格式。

A.1.5.1. 使用未分割的可用空間

在此情況下,已定義的分割區不會影響整個硬碟,留下不屬於任何已定義分割區的未分配空間。圖形 A.8, “磁碟含有未分割的剩餘空間” 顯示了這會看似如何。
磁碟含有未分割的剩餘空間

圖形 A.8. 磁碟含有未分割的剩餘空間

圖形 A.8, “磁碟含有未分割的剩餘空間” 中,1 代表含有未分配空間的一個未定義分割區,2 則代表含有已分配了空間的一個已定義分割區。
如果您稍微注意一下,就會發現一個未曾使用過的硬碟可以歸為此類。唯一的不同點是 所有的 空間都不屬於任何定義好的分割區。
在任何情況下,您皆能由未使用的空間來建立必要的分割區。不幸的是,此方案雖然相當簡單,不過不太可能使用(除非您剛新買了一顆硬碟以使用來安裝 Red Hat Enterprise Linux)。大部分預安裝的作業系統都會被配置來使用磁碟上所有的可用空間(請參閱 節 A.1.5.3, “使用開機分割區上的剩餘空間”)。
下一步,我們將討論一個稍微較平常的情況。

A.1.5.2. 使用未使用分割區的空間

在此情況下,您可能有一個或更多個您已不再使用的分割區。您可能以前裝過了其它作業系統,並且您分配給它的分割區似乎已不再被使用。圖形 A.9, “含有一個未使用分割區的磁碟” 中描述了這類型的情況。
含有一個未使用分割區的磁碟

圖形 A.9. 含有一個未使用分割區的磁碟

圖形 A.9, “含有一個未使用分割區的磁碟” 中,1 代表了未使用的分割區,2 則代表為 Linux 分配未使用的分割區。
如果您也遇到這種情形,您可以利用尚未使用的分割區空間。首先,您必須刪除該分割區,然後利用這空間,建立適當的 Linux 分割區。您可以先刪除尚未使用的分割區,然後在安裝 過程中,手動建立新的分割區。

A.1.5.3. 使用開機分割區上的剩餘空間

這是最常見的情況。然而,這卻是最難處理的。主要問題是,即使您有足夠的空間,它也已經分配給使用中的分割區。如果您購買一部已安裝好軟體的電腦,硬碟上大都放置了一個大型的分割區,且含有作業系統與資料。
除了增加一個新的硬碟到您的系統,您還有另外兩種選擇:
毀滅性的磁碟重新分割
基本上就是刪除這個單一的大型分割區,然後再建立幾個比較小的。您應該也可以想到,在分割區上的所有資料都刪除掉了。這表示您有必要做完全的備份。但為了保險起見,還是建議您做兩份備份,並使用『資料確認』(如果您的備份軟體有提供的話),然後在刪除分割區之前,試著從您的備份中讀取資料。

警告

如果在該分割區上有安裝了某種作業系統,您將需要重新安裝它。請注意,有些買來已經安裝好作業系統的電腦並沒有附上可以用來重新安裝作業系統的光碟片。因此在您刪除原始分割區與它其上安裝好的作業系統之前,最好先確定一下是否有附上光碟片。
在為您現有的作業系統建立了較小分割區之後,您可重新安裝任何軟體、復原您的資料,並開始您的 Red Hat Enterprise Linux 安裝程序。圖形 A.10, “透過毀滅性重新分割的磁碟” 顯示了這項程序。
透過毀滅性重新分割的磁碟

圖形 A.10. 透過毀滅性重新分割的磁碟

圖形 A.10, “透過毀滅性重新分割的磁碟” 中,1 代表了之前,2 則代表了之後。

警告

圖形 A.10, “透過毀滅性重新分割的磁碟” 所示,任何在原始分割區中的資料在沒有正確備份的情況下皆會遺失!
非毀滅性的重新磁碟分割
在這裡,您會執行一種看起來似乎不可能的程式:該程式使得一個大的分割區變小,而且不影響儲存在其上的資料。許多人覺得這個方法很穩定而且比較沒有麻煩。那到底是什麼樣的軟體可以用來執行這種技術呢?市面上有許多種磁碟管理的軟體。您必須做一些研究,以找出最適合您狀況的程式。
這種非毀滅性的重新磁碟分割過程是比較直接的,它牽涉到許多步驟:
  • 壓縮並備份現有的資料
  • 重設現有分割區的大小
  • 建立新分割區
再來,我們會以比較詳細的方式討論每一個步驟。
A.1.5.3.1. 壓縮現有的資料
圖形 A.11, “已壓縮過的磁碟” 所示,第一步驟就是將您現有分割區中的資料壓縮。這麼做的原因就是要將資料重新整理,以讓它在分割「完成」後能空出最大的可用空間。
已壓縮過的磁碟

圖形 A.11. 已壓縮過的磁碟

圖形 A.11, “已壓縮過的磁碟” 中,1 代表之前,2 則代表之後。
這個步驟很重要,如果沒有執行,您的資料所放置的位置也許會使您無法調整到您要的程度。也要注意的是,因為某種原因,無法移動有些資料。在這樣的情形下(而且這樣嚴重影響到新分割區的大小),您也許會被迫做毀滅性的重新磁碟分割。
A.1.5.3.2. 重設現有分割區的大小
圖形 A.12, “已調整過分割區大小的磁碟” 顯示了實際的重設大小程序。重設大小作業的實際結果會取決於所使用的軟體,在大部分情況下,空出來的新空間會被用來建立一個與原始分割區同類型的未格式化分割區。
已調整過分割區大小的磁碟

圖形 A.12. 已調整過分割區大小的磁碟

圖形 A.12, “已調整過分割區大小的磁碟” 中,1 代表之前,2 則代表之後。
了解您所使用的分割區調整軟體對新建立的空間所做的動作是很重要的,之後您才能採取適當的步驟。在我們所提的例子中,最好只是刪除新的 DOS 分割區,然後再建立適當的 Linux 分割區。
A.1.5.3.3. 建立新分割區
如先前的步驟所示,可能需要,也可能無須建立新的分割區。然而,除非您用來重設大小的軟體可偵測到 Linux,否則您很有可能必須刪除您在重設大小程序進行時所建立的分割區。圖形 A.13, “完成分割區設定的磁碟” 顯示了這項程序。
完成分割區設定的磁碟

圖形 A.13. 完成分割區設定的磁碟

圖形 A.13, “完成分割區設定的磁碟” 中,1 代表之前,2 則代表之後。

注意

下列的資訊是特別只為 x86 為基礎的硬體結構所提供。
為了使用者的方便,我們提供了 parted 工具程式。這是一種可免費取得的程式,可用來調整分割區的大小。
如果您決定要使用 parted 來重新分割您的硬碟,您必須先熟悉磁碟儲存的方式,並且先備份您電腦中的資料。您應該要建立兩份所有在您電腦上資料的複本。 這些複本必須存放在可移除的媒體上(例如磁帶、CD-ROM 或軟碟上),而且在繼續之前您必須確定它們是可以讀取的。
若您決定使用 parted,請注意當 parted 執行後,您會剩下兩個分割區:您所重設大小的分割區,以及 parted 由新釋放出的可用空間所建立的分割區。若您的目的是為了要使用此空間來安裝 Red Hat Enterprise Linux 的話,您應將新建立的分割區刪除掉。您可透過使用您目前作業系統下的磁碟分割工具,或是在進行安裝程序時藉由分割區設定來這麼作。

A.1.6. 分割區命名規則

Linux 以字母與數字的結合來表示磁碟分割區,這樣也許會令人混淆,特別是,如果您已經習慣使用「C 磁碟」的方式來表示硬碟或它們的分割區。在 DOS/微軟視窗的環境下,分割區是以下列的方式來命名:
  • 每一個分割區的類型都會被經過檢查,以決定它是否能被 DOS/微軟視窗讀取。
  • 如果這個分割區的類型是相容的,它就會被指定一個「磁碟機代號」。這個磁碟機代號以「C」為起始,並根據需標示的分割區數量以下類推。
  • 這個磁碟機代號就可用來表示該分割區以及在分割區上的檔案系統。
Red Hat Enterprise Linux 使用了一種較為靈活的命名方案,並且提供了比其它作業系統還要多的資訊。該命名方案基於檔案,檔案名稱的格式會是 /dev/xxyN
以下是用來解釋分割區的命名規則:
/dev/
這個是存放所有裝置檔案的目錄名稱。 因為分割區是存放在硬碟上,而硬碟是一種裝置,所以表示所有可能分割區的檔案都會放置在 /dev/ 目錄中。
xx
分割區名稱最前面的兩個字母代表存放該分割區的裝置類型。通常您不是看到 hd(表示 IDE 硬碟)就是 sd(代表 SCSI 硬碟)。
y
這個字母代表存放該分割區的裝置。例如,/dev/hda(第一個 IDE 硬碟)或 /dev/sdb(第二個 SCSI 硬碟)。
N
最後的號碼表示分割區。最前面的四個(主要或延伸的)分割區以 14 表示。邏輯分割區以 5 開始。 因此,例如,/dev/hda3 代表第一個 IDE 硬碟上第三個主要或延伸的分割區,而 /dev/sdb6 代表第二個 SCSI 硬碟上的第二個邏輯分割區。

注意

此命名常規沒有任何一部分是基於分割區類型;和 DOS/Windows 不同,所有的分割區皆可在 Red Hat Enterprise Linux 下被辨識。當然,這並不代表 Red Hat Enterprise Linux 可存取每種類型分割區上的資料,不過在大部分情況下,您都可存取使用於某個作業系統的分割區上的資料。
請記得這項資訊;這能讓您設定 Red Hat Enterprise Linux 所需的分割區時更加容易理解。

A.1.7. 磁碟分割區與其它的作業系統

若您的 Red Hat Enterprise Linux 分割區正在與一個使用於其它作業系統的分割區共享硬碟的話,大部分情況下您都不會遇上問題。然而,某些特定 Linux 與其它作業系統會需要額外的注意。

A.1.8. 磁碟分割區與掛載點

許多初次接觸 Linux 的使用者,會對於 Linux 作業系統如何使用與存取分割區的方式感到疑惑。在 DOS/微軟視窗環境中,就相對地簡單多了:每一個分割區都會有一個「磁碟機代號」。如此一來,您便可使用正確的磁碟機代號,來表示在其分割區上的檔案與目錄。
這個與 Linux 在處理分割區與磁碟容量是完全不一樣的。主要的不同點是每一個分割區是使用來形成需要容量的一部分,已支援單一組的檔案與目錄。這是以一個過程稱為 掛載 的方式將一個分割區與一個目錄產生關聯。掛載一個分割區使得它的容量可以在指定的目錄(稱為 掛載點)中被存取。
比方說,若 /dev/hda5 掛載在 /usr/ 上的話,這代表 /usr/ 下的所有檔案和目錄實際上皆駐留在 /dev/hda5 上。因此,/usr/share/doc/FAQ/txt/Linux-FAQ 這個檔案會儲存在 /dev/hda5 上,而 /etc/gdm/custom.conf 這個檔案則不會。
繼續我們的例子,也有可能在 /usr/ 目錄下的一個或多個目錄是屬於其它分割區的掛載點。例如,一個分割區(如 /dev/hda7)也許會被掛載到 /usr/local/ 目錄,表示 /usr/local/man/whatis 檔案將會存放在 /dev/hda7 上,而不是在 /dev/hda5 上。

A.1.9. 多少分割區才夠用?

至此 Red Hat Enterprise Linux 安裝的準備程序,您必須考量您新的作業系統所要使用的分割區數量與大小。「需建立幾個分割區」這項問題持續迴繞在 Linux 社群之間,不過因為這項爭論並無結果,因此分割區格式的數量可能與爭論此問題的人們一樣的多。
請記得,我們建議除非您有特殊理由,否則請至少建立下列分割區:swap/boot/ 以及 /(root)。
欲取得更多相關資訊,請參照 節 9.15.5, “建議的磁碟分割方案”


[15] Blocks 確實是大小一致的,並非如我們所描述的。請記住,一般的硬碟會包含有數千個 blocks。然而在以目前此所進行的討論來說,請忽略這些微小的差異。