HDDパーティショニング

パーティショニング

ページ作成日 2016/5/4
ページ更新日 2025/4/21

パーティショニングとは?

パーティショニングとは、ハードディスクやSSDなどの記憶装置(ストレージ)を、複数の独立した領域(パーティション)に論理的に分割する作業や技術のことです。

用語の整理

用語意味・役割
ディスクHDDやSSDなどの物理的な記憶装置
パーティションディスクを分割した論理的な保存領域
ボリュームパーティションに割り当てられる名前やラベル

パーティショニングの主な目的とメリット

データの整理・管理の効率化
システムファイル、アプリケーション、ユーザーデータなどを別々のパーティションに分けて保存できるため、管理がしやすくなります。
複数OSの共存
一つの物理ディスクにWindowsとLinuxなど、異なるオペレーティングシステムをインストールして切り替えて使うことができます。
障害時のリスク分散
システム障害やデータ破損が発生しても、影響を受けるのは一部のパーティションだけで済む場合があります。

Linuxにおけるパーティショニングの目的とメリット

Linuxでは、/home/var/boot/tmpなどを個別のパーティションとして分離することが一般的で、これにより以下のような実用的なメリットが得られます。

アップグレードや再インストールが容易
たとえば/homeを別パーティションにしておけば、OSを再インストールしてもユーザーデータを保持できます。
ログや一時ファイルによるディスク圧迫を防止
/var/tmpの容量を制限することで、ログ暴走やテンポラリファイル肥大化によるシステム全体の停止を防げます。
ブートローダの安定性を確保
/bootを独立したパーティションにすることで、カーネルや初期化ファイルの読み込みが安定し、マルチブート構成や暗号化ファイルシステムとの併用でも問題が起きにくくなります。
セキュリティ強化
特定のマウントオプション(例:noexec, nosuid, nodev)をパーティションごとに設定することで、悪意のあるコードの実行や特権昇格のリスクを軽減できます。
たとえば、ユーザーが自由に書き込める/tmpnoexecに設定すれば、そこに配置されたスクリプトの実行を防げます。

BIOSとUEFIの違い

パーティショニングは、ファームウェアと密接な関係があります。
ファームウェアは、以下の2種類があります。

BIOS
古くから使われているファームウェア。
テキスト画面でキーボード操作により設定を行い、MBRパーティションを使用してOSを起動。
UEFI
BIOSの後継として設計された新しいファームウェア。
GUI操作、高速起動、セキュアブート対応、GPTの利用など、最新のPC・サーバ環境に適している。
BIOSとUEFIの比較
項目 BIOS
(Basic Input/Output System)
UEFI
(Unified Extensible Firmware Interface)
登場時期 1980年代 2000年代
起動方式 レガシーブート (MBRベース) UEFIブート (GPTベース)
パーティションサポート MBRのみ(最大2TiB、最大4パーティション) GPT対応(最大8ZiB、最大128パーティション)
インターフェース テキストベース、キーボード操作のみ GUI対応、マウス操作可能(機種による)
ブート速度 遅め 高速起動が可能
セキュリティ 基本的な保護のみ セキュアブートに対応(マルウェア対策)
拡張性 限定的 プラグイン対応など柔軟な拡張が可能
サポートOS 古いOSも対応(Windows XPなど) Windows 7(64bit)以降、Linux新バージョンなど

パーティションの種類

パーティションテーブルには、主に MBRGPT の2種類があります。
MBRは古くから使われている形式で、GPTはその後継として登場した新しい形式です。
使用する形式によって、作成できるパーティションの種類や構造が異なります。

MBR形式のパーティション

プライマリパーティション
最大4つまで作成可能な基本パーティションで、OSのインストールや起動に使われます。
拡張パーティション
プライマリパーティションの1つとして作成され、論理パーティションを内部に保持するためのコンテナです。1つのみ作成可能です。
論理パーティション
拡張パーティション内に作成されるパーティションで、複数作成できます。データ領域の分割に適しています。

GPT形式のパーティション

基本パーティション
MBRのような区別(プライマリ/拡張/論理)はなく、すべて同じレベルで管理されます。
パーティション数
通常128個まで作成可能で、OSによってはさらに拡張できます。
信頼性と冗長性
パーティションテーブルがディスクの先頭と末尾の両方に記録され、CRCチェックにより整合性が保たれます。
UEFIブート対応
GPTはUEFIと組み合わせることで、最新のPCやサーバでの高速・セキュアな起動を可能にします。

MBRとGPTの比較

項目 MBR GPT
パーティション数 最大4つのプライマリ、または拡張+論理 最大128個(拡張可能)
構造 プライマリ/拡張/論理 すべてが基本パーティション
冗長性 なし(MBRのみ) 先頭と末尾の2箇所に記録
整合性検証 なし CRCによるチェックあり
UEFI対応 非対応(BIOSのみ) 対応(UEFI必須)

GPTの主な利点

MBRでは32bitでセクタを管理するため、1セクタ512バイトとして計算すると最大2TiBまでしか扱えませんでした。
GPTでは64bit管理により、最大8ZiBまで対応可能となっています。
これにより以下の利点があります。

  1. 2TiBを超える大容量ディスクに対応可能。
  2. 最大128個のパーティションを作成可能(MBRの4個制限を解消)。
  3. パーティションテーブルが2箇所に保存され、片方が破損しても復旧可能(整合性チェック機能付き)。

パーティション設計

Linuxのパーティション作成の基本

まず基本のパーティショニングは、ディスク領域を/(ルート)とスワップ用の2つに分けます。
スワップ用のパーティションは必ず用意します。

Chris Down氏の「スワップの弁護:よくある誤解を解く」から要約を引用します。

/以降を全て1つのパーティションにする

昨今は、/を1つのパーティションに割り当ててしまい、ディレクトリ単位でパーティションをマッピングするというのは、やらなくなりました。
もちろん、/homeを別パーティションにするのはアリです。

ストレージデバイスの確認

端末に実装されているストレージデバイスを確認しましょう。
以下のように、lsblkというコマンドを実行します。

M.2 NVMe SSDの場合


root@darkstar:/# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOINTPOINT
sda       8:0    1 14.5G  0 disk
`-sda1    8:1    1 14.5G  0 part
zram0   251:0    0 62.6G  0 disk [SWAP]
nvme0n1 259:0    0  1.8T  0 disk

上記のような表示が出ます。
sdaで表示されているのは、USBのSlackwareインストーラーで、zram0がRAMディスク、nvme0n1がM.2 SSDになります。

M.2 SATA SSDの場合


root@darkstar:/# lsblk
NAME    MAJ:MIN RM   SIZE RO TYPE MOINTPOINT
sda       8:0    0 953.9G  0 disk
sdb       8:16   1  14.5G  0 disk 
`-sdb1    8:17   1  14.5G  0 part
zram0   251:0    0  15.5G  0 disk [SWAP]

上記のような表示が出ます。
sdbで表示されているのは、USBのSlackwareインストーラーで、zram0がRAMディスク、sdaがM.2 SSDになります。

パーティショニングツール

Slackwareで使えるパーティショニングツールは、以下の3つです。

cfdisk
cursesベースのTUI(テキストユーザーインターフェース)を持ち、矢印キーやメニュー操作でパーティション作成・削除・タイプ変更などが可能。
MBRとGPTの両方に対応していますが、基本的な操作に特化しており、詳細な設定や高度な機能は制限される。
USBメモリや外付けディスクの簡単なパーティション作成、初心者や直感的な操作を求めるユーザー向け。
fdisk
コマンドラインベースの伝統的なパーティション管理ツール。
元々はMBR専用でしたが、現在はGPTにも対応。
対話的なコマンド入力で細かな操作が可能。
パーティションの作成・削除・タイプ変更・アクティブ設定など多彩な機能を持つ。
システムディスクや複数OSのインストール時など、詳細なパーティション管理が必要な場面で役立つ。
gdisk
GPT(GUIDパーティションテーブル)専用のパーティション管理ツール。
fdiskと似たコマンド体系で、GPTに特化しており、MBRからGPTへの変換やバックアップ、修復などの高度な機能も備える。 2TB超の大容量ディスクやUEFIブート環境でのパーティション管理、GPT特有の操作が必要な場合で役立つ。
3つのパーティショニングツールの比較
ツール名 主な用途・特徴 対応パーティションテーブル 操作体系 主な利点・用途
cfdisk メニュー型TUIで直感的に操作できる MBR, GPT テキストUI 初心者向け、視覚的に分かりやすい
fdisk コマンド入力型、伝統的なパーティション管理 MBR, GPT(新しいバージョン) コマンドライン 柔軟で詳細な操作が可能、歴史が長い
gdisk GPT専用のパーティション管理 GPTのみ コマンドライン GPTディスクの高度な管理に特化

gdiskとは

UEFI用のパーティショニングでは、gdiskを使います。 gdiskとは、GPT fdiskの略です。

gdiskのコマンド

gdiskを起動します。
gdiskは必ず引数でデバイスファイル名が必要です。
デバイスファイル名を入れないと、以下のように表示されます。


root@darkstar:/# gdisk
GPT fdisk (gdisk) version 1.0.8

Type device filename, or press <Enter> to exit: _

Enterキーを押すことで、終了できます。

「インストールの前に」で、事前に自分のPCのストレージがどの種別か、BIOSで確認しましょうと説明しました。
lsblkのコマンドの結果も踏まえて、もし、M.2のSSDにインストールするなら、gdisk /dev/nvme0n1と入力してみましょう。
SSDなら、gdisk /dev/sdaと入力してみましょう。


root@slackware:/# gdisk /dev/nvme0n1
GPT fdisk (gdisk) version 1.0.10

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help): _

次にhelpを表示させてみましょう。?を入力します。


b           backup GPT data to a file
c           change a partition's name
d           delete a partition
i           show detailed information on a partition
l           list known partition types
n           add a new partition
o           create a new empty GUID partition table (GPT)
p           print the partition talbe
q           quit without saving changes
r           recovery and transformation option (experts only)
s           sort partitions
t           change a partition's type code
v           verify disk
w           write table to disk and exit
x           extra functionality (experts only)
?           print this menu

Command (? for help): _

自分が正しいデバイスファイルを指定したか、確認しましょう。
pを入力すると、M.2 SSDだと、以下のような出力が表示されます。


Command (? for help): p
Disk /dev/nvme0n1: 3907029168 sectors, 1.8 TiB
Model: Samsung SSD 990 PRO 2TB
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 686EA370-15AD-41F6-BF57-1BD6810F1E7E
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 1953525134
Partitions will be aligned on 2048-sector boundaries
Total free space is 3907029168 sectors (1.8 TiB)

Number  Start (sector)    End (sector)  Size       Code  Name

Command (? for help): _

SSDだと、こんな感じで表示されます。


Command (? for help): p
Disk /dev/sda: 1000215216 sectors, 476.9 GiB
Model: INTEL SSDSC2KW51
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 2152F182-D7FA-4B4E-8250-309151B25A07
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 1000215182
Partitions will be aligned on 2048-sector boundaries
Total free space is 1000215149 sectors (476.9 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name

Command (? for help): _

新しいGPTを作成する

まず最初にGUIDのパーティションテーブルを作成します。
この領域に、これから作成するパーティション情報が保存されます。
oを入力して、Enterキーを押します。


Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): Y

「全てのパーティションを削除し、新しい保護用MBRを作成しますか?」と質問されるので、Yを入力し、全てのパーティションを削除し、新しい保護用MBRを作成します。

EFIシステムパーティション

まず最初にEFIシステムパーティションを100MBで作成します。


Command (? for help): n <- nを入力して、Enterキーを押す
Partition number (1-128, default 1): <- 何も入力せず、Enterキーを押す
First sector (34-1953525134, default = 2048) or {+-}size{KMGTP}: <- 何も入力せず、Enterキーを押す
Last sector (2048-1953525134, default = 1953525134) or {+-}size{KMGTP}: +100M <- 100MBをEFIシステム領域として確保
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): EF00 <- EF00を入力して、Enterキーを押す
Change type of partition to 'EFI System'

Command (? for help): _

スワップ用パーティションの作成

スワップ領域は必ず作成します。
物理メモリの倍ぐらいで作りましょうというのが昔からの目安でしたが、現在は、もう少し計算式が複雑です。

"How Much Swap Should You Use in Linux?"では、RedHatやCentOSの推奨計算式を紹介しつつ、以下のようにまとめています。

物理メモリとOSの用途によるスワップサイズの目安
RAMの容量スワップのサイズ(ハイバネーションを使わないサーバ用途の場合)スワップのサイズ(ハイバネーションを使うデスクトップ用途の場合)
256MB256MB512MB
512MB512MB1GB
1GB1GB2GB
2GB1GB3GB
3GB2GB5GB
4GB2GB6GB
6GB2GB8GB
8GB3GB11GB
12GB3GB15GB
16GB4GB20GB
24GB5GB29GB
32GB6GB38GB
64GB8GB72GB
128GB11GB139GB

以下の例では、物理メモリ64GBのPCをデスクトップ用途で使うために、72GBのディスク領域をパーティションで切り、スワップ領域として作成しています。


Command (? for help): n <- nを入力して、Enterキーを押す
Partition number (2-128, default 2): <- 何も入力せず、Enterキーを押す
First sector (34-1953525134, default = 206848) or {+-}size{KMGTP}: <- 何も入力せず、Enterキーを押す
Last sector (206848-1953525134, default = 1953525134) or {+-}size{KMGTP}: +72G <- この例では72GBをスワップ領域として確保
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8200 <- 8200を入力して、Enterキーを押す
Change type of partition to 'Linux swap'

Command (? for help): _

スワップ領域用パーティションは、8200というコードになります。

/(ルート)用パーティションの作成

次に/(ルート)の領域を確保します。
30GBあれば十分ですが、余裕があるのであれば、100GBぐらいまで増やしても良いでしょう。
/varの領域は、ログを記録に、/tmpは一時的なファイルの書き込みやパッケージ作成などに使うので、ある程度余裕があった方が良いです。

以下の例では、残りの全領域をルート用パーティションとして作成しています。


Command (? for help): n <- nを入力して、Enterキーを押す
Partition number (3-128, default 3): <- 何も入力せず、Enterキーを押す
First sector (34-1953525134, default = 151201792) or {+-}size{KMGTP}: <- 何も入力せず、Enterキーを押す
Last sector (151201792-1953525134, default = 1953525134) or {+-}size{KMGTP}: <- 何も入力せず、Enterキーを押す
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): <- 何も入力せず、Enterキーを押す
Change type of partition to 'Linux filesystems'

Command (? for help): _

作成したパーティションの確認と確定

最後にpを押して、作ったパーティションを確認します。


Command (? for help): p
Disk /dev/nvme0n1: 1953525134 sectors, 931.5 GiB
Model: Sabrent Rocket 4.0 1TB
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 745D34CB-D312-4EFE-AA80-4501A5531CDD
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 1953525134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          206847   100.0 MiB   EF00  EFI system partition
   2          206848       151201791   72.0 GiB    8200  Linux swap
   3       151201792      1953525134   859.4 GiB   8300  Linux filesystem

Command (? for help): 

これでパーティションを確定させます。
wを入力して、パーティションテーブルをディスクに書き込み、gdiskを終了させます。


Command (? for help): w

Final checks complete. Abount to write GPT data. THIS WILL OVERWRITE EXISTING  
PARTITIONS!!

Do you want to proceed? (Y/N): Y <- Yを入力して、Enterキーを押す
OK; writing new GUID partition table (GPT) to /dev/nvme0n1.
The operation has completed successfully.
root@slackware:/# _

複数台の記憶装置を使う場合

もしも、複数台のSSDやHDD、M.2 SSDを搭載したPCを使い、別のデバイスに/homeや/varなどを割り当てるのであれば、gdisk /dev/sdbのように入力して、同じような作業を行います。
2台目以降はブート用デバイスではなく、データ保存専用デバイスとなるため、EFIシステムパーティションを作る必要はありません。

次は、パッケージの選択とインストールに進みます。