パーティション
コンピュータのハードディスクのパーティション (Partition) とは、ハードディスクの記憶領域を論理的に分割すること、あるいは分割された個々の領域を指す。パーティションを作成することをパーティショニング (Partitioning) ともいう。
ディスクパーティショニングは基本的な技術であり、論理ボリュームマネージャに発展したと見ることもできる。
パーティショニングは、ひとつのハードディスク上に複数のを持つことを可能にする。パーティションを作成する目的として、以下のことがあげられる。
まず、基本的な3点としては
物理ディスクとは別に、ハードウェアにリンクした管理単位を定義し、その管理単位でのアクセスを制御することで、とあるパーティションで障害が発生しても、他パーティション及びハードディスク全体に被害が及ばないように、障害の局所化が可能となる。
固有パーティションにおいて、ディスクの空きが枯渇しても、全データ区分に影響が及ばないように局所化する事ができる。ただし、システム使用パーティションの一部においては、そのパーティションの残量が枯渇した場合、システム自体の動作が停止してしまうことがある。
用途によってパーティション分割する場合もある。例えば、ほとんど書き込まれることがないパーティションがあれば、それを読み込みのみを許可する状態で使用する(マウントする)ことも考えられる。小さなファイルを多数格納するファイルシステムは、パーティションとして独立させてiノードを多数にするような設定をすることもできる。
というものである。
その後、PC系UNIX及びWindows系(MS-DOSを含む)の発展や、PCにおけるブートローダツールなどの開発により、幾つかのポイントが追加されている。
UNIXのマルチユーザーシステムで、ハードリンク攻撃を防ぐために /home や /tmp を別パーティションにする場合がある。
技術的制限を解決するため。例えば、古いバージョンのファイルシステムでは管理可能な容量が制限されていた。また、古いBIOSでは、1024番目以降のシリンダーに位置するオペレーティングシステム (OS) をブートすることができなかった。
LinuxのようなOSではスワップファイルとしてパーティションを使用することが多い。複数のOSを搭載する場合、OS間でスワップファイル用パーティションを共有することでディスク容量を節約できる。
2つのOSがそれぞれ固有のディスクフォーマット形式を持っていると、同じパーティションに共存することができない。このようなOSを共存させるためにはパーティションでディスクを論理的に分割する必要がある。
Classic Mac OSのHFSは、パーティションのサイズに比例した単位でファイルをディスクに書き込む。そのため、パーティションサイズが大きいと書き込み単位が大きくなりディスク領域を無駄にしてしまう。これを防ぐには、小さめのパーティションでディスクを分割する必要があった。
などである。
UNIXの場合、論理ボリュームマネージャを使用した仮想パーティションと実際に物理ディスクを区切る一般的なパーティションがある。
まずディスクの一般パーティション管理情報は、ディスクの先頭領域にVTOC情報として記載される。この情報は、SVR4系においてはprtvtocコマンドにて第2パーティションを示すスペシャルファイル名指定で表示することが可能。また、fmthardコマンドにてこの情報を取り込むことも可能である。
この情報は、パーティション番号とスタートシリンダ番号とエンドシリンダ番号、書き込み読み込みモードといった情報が記録されており、直接、ディスクのハードウェア構成に依存する情報となっている。Unix系のパーティション管理はディスクの価格が高く、容量の限られた時代の管理方式を色濃く残しており、1ディスクに7パーティションだけ作成できるものであった。
一般にパーティション設定は以下のようなものが多い。
パーティション0番:/ (root)
パーティション1番:swap領域
パーティション2番:ディスク全体を示すOverVIewパーティション
パーティション3番以降:/usr,/var,/opt,/home,/tmp
という設定が行われる。
UNIXの場合、PC及びPC上のUnix系OSと異なり、IPL(初期プログラムローダ)が/root配下などに置かれるvmunix(仮想メモリを実装したUNIXという意味)カーネルをロードし、メモリに展開する。
PCにおけるLinuxなどのUnix系OSでの一般的なパーティション分割も、UNIXの実装に近い設定をする事が多い。特に以下の配置において、その名残を色濃く残している。
Linuxのパーティション設定(一般的対応)
/boot
/(root)
その他/home、/tmp、/usr、/var、/opt
などの順番にパーティションを割り付ける。
Unix系OSという括りで考えると、これはひとつのが壊れても、残りのデータ(他のファイルシステム)が影響を受けないのでデータ損失を最小化できるからである。細かくパーティション分割する欠点としては、例えばユーザーが /home パーティションを使い切った場合に他のパーティションには余裕があるのに処理を続行できなくなることがあげられる。そのため、各パーティションに必要なサイズを事前によく予測することが重要となり、これは困難な場合もある。デスクトップシステムでは一般に "/" (root) でスワップパーティション以外の全体をひとつのパーティションとしていることが多い。デスクトップシステムであっても/homeを別パーティションにしておくと、ユーザーの設定ファイルなどが残るため、再インストール(あるいは別のLinuxディストリビューションへの乗り換え)したときの設定のやり直しを最小限に留めることができる。
論理ボリュームマネージャを使用した場合、1つのボリュームグループ (VG) に物理ディスク(PV又はPE)を登録し、論理ボリューム (LV) という仮想パーティションを定義する事ができる。また、この仮想パーティションは動的に拡張/縮退が可能であり、運用上、システムの停止をする事無く、対応することができる。
Windowsでの一般的なパーティション構成は、1つのパーティション、いわゆるCドライブである。そこにOSもプログラムもデータも全て格納する。しかし、パーティション(あるいはドライブ)を複数用意して、OS用のひとつのパーティション以外をアプリケーション等に割り当てることが望ましい。可能ならば、ページングファイルのための別個のパーティションを用意して、これをOSとは異なるディスクドライブに置くべきである。OSをCドライブ以外に置くようなパーティション構成も不可能ではなく、トロイの木馬が固定のパス名でファイルアクセスしようとする場合に有効な場合もある。
Windows 2000や、Windows XP の Windows NT系 OSでは、論理ディスクマネージャを用いて NTFS 上の任意のフォルダに別のパーティションをマウントすることができる。例えば、ユーザーのホームディレクトリである「My Documents」フォルダに、別のパーティションをマウントしたりすることができる。
論理パーティション(仮想パーティション) - 論理ボリュームと呼ぶ場合が多い
基本パーティション (Primary Partition) - 基本区画と呼ぶ場合もある
拡張パーティション (Extended Partition) - 拡張区画と呼ぶ場合もある
論理パーティション (Logical Partition) - 論理区画と呼ぶ場合もある
物理パーティションとしては1ディスク当り7つ(実質6つ)であり、仮想パーティションの場合、それぞれのLVMの上限によるが、1仮想ディスク (VG) に対して256-1024程度となっている。仮想パーティションにて作成できるパーティション総数は、Linuxのディストリビューションによって上限がかけられる場合がある。
実際の仕様では、Linuxで採用されているVERITAS社(HP-UX互換)互換LVMにおいては、ソフトウェア的な制限は256(HP-UX11.0ベースのため、1024にはなっていない)となっている。
BIOSを基準としたPC/AT互換機においては、ベースのIBM機の制限が残っており、基本パーティションは、1つのハードディスクに合計4個しか作成できない。これは、ハードディスク先頭セクタに配置されているマスターブートレコード (MBR) 内のパーティションテーブルが、4個の領域分しか無いからである。
また、1ドライブ当たりの最大容量は、2TiBとなっており、その定義可能な値の上限から、1パーティションの最大値も、先頭から、この上限にあたる2TiBである。
拡張パーティションは、1つのハードディスクに1つだけ作成できる、特殊な基本パーティションである。ここにドライブレターが割り当てられることは無く、直接データを保存することも出来ない。論理パーティションを入れるためだけの、いわば容器のようなものである。
論理パーティションは、拡張パーティション内にのみ作成が可能な再帰的な構造を持つパーティションであり、理論的には作成できる総数に制限は無い。
但し、再帰的な構造で、入れ子のような形で、パーティションが定義され、起動領域としての仕様は基本的にできない。また、作成できる数は、その構造から、本体側のメモリ容量や、システム側の認識可能なパーティション数などに依存するため、実際には、1ドライブ当たり30未満程度が限度である。
UEFI等の搭載を基準とした、GPT形式のパーティションテーブルで構築されたシステムは、その限りではなく、Windows Vista以降は、起動領域としては利用できないものの、GPT形式のパーティションテーブルの認識、利用が可能である。
MBR内のパーティションテーブルが4個の領域分しか無い関係上、基本パーティションは、拡張パーティションを含めて1つのハードディスクに合計4個しか作成できない。
論理パーティションは拡張パーティション内でのみ作成が可能である。作成できる総数はOSによって異なり、基本パーティションを含めて概ね16-60程度とされていることが多い。
PC-9800系
設計上は32GiBのドライブまで管理可能であるものの、BIOSの設計に起因した制限により、多くの機種で、ドライブ当たりの最大認識容量は、4GiBとなっている機種が多い。
パーティションテーブルは16あり、MS-DOSの設計に起因する制限を引き継いでいるため、同時にアクティブにできるのは、そのうち4つ。
基本パーティションおよび論理パーティションはを持つことが出来る。通常はファイルシステムを作成しない限り、そのパーティションを利用することが出来ない。
Solarisを除くUnix系の場合、論理ボリュームマネージャを使用するのが一般的である。インストール時にrootvgを定義し、その中に論理ボリュームを定義してマウントする。論理ボリュームマネージャを使用しない場合、Format系コマンドにてFormat後にパーティションを定義し、それぞれのマウントポイントを設定する。
Windows 2000、Windows XP では、パーティションの作成と同時にファイルシステムを作成することが可能であるが、Windows 9x系やLinuxではパーティション作成後に別途ファイルシステムを作成する必要性がある。
右図の(例1)で示すように、1つのハードディスク内に4個の基本パーティションを作成することが出来る。また、(例2)のように、そのうち1個を拡張パーティションとして、内部に論理パーティションを作成することも出来る。
(例3)で示すように、拡張パーティション内に複数の論理パーティションを作成することも出来る。
(例3)で示すように、基本パーティションと拡張パーティションの総数は4個以内であればよい(この例では2個)。
なお、右図での色分けは赤:マスターブートレコード、水色:基本パーティション、橙:拡張パーティション、緑:論理パーティション、黒:ハードディスク全体である。また、パーティション内に振られている数字は、Linuxでのデバイス番号である。
Unix系では、それぞれのベンダが提供する物理Formatコマンドにより、パーティションを定義し、VTOC情報を書き込む。論理ボリュームマネージャを使用する場合、rootvg定義後にlvを切る作業が行われ、VG情報とLV情報が物理ディスクの先頭管理領域に書き込まれる。この情報はエクスポートして、別途保存することが可能であり、ディスク障害時にはインポートして、管理情報をシステムに取り込む事が可能となっている。
Windows 2000やWindows XP:論理ディスクマネージャ
Windows 9x系やMS-DOS:fdisk
Linux:fdisk または parted
Unix系:UFS, BFS, ジャーナルファイルシステムなど
Windows 9x系:,
Linux:ext2, ext3, FAT16, FAT32 (NTFS)
Windows 9x系やMS-DOS:format
Linux:mkfs
商用UNIX:mkfs/newfsなど