このセクションでは、基本的なディスクの概念、ディスクパーティションの再設定、Linux システムで使用されるパーティション命名スキーム、および関連トピックについて説明しています。
ハードディスクの機能は、データを保存し、命令に応じて確実に取得するという非常に簡単なものです。
ディスクパーティション設定などの問題を論議する場合、基礎となるハードウェアについての理解があることが重要となります。しかし、理論は非常に複雑で広範にわたるものなので、ここでは基本的な概念のみが説明されています。この付録では、簡素化されたディスクドライブの図を使用してパーティションにおけるプロセスと理論を説明しています。
ディスクドライブにデータを保存するには、最初にディスクドライブを フォーマット する必要があります。フォーマット (通常「ファイルシステムを作る」という意味で知られています) とは、ドライブに情報を書き込んで、未フォーマットのドライブの空白領域に順番を付けることです。
上記の図で示されるように、ファイルシステムが与える順序により、いくつかのトレードオフが生じます。
万能な単一のファイルシステムは存在しないことに留意してください。下記の図が示すように、ディスクドライブには多くの異なるファイルシステムが書き込まれている可能性があります。異なるファイルシステムには互換性がない傾向があります。つまり、あるファイルシステム (または、関連した一部のファイルシステムタイプ) をサポートするオペレーティングシステムが別のタイプをサポートしない可能性があります。ただし、たとえば Red Hat Enterprise Linux は多様なファイルシステム (他のオペレーティングシステムで通常使用されている多くのタイプを含む) をサポートしているので、異なるファイルシステム間でのデータ交換が容易になります。
ディスクへのファイルシステムの書き込みは最初のステップに過ぎません。このプロセスの最終目標は実際にデータを 保存 して 取り出す ことです。下図は、データが書き込まれたディスクドライブを示しています。
上記の図では、以前に空白だったブロックにデータが保管されています。しかし、この図を見るだけではこのドライブに存在する正確なファイル数は分かりません。すべてのファイルは最低でも 1 つのブロックを使用し、ファイルによっては複数ブロックを使用するものもあるので、ドライブに存在するファイルは1 つかもしれないし、複数あるかもしれません。もう 1 つ注意すべき点は、使用済みのブロックは連続領域を形成する必要がないということです。使用ブロックと未使用ブロックが交互に混ざっている場合があります。これが 断片化 と呼ばれるものです。既存パーティションのサイズを変更する際に影響する可能性があります。
多くのコンピューター関連の技術と同じように、ディスクドライブは導入されてから常に変化し続けており、特に大型化しています。物理的サイズが大きくなっているわけではなく、情報保存の容量が大きくなっています。さらに、この容量の増加がディスクドライブの使用方法を根本的に変化させてきました。
A.1.2. パーティション: 1 つのドライブの分割
ディスクドライブは、複数の パーティション に分割することができます。各パーティションは個々のディスクのように、別々にアクセスできます。パーティションテーブル を追加することでディスクドライブを複数パーティションに分割します。
ディスク領域を個別のディスクパーティションに割り当てる理由には以下のようなものがあります。
物理ハードディスクには現在、マスターブートレコード (
MBR) および GUID パーティションテーブル (
GPT) という 2 つのパーティションレイアウト標準があります。
MBR は、BIOS ベースのコンピューターで使われている旧式のディスクパーティション方式です。
GPT は新たなパーティションレイアウトで、Unified Extensible Firmware Interface (
UEFI) の一部です。このセクションおよび
「パーティションの中のパーティション: 拡張パーティションの概要」では、主に
マスターブートレコード (
MBR) のディスクパーティションスキームを説明しています。
GUID パーティションテーブル (
GPT) のパーティションレイアウトについての詳細は、
「GUID パーティションテーブル (GPT)」を参照してください。
ここで示す図ではパーティションテーブルが実際のディスクドライブから離れていますが、本来の状況を正確に表しているわけではありません。実際には、パーティションテーブルはそのディスクの先頭部分となる、他のファイルシステムまたはユーザーデータの前に格納されています。ただし、わかりやすくするために図では別々に表示します。
上記の図では、パーティションテーブルは 4 つのセクション、つまり 4 つの プライマリ パーティションに分割されています。プライマリパーティションは、1 つの論理ドライブ (またはセクション) しか含まれない、ハードドライブ上のパーティションです。各セクションには、単一パーティションの定義に必要な情報が保持できます。つまり、パーティションテーブルが定義できるパーティションは、4 つまでということになります。
各パーティションテーブルのエントリーにはパーティションに関する重要な特徴が記載されています。
ディスク上のパーティションの開始点と終了点
パーティションが「アクティブ」かどうか
パーティションのタイプ
開始点と終了点により、パーティションサイズとディスク上の位置が定義されます。「アクティブ」フラグは特定のオペレーティングシステムのブートローダーによって使用されます。つまり、「アクティブ」の印が付いたパーティションにあるオペレーティングシステムが起動されます。
タイプとは、パーティションの用途を識別する番号です。オペレーティングシステムのなかには、特定のファイルシステムタイプを示す、特定のオペレーティングシステムに関連しているパーティションとしてフラグを付ける、起動可能なオペレーティングシステムを含んでいるパーティションであることを示す、などの目的でパーティションタイプを使用するものがあります。
以下の図は、1 つのパーティションがあるディスクドライブのイメージです。
この例の単一パーティションは、DOS
とラベル付けされています。このラベルは パーティションタイプ を示すもので、DOS
は最も一般的なものの 1 つです。以下の表では、一般的なパーティションタイプとそれらを示す 16 進数を記載しています。
表A.1 パーティションタイプ
パーティションタイプ | 値 | パーティションタイプ | 値 |
---|
空白 | 00 | Novell Netware 386 | 65 |
DOS 12-bit 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 bootable | 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. パーティションの中のパーティション: 拡張パーティションの概要
4 つのパーティションで不十分な場合、拡張パーティション を使って新たなパーティションを作成することができます。これは、パーティションのタイプを「Extended (拡張)」とすることで行います。
拡張パーティションは、それ自体がディスクドライブのようなもので、独自のパーティションテーブルを持っています。このパーティションテーブルは、拡張パーティション自体の中に設定した 1 つまたは複数のパーティションを指します (4 つの プライマリーパーティション に対して、これらのパーティションは 論理パーティションと呼ばれる)。下の図では 1 つのプライマリーパーティションと 1 つの拡張パーティションを示しています。この拡張パーティションには 2 つの論理パーティションが含まれています (また、パーティション未設定の空き領域も存在)。
この図が示すように、プライマリーパーティションと論理パーティションには違いがあります。プライマリーパーティションは 4 つしかできませんが、論理パーティションの数にはその制限がありません。しかし、Linux でのパーティションへのアクセス方法を考慮すると、1 つのディスクドライブに 12 個を超える論理パーティションを定義するのは避けてください。
A.1.4. GUID パーティションテーブル (GPT)
GUID パーティションテーブル (
GPT) は、グローバルに固有となる識別子 (
GUID) の使用を基本とする新しいパーティション設定スキームです。
GPT は、
MBR パーティションテーブルの限界、特に 1 ディスクで対応可能な最大ストレージ領域の上限に対処するため開発されました。2 TiB (ほぼ 2.2 TB と同様) を超えるストレージ領域には対応できない
MBR とは異なり、
GPT はこのサイズよりも大きなハードディスクでも使用することができます。対応可能な最大ディスクサイズは 2.2 ZiB になります。また、
GPT はデフォルトで最大 128 個のプライマリーパーティションの作成にも対応します。パーティションテーブルへの領域割り当てを増やすことで、128 個以上のプライマリーパーティションを作成することも可能です。
GPT ディスクは論理ブロックアドレス指定 (LBA) を使用し、パーティションレイアウトは以下のようになります。
MBR ディスクとの後方互換性を保つため、
GPT の最初のセクター (
LBA 0) は
MBR データ用に予約されています。このセクターは
「protective MBR」と呼ばれます。
プライマリー GPT ヘッダー は、デバイスの 2 つ目の論理ブロック (
LBA 1) から始まります。このヘッダーには、ディスク GUID、プライマリーパーティションテーブルの位置、セカンダリー GPT ヘッダーの位置、それ自体の CRC32 チェックサムおよびプライマリーパーティションテーブルが含まれます。また、テーブルのパーティションエントリー数もこのヘッダーで指定します。
プライマリー GPT テーブル には、サイズが 128 バイト、パーティションタイプが GUID、固有パーティションが GUID のパーティションがデフォルトで 128 エントリー含まれています。
セカンダリー GPT テーブル はプライマリー
GPT テーブルとまったく同じものになります。主に、プライマリーパーティションテーブルが破損した場合の復元用バックアップテーブルとして使われます。
セカンダリー GPT ヘッダー はディスクの最後の論理セクターに位置し、プライマリヘッダーが破損した場合に
GPT 情報を復元する際に使用できます。ディスク GUID、セカンダリーパーティションテーブルの位置、プライマリー
GPT ヘッダーの位置、それ自体の CRC32 チェックサムおよびセカンダリーパーティションテーブルが含まれます。また、作成可能なパーティションエントリー数も含まれます。
GPT (GUID パーティションテーブル) を含むディスクには、ブートローダー用の BIOS 起動パーティションを正しくインストールしておく必要があります。Anaconda で初期化するディスクが含まれます。ディスクにすでに BIOS 起動パーティションが含まれている場合は、これを再利用することができます。