この付録は必ずしも x86 ベース以外のアーキテクチャーに適用できるとは限りません。しかしながら、ここに記載されている一般的な概念は適用できる可能性があります。
ハードディスクは非常に簡単な機能を果たします。ハードディスクはデータを保存し、要求に応じて忠実にそれを取り出します。
ディスクパーティション設定などの問題を論議する場合、背後にあるハードウェアについて少々の知識を持っていることが重要です。ただし、詳細に深入りしてしまう可能性もあります。そこで、この付録では、ディスクドライブがパーティション設定される際に実際に何が起こっているのかを説明するために簡略化したディスクの図を使用します。
図A.1「未使用のディスクドライブ」 は、新規の未使用のディスクドライブを示しています。
特に注意して見るものがないですね。しかし基本レベルでディスクドライブを語るのならこれで十分です。ただし、このドライブに何かデータを保存したいとなるとこの状態では不可能です。実行しなければならないことがあります。
A.1.1. 何を書き込むかでなく、どの様に書き込むか
経験のあるユーザーなら多分すぐにお分かりだと思われますが、ドライブを フォーマット する必要があります。フォーマット(通常は「ファイルシステムを作成する」と言う意味で知られています) とはドライブに情報を書き込み、フォーマットされていないドライブの空白の領域に順番を付けることです。
ファイルシステムがディレクトリやファイルを使用できるようにする訳ですから、上記のトレードオフによる影響を重大なものとしてとらえる必要はないでしょう。
万能な単一のファイルシステムは存在しないことに留意することができます。
図A.3「別のファイルシステムを持つディスクドライブ」 で示すように、ディスクドライブには、多くの異なるファイルシステムが書き込まれている可能性があります。異なるファイルシステムには相互に互換性がない場合があることを予想できるかもしれません。あるファイルシステム (または、関連した一部のファイルシステムタイプ) をサポートするオペレーティングシステムは別のタイプをサポートしない可能性があります。ただし、これについては絶対的なルールのように決まっている訳ではありません。例えば、Red Hat Enterprise Linux は多様なファイルシステム (他のオペレーティングシステムで使用される多くのタイプを含む) をサポートしますので、異なるファイルシステム間でのデータ交換が容易になります。
もちろん、ディスクファイルに書き込むのは始めの一歩に過ぎません。このプロセスの目標は実際にデータを保存して取り出すことです。何らかのデータが書き込まれたドライブについて見てみましょう。
図A.4「データの書き込まれたディスクドライブ」 で示されるように、以前に空きブロックだった位置にデータが保管されています。しかし、この図を見るだけでは このドライブに存在するファイルの数量を確実に判定することはできません。すべてのファイルは 最低でも1つのブロックを使用し、ファイルによっては複数ブロックを使用するものもあるので、1 ファイルのみの場合もあれば、多数のファイルが使用される場合もあります。もう1つ注意すべき点として、使用済みのブロックは連続領域を形成する必要がないことがあります。使用ブロックと未使用ブロックが交互に混ざっているかもしれません。これは
フラグメンテーション と呼ばれます。フラグメンテーションは、既存パーティションのサイズ変更を行う際にその役割を果たします。
多くのコンピューター関連の技術と同じように、ディスクドライブは導入されてから常に変化し続けており、拡大しています。これはサイズの拡大ではなく、情報保存の容量が大きくなっているのです。さらに、この容量の増加がディスクドライブの使用方法を根本的に変化させてきました。
A.1.2. パーティション: 1 つのドライブを複数ドライブにする
ディスクドライブは、複数の パーティション に分割することができます。各パーティションは個々のディスクのように、別々にアクセスできます。パーティションテーブル を追加することでディスクドライブを複数パーティションに分割します。
ディスク領域を個別のディスクパーティションに割り当てる理由には以下のようなものがあります。
物理ハードディスクには現在、マスターブートレコード (
MBR) および GUID パーティションテーブル (
GPT) という 2 つのパーティションレイアウト標準があります。
MBR は、BIOS ベースのコンピューターで使われている旧式のディスクパーティション方式です。
GPT は新たなパーティションレイアウトで、Unified Extensible Firmware Interface (
UEFI) の一部です。このセクションおよび
「パーティション内にさらにパーティションを設定する — 拡張パーティションの概要」 では、主に
マスターブートレコード (
MBR) のディスクパーティションスキームを説明しています。
GUID パーティションテーブル (
GPT) のパーティションレイアウトについての詳細は、
「GUID パーティションテーブル (GPT)」 を参照してください。
ここで示す図ではパーティションテーブルが実際のディスクドライブから離れていますが、本来の状況を正確に表しているわけではありません。実際には、パーティションテーブルはそのディスクの先頭部分となる、他のファイルシステムまたはユーザーデータの前に格納されています。ただし、わかりやすくするために図では別々に表示します。
図A.5「パーティションテーブルがあるディスクドライブ」 で示されるように、パーティションテーブルは 4 つのセクション、つまり 4 つの
プライマリ パーティションに分割されます。プライマリパーティションは、論理ドライブ (またはセクション) を1つだけ含むパーティションです。各セクションでは 単独パーティションを定義するために必要な情報を保持することができます。これはパーティションテーブルが 4 つまでのパーティションしか定義できないと言う意味しています。
各パーティションテーブルのエントリー (登記項目) にはパーティションに関する重要な特徴が記載されています。
ディスク上のパーティションの開始点と終了点
パーティションが「アクティブ」かどうか
パーティションのタイプ
これらの特徴について詳しく見てみましょう。開始点と終了点によって実際のパーティションサイズとディスク上の物理的な位置が定義されます。「アクティブ」フラグは幾つかの OS のブートローダーによって使用されます。つまり、「アクティブ」に設定されたパーティションに含まれる OS がブートすることになります。
パーティションのタイプは混乱を招きやすいと言えるかもしれません。タイプとは予想されるパーティションの用途を識別する番号です。この表現が曖昧に聞こえるのは、パーティションタイプの意味がやや曖昧だからです。OS によっては、パーティションタイプを使用して特殊なファイルシステムタイプを表したり、フラグを付けて特定の OS に関連しているパーティションを区別したり、起動可能な OS を含むパーティションを表示したり、またはこれら 3 つの目的を組み合わせたりするものもあります。
多くの場合、ディスク全体にわたる 1 つのパーティションがあります。これはパーティション以前に使用されてきた基本的な方法です。パーティションテーブルではエントリーが 1 つだけ使用されており、そのエントリーはパーティションの先頭を示しています。
このパーティションに "DOS" タイプのラベルを付けます。これは、
表A.1「パーティションタイプ」 にリストされている各種のパーティションの 1 つでしかありませんが、この説明においては、適切な例と言えます。
表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 つのパーティションでは不十分であることに気づかれることでしょう。ディスクドライブはどんどん大きくなるわけで、4 つの適切なサイズのパーティションを設定した後でもまだディスク領域が余るようになります。したがって、より多くのパーティションを作成する何らかの手段が必要になります。
ここで拡張パーティションに目を向けましょう。
表A.1「パーティションタイプ」 で気づかれたかもしれませんが、"Extended" パーティションというタイプがあります。これは、「拡張された」パーティションを示すパーティションタイプです。
パーティションが作成されて、そのタイプが「Extended (拡張)」に設定されている場合、拡張パーティションテーブルが作成されます。基本的には、拡張パーティションは、それ自体がディスクドライブのようなものと言えます。これは、拡張パーティション自体に含まれた 1つまたは複数のパーティション (4 つの
プライマリパーティション に対して、
論理パーティションと呼ぶ) を指すパーティションテーブルを持ちます。
図A.7「拡張パーティションのあるディスクドライブ」 では、1 つのプライマリパーティションと、2 つの論理パーティションを含む拡張パーティションを示しています (パーティション設定がなされていない空き領域もあります)。
この図が示すように、プライマリパーティションと論理パーティションには違いがあります — プライマリーパーティションは 4 つしかできませんが、論理パーティションにはその制限がありません。しかし、Linux によるパーティションへのアクセスの仕方を考慮すると、1 つのディスクドライブに 12 個を超える論理パーティションを定義するのは避けてください。
ここまでで、一般的なパーティション設定について説明してきました。次にこの知識を活用して Red Hat Enterprise Linux をインストールする方法を確認します。
A.1.4. GUID パーティションテーブル (GPT)
GUID パーティションテーブル (
GPT) は、グローバルに固有となる識別子 (
GUID) の使用を基本とする新しいパーティション設定スキームです。
GPT は、
MBR パーティションテーブルの限界、特に 1 ディスクで対応可能な最大ストレージ領域の上限に対処するため開発されました。2.2 テラバイトを超えるストレージ領域には対応できない
MBR とは異なり、
GPT はこのサイズよりも大きなハードディスクでも使用することができます。対応可能な最大ディスクサイズは 2.2 ゼタバイトになります。また、
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 起動パーティションが含まれている場合は、これを再利用することができます。
A.1.5. Red Hat Enterprise Linux 用の領域を作成
次に、ハードディスクのパーティションを作り直す際に考えられる状況をいくつか示します。
パーティションが作成されてない空き領域がある
未使用のパーティションがある
使用中のパーティションの中に空き領域がある
各シナリオを順番に検討しましょう。
以下の図は明確に説明するために簡略化されており、Red Hat Enterprise Linux を実際にインストールする時点のパーティションレイアウトを正確に反映したものではないことに注意してください。
A.1.5.1. パーティションが作成されていない領域の使用
ここで、未使用のハードディスクもこのカテゴリに分類されます。唯一の違いは、すべての領域が、定義済みのどのパーティションの部分に属していない点になります。
いずれの場合でも、未使用の領域から必要なパーティションを作成することができます。残念ながら、このシナリオは非常に単純なものですが、実際のケースとなる可能性はほとんどありません (Red Hat Enterprise Linux 用に新規ディスクを購入したばかりである場合を除く)。ほとんどの事前インストールのオペレーティングシステムはディスクドライブの使用可能な全領域を占有するように設定されています (
「アクティブパーティションの空き領域の使用」 参照)。
次にもう少し一般的な状況を考えましょう。
この場合、もはや使用していない 1つまたは複数のパーティションがあることを想定できるでしょう。例えば、以前に他のオペレーティングシステムを使用していて、それに割り当てていたパーティションが使われていないかもしれません。
図A.9「未使用パーティションを持つディスクドライブ」 ではそのような状況を示しています。
このような状況にある場合は、未使用のパーティションに割り当てられている領域を使用することができます。まず、そのパーティションを削除してから、そこに適切な Linux パーティションを作成します。インストール中に手動で未使用のパーティションを削除し、新規のパーティションを作成することができます。
A.1.5.3. アクティブパーティションの空き領域の使用
これが最も一般的な状況です。ただし、最も扱いにくい状況でもあります。最も大きな問題は、たとえ十分な空き領域がある場合でも、それがすでに使用中のパーティションに割り当てられているということです。ソフトウェアが事前にインストールされているコンピューターを購入した場合、たいていはハードディスクには OS とデータを格納した 1 つの大きなパーティションがあります。
システムに新しくハードディスクドライブを追加する以外に、2 つの選択肢があります。
-
破壊的なパーティション再設定
大きなパーティションを削除して、いくつかの小さなパーティションを作成します。本来のパーティションに格納されていたデータはすべて失われることを想像するのは難しくないかもしれません。つまり、完全なバックアップを行うことが必要になります。パーティションを削除する前に、バックアップを 2 部作成し、検証機能 (ソフトウェアにこの機能がある場合)を使用します。パーティションを削除する前に、バックアップデータを読み込めるかどうかを試してください。
そのパーティションに特定タイプの OS がインストールされていた場合は、その OS も再インストールする必要があります。OS を事前インストールして販売されているコンピューターには、オリジナル OS を再インストールするための CD-ROM が含まれていない場合があるので注意してください。お使いのシステムがこれに該当するかどうかは、元のパーティションとその中の OS を削除する 前 に必ず確認してください。
- 非破壊的なパーティション再設定
ここでは、ある種のプログラムを使用して一見不可能と思えることが行なわれます。パーティションに含まれるファイルを失わずに、その大きなパーティションを小さくします。多くの人々はこの方法は信頼性があり、問題がないと考えています。この操作を実行するにはどのようなソフトウェアを使用する必要があるのでしょうか。市場にはディスク管理ソフトウェア製品がいくつかあります。いくらか調査を行なってから、それぞれの状況に最も適した製品を特定するとよいでしょう。
パーティションの再設定は比較的簡単で、いくつかの手順を実行することにより、内容を削除しないままで実行することができます。
既存データの圧縮とバックアップ
既存パーティションのサイズ変更
新規パーティションの作成
これからそれぞれの手順をもう少し詳しく見てみましょう。
図A.11「圧縮する前と後のディスクドライブ」 は、既存パーティション内でデータを圧縮する最初の手順を示しています。これを実行する理由は、データを再構成して、パーティションの 「後部にある」 使用可能な空き領域を最大化することにあります。
この手順は非常に重要です。この手順を実行しないと、データが存在する場所によっては希望通りにパーティションのサイズを変更できなくなります。様々な理由で移動できないデータがあることにも留意してください。そのような場合 (また、新しいパーティションのサイズも厳密に制限される場合) には、ディスクのパーティションを削除して作り直すことを要求される場合があります。
A.1.5.3.2. 既存パーティションのサイズ変更
ここで大切なのは、サイズ変更用のソフトウェアが新たに解放される領域をどのように使用するかを理解することです。そうすれば適切な手順を実行することができます。図示された例では、新たに作成された DOS パーティションを削除して、適切な Linux パーティション(群)を作成するのが最も適しているようです。
直前の手順で示されるように、新規のパーティションを作成する必要がある場合と必要がない場合があります。ただし、使用されるサイズ変更ソフトウェアが Linux 対応のタイプでないならば、サイズ変更プロセスで作成されたパーティションは削除する必要があるかもしれません。
図A.13「目的のパーティション持たせた最終構成のディスクドライブ」 では、それがどのように実行されるかを示しています。
以下の情報は x86 ベースのコンピューターにのみ関連します。
お客様の便宜を図るために、parted
ユーティリティを提供しています。これは、パーティションのサイズ変更を実行できる一般に利用可能なプログラムです。
parted
を使ってハードドライブのパーティションを再設定することを選択した場合、ディスク記憶装置を把握しており、かつコンピューターのデータのバックアップを実行できることが重要になります。コンピューター上のすべてのデータの二重コピーを作成する必要があります。これらのコピーは外部メディア (テープ、CD-ROM、フロッピーディスクなど) に移動し、それらが読み込み可能なことを確認して続行します。
parted
を使用することにした場合は、parted
の実行後に 2 つのパーティションが残ることに注意してください。その 1 つはサイズ変更したもので、もう 1 つは 新規に解放された領域に parted
が作成したものです。この操作の目的がその領域を Red Hat Enterprise Linux のインストールに使用するためであれば、この新規に作成されたパーティションを削除してください。これは現在使用中のオペレーティングシステムにあるパーティション設定ユーティリティを使用するか、またはインストール時のパーティション設定の際に実行します。
Linux では、ディスクパーティションを表す際には文字と数字の組み合わせを使用しますが、これは特にハードディスクやパーティションを 「C ドライブ」などの様に表すことに慣れている人々にとっては混乱を招くかもしれません。DOS や Windows では、以下の様な方法に基づいてパーティションに名前が付けられています。
各パーティションのタイプがチェックされ、DOS/Windows で読み取り可能かどうかが判別されます。
パーティションのタイプに互換性がある場合、「ドライブ文字」が割り当てられます。ハードドライブの文字は「C」から始まり、ラベルを付けるパーティションの数に応じて、次の文字へと進みます。
このドライブ文字で、パーティションとそのパーティション内のファイルシステムを参照することができるようになります。
Red Hat Enterprise Linux は、より柔軟で、他のオペレーティングシステムで使われるアプローチよりも多くの情報を伝達する命名体系を採用しています。この命名体系はファイルベースであり、/dev/xxyN
の形式のファイル名が使われます。
以下にこの命名体系の解読する方法を示します。
/dev/
これは、すべてのデバイスファイルが置かれるディレクトリの名前です。パーティションはハードディスクに存在し、ハードディスクはデバイスであるため、すべての利用可能なパーティションを示すファイルは /dev/
内に置かれます。
xx
パーティション名の最初の 2 文字は、パーティションが存在するデバイスのタイプを示します。通常これは hd
(IDE ディスク用) または sd
(SCSI ディスク用) です。
y
この文字はパーティションがあるデバイスを示します。例えば、/dev/hda
(最初の IDE ハードディスク) または /dev/sdb
(2 番目の SCSI ディスク)。
N
最後の数字はパーティションそのものを示します。最初の 4 つ (プライマリまたは拡張) のパーティションは、1
から 4
までの番号が付けられます。論理パーティションは 5
から始まります。例えば、/dev/hda3
は、最初の IDE ハードディスクの 3 番目のプライマリまたは拡張パーティションであり、/dev/sdb6
は、2 番目の SCSI ハードディスク上の 2 番目の論理パーティションになります。
この命名規則のいずれの部分も特定のパーティションタイプに基づいている訳ではありません。Red Hat Enterprise Linux では すべての パーティションを識別できるようになっている点で DOS/Windows とは異なります。さらに、Red Hat Enterprise Linux がすべてのタイプのパーティション上にあるデータにアクセスできると言う意味でもありませんが、多くの場合、別のオペレーティングシステム専用のパーティション上にあるデータにアクセスすることも可能です。
これに留意するならば、Red Hat Enterprise Linux で必要とされるパーティションを設定する際に状況が理解しやすくなるでしょう。
お使いの Red Hat Enterprise Linux が他のオペレーティングシステムによって使用されているパーティションとハードディスクを共有している場合でも、ほとんどの場合は問題にはなりません。ただし、Linux と他のオペレーティングシステムの特定の組み合わせによっては、特別な注意が必要となる場合があります。
A.1.8. ディスクパーティションとマウントポイント
Linux を初めて使用される多くの人々にとって混乱を招きやすいのは、Linux がパーティションをどのように使い、アクセスするかという点です。これは DOS/Windows の場合は比較的簡単なことです。各パーティションは「ドライブ文字」を持っており、この「ドライブ文字」を使用して該当するパーティション上のファイルやディレクトリを参照します。
この点は、Linux がパーティションや、一般にディスク記憶装置を取り扱う方法とはまったく異なっています。主な違いは、それぞれのパーティションが、単一のファイル群とディレクトリ群をサポートするのに必要な記憶装置の一部を形成するために使用される点です。これは マウント として知られる処理によって、パーティションとディレクトリを関連付けることによって行われます。パーティションをマウントすることで指定されたディレクトリ (マウントポイント と呼ばれる) からその記憶装置が利用が可能になります。
例えば、パーティション /dev/hda5
が /usr/
にマウントされている場合、これは /usr/
の下にあるすべてのファイルとディレクトリは物理的に /dev/hda5
上に存在することになります。さらに、ファイル /usr/share/doc/FAQ/txt/Linux-FAQ
は /dev/hda5
に保存されますが、ファイル /etc/gdm/custom.conf
はそこには保存されないことになります。
さらにこの例を考慮すると、/usr/
以下の 1 つまたは複数のディレクトリを他のパーティションのマウントポイントとすることも可能です。例えば、あるパーティション (例: /dev/hda7
) が /usr/local/
にマウントされると、これは、/usr/local/man/whatis
は /dev/hda7
上に存在することになり、/dev/hda5
上ではありません。
Red Hat Enterprise Linux のインストール準備プロセスのこの時点で、新しいオペレーティングシステムで使用するパーティションの数とサイズを考慮する必要があります。「パーティションの数」の問いに対しては Linux コミュニティ内でも議論が絶えませんが、おそらくこの議論に参加している人の数と同じほどのパーティションレイアウトの数があると言っても間違いではないでしょう。
他の方法で実行する理由がない限りは、少なくとも swap
、/boot/
、および /
(root) のようなパーティションの作成がれていることに留意してください。