![]() | 注記 |
|---|---|
この付録は必ずしもx86ベース以外のアーキテクチャに適用できるとは限りません。しかしながら、ここに記載されている全般的なコンセプトは適用できるかもしれません。 |
ディスクパーティションはパーソナルコンピュータの使用環境では標準的な部分であり、長い間、そのように認識されていました。しかし、多数の人々が OS プリインストールのコンピュータを購入しているため、パーティションがどのようになっているかは少数の人々にしか理解されていません。Red Hat Enterprise Linux のインストールができる限り簡単かつ容易なものになるよう、本章ではディスク パーティションの機能と使用について説明します。
ディスクパーティションについて十分な理解があると思われる方は、項C.1.4 までスキップして、Red Hat Enterprise Linux インストールの準備としてディスクを解放する工程の情報を参照してください。このセクションは Linux システムが使用するパーティションの命名体系、他の OS とのディスクスペースの共有、その他関連した事柄について説明します。
ハードディスクは非常に簡単な機能を果たします — ハードディスクはデータを保存し、要求に応じて忠実にそれを取り出します。
ディスクパーティションなどの課題を論じるときには、基本となるハードウェアの事について少々知っておくことが大切です。ただ簡単に詳細にまで深入りしやすくなるので、単純化されたディスクドライブの図を使用して、ディスクドライブにパーティションを作る(区画を切るとも言う)時に何が起こっているのかを説明します。図C-1 は、新品の未使用ディスクドライブを示しています。
見るものがない状態ですね。しかし基本レベルでディスクドライブを語るのなら今はこれで十分です。この状態のまま、このドライブに何かデータを保存したいとなるとこれでは無理です。まずしなければならない事があります …。
経験のあるユーザーなら多分すぐにお分かりでしょう。ドライブを フォーマット する必要があります。フォーマット(通常『ファイルシステムを作る』と言う意味で知られています)とはドライブに情報を書き込んで、未フォーマットのドライブの空白の領域に順番を付けることです。
図C-2 が示すように、ファイルシステムによって強いられる順序にはトレードオフがあります。
ドライブの使用可能領域のごく一部がファイルシステム自身に関連するデータの保存に使用されますが、これはオーバーヘッド(必要経費)と考えていいでしょう。
ファイルシステムは残りの領域を小さな固定サイズのセグメントに分割します。Linux ではこれらのセグメントを ブロック と呼びます。[1]
ファイルシステムがディレクトリやファイルを使用できるようにするわけですから、上記のトレードオフは安いものと言えるでしょう。
また、一つの普遍的なファイルシステムしか機能しないのではありません。図C-3 で示すように、ディスクドライブは書き込み可能な多くのファイルシステムのどれか一つを使えます。想像できるように、異なるファイルシステム間では互換性がないという傾向があります。つまり、ひとつの OS があるファイルシステム(あるいはいくつかの関連ファイルシステムタイプ)に対応していても、他のファイルシステムには対応しないかもしれません。ただし、これは絶対的なものではありません。例えば、 Red Hat Enterprise Linux は広範囲のファイルシステム(他の OS でも一般的に使用されている多数のファイルシステムを含む)をサポートしており、異なるファイルシステム間のデータ交換を容易にします。
もちろん、ディスクファイルに書き込むのは始めの一歩に過ぎません。このプロセスの目標は実際にデータを 保存 して 取り出す ことです。何らかのデータが書き込まれたドライブについて見てみましょう。
図C-4 が示すように、以前は空だったブロックがいまはデータを格納しています。ただし、この図からでは、このドライブに正確にはいくつのファイルが存在するのか判断することはできません。各ファイルは少なくとも 1 つのブロックを使用し、なかには複数のブロックを使用するファイルもあるため、ファイルは 1 つかもしれないし、多数のファイルがあるかもしれません。データが書き込まれたブロックが必ずしも隣接する必要がないことに注意してください。つまり、未使用ブロックと使用済みブロックが点在するかもしれません。この点在の状態は、フラグメンテーション(断片化) と呼ばれています。既存のパーティションサイズを変更するときにフラグメンテーションの操作が必要になることがあります。
多くのコンピュータ関連技術と同じように、ディスクドライブは導入されてから常に変化し続けています。つまり、より大きくなっています。サイズではなく、情報保存の容量が大きくなっているのです。そしてこの容量増加がディスクドライブの使用方法を根本的に変化させてきました。
ディスクドライブの内容が飛躍的に増大するにつれて、その領域のすべてをひとつの大きな塊にしておくのは良いやり方かどうか疑問視されるようになりました。このような考え方は幾つかの問題によって引き出されました。ある問題は論理的であり、あるものは技術的なものでした。論理的な見地からすると、適当なサイズを越えた場合に、大容量ドライブから与えられる追加領域によってさらに散らかされてしまうのではという問題です。また技術的な面からすると、一定容量を越えるものをサポートするようには設計されていないファイルシステムがあるという問題です。あるいは、ファイルシステムが大容量の大規模デバイスをサポートできたとしても、ファイルを追跡するファイルシステムによって強いられるオーバーヘッドは途方もないものになってしまうでしょう。
この問題に対する解決案はドライブを パーティション に分割することでした。各パーティションが個々のディスクのようであれば、それぞれにアクセスが可能になります。これは、パーティションテーブル を追加することによって実現されました。
![]() | 注記 |
|---|---|
ここで示す図ではパーティションテーブルが実際のディスクドライブから離れていますが、本来の状況を正確に表している訳ではありません。実際には、パーティションテーブルはそのディスクの先頭部分となる、他のファイルシステムまたはユーザーデータの前に格納されています。但し、わかりやすくするために図では別々に表示します。 |
図C-5 が示すように、パーティションテーブルは 4 セクション、または 4 つの プライマリ パーティションに分かれています。プライマリパーティションはハードドライブ上にあるパーティションで、論理ドライブ(またはセクション)は 1 つしか持てません。各セクションには 1 つのパーティションを定義するために必要な情報が格納されています。つまりパーティションテーブルで定義できるのは 4 パーティション以下です。
各パーティションテーブルのエントリ(登記項目)はパーティションに関する重要な特徴を含んでいます。
ディスク上のパーティションの開始点と終了点
パーティションが「アクティブ」かどうか
パーティションのタイプ
これらの特長について詳しく見てみましょう。開始点と終了点によって実際のパーティションサイズとディスク上の物理的な位置が定義されます。「アクティブ」フラグは幾つかの OS のブートローダーによって使用されます。つまり、「アクティブ」に設定されたパーティションに含まれる OS がブートすることになります。
パーティションのタイプについては少々混乱を招くかもしれません。タイプとは予測されたパーティションの用途を識別する番号です。この表現では曖昧に響くかもしれませんが、それはパーティションの意味がやや曖昧だからです。数種の OS はパーティションタイプを使い分けることで特殊なファイルシステムタイプを表現するとか、フラグを付けて一定の OS に関連しているパーティションを区別とか、起動可能な OS を含んでいるパーティション表示とか、さらにはその 3 つの組合せなどの目的で使用します。
ここまでくると、これだけの複雑なものをどうやって使用するのか不思議に思われるでしょう。例として、図C-6 を参照してください。
多くの場合には、ディスク全体にわたるひとつのパーティションがあります。これはパーティション以前に使用されていた基本的な方法です。パーティションテーブルではエントリがひとつだけ使用されており、そのエントリはパーティションの先頭を示しています。
このパーティションには「DOS」というラベルを付けています。これは 表C-1 のリストにある幾つかのパーティションタイプのひとつですが、ここでの説明には適切です。
表C-1 に、一般的(及びあまり知られていない)パーティションタイプとその 16 進数の数値の一覧を示します。
| パーティションタイプ | 値 | パーティションタイプ | 値 |
|---|---|---|---|
| 空白 | 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-ビット <=32M | 04 | Linux swap | 82 |
| Extended | 05 | Linux native | 83 |
| DOS 16-ビット >=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 |
| PPC PReP ブート | 41 | DOS R/O | e3 |
| GNU HURD | 63 | DOS secondary | f2 |
| Novell Netware 286 | 64 | BBT | ff |
表 C-1. パーティションタイプ
もちろん、4 つのパーティションでは不十分であることに気が付くでしょう。ディスクドライブはどんどん大きくなるわけで、4 つの適切なサイズのパーティションを設定した後でもまだディスク領域が余るようになって来ています。したがってより多くのパーティションを作成する何らかの手段が必要になります。
そこで拡張パーティションの登場です。表C-1 を見て気が付いたかも知れませんが、「Extended」と言うパーティションタイプがあります。これが拡張パーティションのことで拡張操作の中心となります。
パーティションを作成して「Extended」に設定すると拡張パーティションテーブルが作成されます。本質的に、拡張パーティションは独立したディスクドライブのようなものです — つまり、拡張パーティションは 1 つまたは複数のパーティション(ここでは 4 つの プライマリパーティション に対して、論理パーティション と呼ぶ)を指し示すパーティションテーブルを持っています。論理パーティション群は拡張パーティションの中に完全に内包されます。図C-7 は、1 つのプライマリパーティションと 2 つの論理パーティションを含む拡張パーティションを持つディスクドライブを示しています(パーティションが作成されていない空白もあります)。
この図が示すように、プライマリパーティションと論理パーティションには違いがあります — プライマリーパーティションは 4 つしかできませんが、論理パーティションにはその制限がありません。しかし、Linux によるパーティションへのアクセスの仕方を考慮すると、1 つのディスクドライブに 12 個を越える論理パーティションを定義するのは避けてください。
ここまでパーティションの一般論を説明しましたので、この知識を利用して Red Hat Enterprise Linux をインストールする方法を考えてみましょう。
次に、ハードディスクのパーティションを作り直す際に考えられる状況をいくつか示します。
パーティションが作成されてない空き領域がある
未使用のパーティションがある
各シナリオを順番に検討しましょう。
![]() | 注記 |
|---|---|
次の図は理解しやすいように単純化されています。実際に Red Hat Enterprise Linux をインストールするときに遭遇するようなパーティションのレイアウトを正確に反映しているわけではないことに注意してください。 |
この状態では、既に定義されているパーティションではハードディスク全体を占めていず、定義されていない割り当てのない状態の領域が残されています。図C-8 は、この状態を表しています。
図C-8 では、1 は領域が割り当てられていない未定義のパーティションを示し、2 は割り当てられた領域で定義済みのパーティションを示します。
考えてみると未使用のハードディスクもこのカテゴリに分類されます。唯一の違いは 全ての 領域が、定義済みのどの領域部分にもなっていないということです。
次にもうすこし一般的な状況を考えましょう。
この場合は、おそらく使用するつもりのない1つまたは複数のパーティションがある状況でしょう。多分、以前に他の OS を少し使用していて、その OS 専用にしていたパーティションが不要になったという状態です。図C-9 ではその状態を示しています。
図C-9 では、1 は未使用のパーティションを示し、2 は Linux 用に未使用パーティションの再割り当てをするところ示します。
このような状況にある場合は、未使用のパーティションに割り当てられている領域を使用することができます。まず、そのパーティションを削除してから、そこに適切な Linux パーティションを作成します。インストール中に手動で未使用のパーティションを削除し、新規のパーティションを作成することができます。
Linux がディスクパーティションを表現する際には文字と数字の組合せを使用しますが、これは特にハードディスクやパーティションを 「C ドライブ」の様に表すことに慣れている人々にとっては混乱のもとになるかもしれません。DOS や Windows の世界では、以下の様にしてパーティションに名前が付けられています。
各パーティションのタイプがチェックされ、DOS/Windows で読み取れるかどうか調べられます。
パーティションのタイプが互換性を持つものであれば、「ドライブ文字」が割り当てられます。ハードディスクドライブの文字は「C」から始まり、ラベルを付けるパーティションの数により、次の文字へ進みます。
このドライブ文字で、パーティションとそのパーティションの中のファイルシステムを参照することができるようになります。
Red Hat Enterprise Linux は他の OS で使用されるアプローチよりも柔軟で、より多くの情報を伝える命名体系を使用しています。命名体系はファイルベースであり、/dev/xxyN のような形式のファイルを使用します。
以下にこの命名体系の解読方法を示します。
これはディレクトリの名前です。すべてのデバイスファイルが格納されています。パーティションはハードディスク上に存在し、ハードディスクはデバイスであるため、すべてのパーティションを表すファイル群は、/dev/ ディレクトリ内に格納されます。
パーティション名の最初の 2 文字は、そのパーティションが存在するデバイスのタイプを示します。通常見かけるのは、hd (IDE ディスク)、または sd (SCSI ディスク)です。
この文字は、パーティションがどのデバイス上にあるのかを示します。例えば、/dev/hda (先頭の IDE ハードディスク) または /dev/sdb (2 番目の SCSI ディスク)などです。
最後の番号がパーティションを表します。最初の 4 つ(プライマリまたは拡張)のパーティションには 1 から 4 までの番号が割り当てられます。論理パーティションは 5 から始まります。例えば、/dev/hda3 は 3 番目のプライマリまたは拡張パーティションで、先頭の IDE ハードディスク上にあります。/dev/sdb6 は 2 番目のパーティションで、2 番目の SCSI ハードディスク上にあります。
![]() | 注記 |
|---|---|
この命名規則の中にはパーティションタイプに依存する部分はありません。DOS/Windows とは異なり、Red Hat Enterprise Linux では すべての パーティションを識別することができます。もちろん、Red Hat Enterprise Linux があらゆるタイプのパーティション上のデータにアクセスできるわけではありませんが、多くの場合、他の OS 専用のパーティション上のデータにアクセスすることができます。 |
この情報を覚えておいてください。Red Hat Enterprise Linux に必要なパーティションを設定しているときに便利です。
Red Hat Enterprise Linux パーティションが他の OS によって使用するパーティションとハードディスクを共有する状況でも、ほとんどの場合は何も問題はありません。ただし、Linux と他の OS の特定の組み合わせについては、特別に注意が必要です。
Linux を始めて使用される多くの人々に取って混乱を招きやすい事柄のひとつは、どの様に Linux がパーティションを使い、アクセスするかと言う問題です。これは DOS/Windows の中では比較的簡単なことです。各パーティションは「ドライブ文字」を持っており、この「ドライブ文字」を使用して関連するパーティション上のファイルやディレクトリを参照します。
これは Linux がパーティションを取り扱う方法、実際には、一般にディスクという記憶媒体を取り扱う方法とはまったく異なっています。主な違いは、さまざまなパーティションが、単一のファイル群とディレクトリ群をサポートする為に必要な記憶媒体の一部を形成するために使用されることです。これは マウント として知られる処理を通じて、パーティションとディレクトリを関連づけることによって行われます。パーティションをマウントすることで指定されたディレクトリ (マウントポイント と呼ばれます)を通じてその記憶媒体が利用可能になります。
例えば、パーティション /dev/hda5 が /usr/ 上にマウントされているすると、/usr/ 配下のすべてのファイルとディレクトリが物理的に /dev/hda5 上に存在すると言う意味になります。したがって、ファイル /usr/share/doc/FAQ/txt/Linux-FAQ は /dev/hda5 に格納されますが、ファイル /etc/X11/gdm/Sessions/Gnome はそこには格納されません。
この例で続けて行くと、/usr/ の下にある1つまたはそれ以上のディレクトリを他のパーティション用のマウントポイントにもすることができます。例えば、あるパーティション (/dev/hda7 とする)を /usr/local/ にマウントしたとすると、これは /usr/local/man/whatis が /dev/hda7 上に存在して /dev/hda5 上ではないと言う意味になります。
Red Hat Enterprise Linux インストールの準備のこの段階で、新しい OS で使用するパーティションの数とサイズについて少々配慮する必要があります。「パーティションの数」の問題は Linux コミュニティで活発な意見が交換されていますが、未だに解決の糸口が見えないようです。パーティションの数は意見の数と同じくらいに多く考えられますので、そのうち適切な数が見つかるとしておくのが無難でしょう。
これを理解して頂いた上で、とくに必要がなければ、少なくとも次のパーティションを作成することをおすすめします。swap、/boot/ (iSeries システムの場合は /boot/ ファイルは必要ありませんが、その他すべてのシステムには必要となります。)、PPC PReP Boot、、/ (root)。注意、新しい仮想ディスクを OS/400 リリース V5R2 及びそれ以降に動的に追加することができます。
詳細については 項2.14.4 を参照してください。
| [1] | 図とは異なり、ブロックのサイズは 本当に 極小単位で固定されています。平均的なディスクドライブは百万単位のブロックを持っていることを覚えておいてください。ここではわかりやすいように、説明と図の細かな矛盾は無視してください。 |