Partitioning (日本語) - ArchWiki

# Partitioning (日本語)

関連記事

- fstab
- LVM
- スワップ
- ファイルシステム

ハードドライブをパーティショニングして論理的なパーティションを作ることで他から独立してアクセスすることができるようになります。

ハードドライブ全体を１つのパーティションにすることもできますし、ハードドライブの容量を分割して複数のパーティションを作ることもできます。複数のパーティションが必要になる場合は様々です: 例えばデュアル・マルチブートや、swap パーティションなど。他にも、パーティショニングは論理的にデータを分担する方法としても用いられ、オーディオ・ビデオファイルのためにパーティションを分割するようなことがあります。一般的なパーティショニング形態は下で詳しく記述しています。

それぞれのパーティションは使う前にファイルシステムでフォーマットしなければなりません。

## パーティションテーブル

パーティションの情報はパーティションテーブルに保存されます。現在、主に使われている形式は2つ存在します。昔ながらの Master Boot Record と新しい GUID Partition Table。後者は MBR 形式に存在するいくつかの制限を取り除くように改良されています。

### Master Boot Record

MBR はもともとパーティションを4つまでサポートしていましたが、後になって、この制限を回避するために拡張・論理パーティションが導入されました。

パーティションには3つのタイプがあります:

- Primary (プライマリ)
- Extended (拡張)
  - Logical (論理)

プライマリパーティションは起動することができるパーティションで、１つのディスクもしくは RAID ボリュームに対して4つまでプライマリパーティションを作成できます (MBR)。パーティションを４つ以上作りたいときは、拡張パーティションを用いてその中に論理パーティションを内包する形で構成する必要があります。拡張パーティションは論理パーティションのコンテナにすることができます。１つのハードディスクに作れる拡張パーティションは１つだけです。拡張パーティションはプライマリパーティションとしてもカウントされます。もしディスクに拡張パーティションがあるなら、作れるプライマリパーティションは３つになります（３つのプライマリと１つの拡張で合計４つ）。論理パーティションの数は他のパーティションと違って制限がありません。Windows とのデュアルブートをするには Windows 本体をプライマリパーティションに含める必要があります。

ディスクをパーティション番号には、次のような法則があります。まずプライマリーパーティションを `sda1` から `sda2`、`sda3` と言う順番で番号を振っていき、拡張パーティションは `sda4` になります。`sda4` 上の論理パーティションが `sda5`, `sda6`,... という具合につづきます。

### GUID Partition Table

パーティションタイプは Primary しかありません。ディスクや RAID ボリュームごとに作れるパーティションの数には制限がありません。

### Btrfs パーティショニング

Btrfs はデータストレージデバイス全体を占有して MBR や GPT パーティションスキームを置き換えることができます。詳しい説明は Btrfs パーティショニングを見て下さい。

### GPT か MBR の選択

GUID Partition Table (GPT) は新しい、最新のパーティションスタイルです。古い Master Boot Record (MBR) システムを置き換えることを目指しています。GPT には、MS-DOS が使われていた時代にタイムスリップしてしまったような癖がある MBR に対してメリットがいくつかあります。フォーマッティングツールである fdisk (MBR) と gdisk (GPT) の最近の開発によって、同じくらい簡単に GPT や MBR を使うことができパフォーマンスを最適化できます。

要約すると:

- ブートローダに GRUB Legacy を使う場合、MBR を使うべきです。
- 古い BIOS を使う Windows (32ビット、64ビット両方) とのデュアルブートをするなら、MBR を使うべきです。
- BIOS の代わりに UEFI を使う64ビットの Windows とデュアルブートをするなら、GPT を使うべきです。
- 上の条件に当てはまらないなら、自由に GPT と MBR を選んでください。GPT の方が新しいので、ここでの推奨は GPT です。
- UEFI ブートではいつでも GPT を使うことが推奨されます。UEFI ファームウェアによっては UEFI-MBR ブートが出来ないからです。

## パーティション形態

ハードドライブをパーティショニングするのに厳格なルールはありませんが、以下に一般的なガイダンスを記します。どうパーティショニングするかは、使用できるディスク容量の制限のほかに、求められる柔軟性・スピード・セキュリティなどの理由で決定されます。ユーザーの決定はコンピュータを使う癖や条件によって様々なものになりえます。Arch Linux と Windows OS のデュアルブートを考えているのなら、Windows and Arch Dual Boot (日本語) を読んでください。

Warning: ブートローダのための領域を残しておくことを忘れないで下さい。MBR や GRUB-Legacy では問題になりませんでしたが、最近のパーティションスキームでは特別な、小さなパーティションが必要になることがあります。

### シングル root パーティション

このスキームが一番シンプルで、ほとんどの場合これで十分です。必要に応じてスワップファイルを作成することもでき、簡単にサイズを変更できます。一般的に、まず１つのパーティション `/` で初めて、それから、RAID や暗号化、共有メディアパーティションなどの目的にあわせてパーティションを分割するのは道理にかなっています。GPT でパーティションされた BIOS システムに GRUB をインストールするときは追加の BIOS boot パーティションが必要になるので注意してください。

### パーティションを分割する

パーティションをパス毎に分割することで異なるファイルシステムとマウントオプションが使えるようになります。メディアパーティションなどの場合、オペレーティングシステム間で共有できます。

### マウントポイント

パーティションを分割すると以下のマウントポイントを選ぶことができます、実際の必要にあわせて決めてください。

#### Root パーティション

root ディレクトリは階層のトップであり、プライマリファイルシステムがマウントされ他の全てのファイルシステムの幹になります。すべてのファイルとディレクトリは root ディレクトリ `/` の下に表示されます、それらが異なる物理デバイスに保存されている場合でも同様です。root ファイルシステムには、システムのブート・リストア・リカバー・リペアに必要なものがなければなりません。そのため、`/` 下の特定ディレクトリは分割パーティションになりえません。

`/` パーティション、または root パーティションは必須の、一番重要なパーティションです。このパーティションで他の全てのパーティションを置き換えることができます。

Warning: (`/boot` 以外の) 起動に必要なディレクトリはかならず同じパーティション `/` か initramfs によってユーザースペースの初期にマウントされるパーティションに配置されなくてはなりません。起動に必要なディレクトリ: `/etc` と `/usr` [1]。

#### /boot

`/boot` ディレクトリにはブートローダの設定ファイルや実行領域だけでなく、カーネルや ramdisk イメージも入ります。またカーネルがユーザースペースのプログラムを起動する前に使われるデータも保存されます。`/boot` は通常のシステムオペレーションには必要ありませんが、起動中やカーネルアップグレードの時（initial ramdisk を再生成する時）だけ使われます。

ソフトウェア RAID0 (ストライプ) をインストールするには `/boot` パーティションを分割して作る必要があります。

#### /home

`/home` ディレクトリにはユーザー設定ファイル（"ドットファイル"と呼ばれます）、キャッシュ、アプリケーションのデータ、メディアファイルが含まれます。

`/home` を分割することで `/` を別個にパーティションしなおすことができますが、分割してなくとも `/home` に触れずに Arch を再インストールすることはできます - 他のトップレベルディレクトリは削除する必要があり、それから pacstrap を実行することができます。

異なるディストリビューションのユーザー間で home ディレクトリを共有するべきではありません、なぜならソフトウェアのバージョンやパッチによって互換性がないことがあるからです。代わりに、メディアパーティションを共有したり、少なくとも、同じ`/home` パーティションにある別の home ディレクトリを使うなどしてください。

#### /var

`/var` ディレクトリにはスプールディレクトリ・ファイル、管理用のログデータ、pacman のキャッシュ、ABS ツリーなどの可変データが置かれます。キャッシングやロギングなどに使われるため頻繁に読み書きされます。分割したパーティションに配置することで、ログなどによってディスク容量が不足するのを回避できます。

`/usr` を読み込み専用でマウントするための選択肢としても存在します。歴史的に、（インストールやシステムメンテナンスと対照的に）システムオペレーションでは `/var`に置かれるものは全て `/usr` に書き出されます。

Note: `/var` には小さいファイルが多く入ります。もしパーティションを分割するなら、ファイルシステムタイプ（下を見て下さい）の選択ではこのことを考えて下さい。

#### /tmp

systemd によって `tmpfs` としてマウントされることで、デフォルトで分割パーティションになっています。

#### スワップ

swap パーティションは仮想メモリを提供します。スワップファイルを使うことも考えてください、パーティションを作るのに比べてパフォーマンスのオーバーヘッドがないばかりでなく、必要に応じてより簡単にリサイズできます。swap パーティションは基本的にオペレーションシステム間で共有することができますが、ハイバネーションが使われる場合はそうでありません。

Note: スワップパーティションサイズについての古い法則は suspend-to-disk を使う場合はあてはまりません。サスペンドメソッドはデフォルトで利用できるメモリの 40% のイメージを使います。TuxOnIce では、atomic コピーは圧縮して通常約 70% だけ使います。[2]

#### パーティションの大きさはどうすればいいですか？

Note:

- 以下はただの推奨事項です。パーティションのサイズに関する厳格なルールは存在しません。
- 可能であれば、それぞれのファイルシステムに 25% の容量を加えて、フラグメンテーションを防いだり将来の拡張のために余剰を残して下さい。

パーティションのサイズは個々人の好みによりますが、以下の情報が約に立つかもしれません:

/boot — 200 MB
  `/boot` パーティションに必要な容量は約 100 MB です。ただし複数のカーネル・ブートイメージを使うことを考えると、200 から 300 MB がベターでしょう。
/ — 15-20 GB
  root ファイルシステム (`/`) には基本的に `/usr` ディレクトリが含まれるので、必要な容量はインストールするソフトウェアの数によります。最近のハードディスクを使うユーザーのほとんどは 15-20 GB で十分だと思います。このパーティションにスワップファイルを保存する予定ならば、サイズをやや大きめにする必要があるでしょう。
/var — 8-12 GB
  `/var` ファイルシステムには ABS ツリーや pacman キャッシュなどのデータを収納します。パッケージのキャッシュを保持することはダウングレードをするときなどに役立つので、`/var` はサイズが増えていく傾向があります。特に pacman のキャッシュはシステムを拡張したりアップデートするときに増加します。ただし、容量が足らなくなったときは問題なくキャッシュを削除可能です。デスクトップシステムでは `/var` に必要な容量は 8-12GB ほどで、インストールされるソフトウェアの数によります。
/home — [不定]
  `/home` ファイルシステムは一般的にユーザーのデータ（ダウンロードしたファイル・マルチメディアなど）を置くところです。デスクトップシステムでは、`/home` はドライブの中で一番大きなファイルシステムにするのが普通です。
swap — [不定]
  歴史的に、物理メモリの容量の２倍のスワップパーティションを用意するべきという一般法則がありました。より大容量のメモリがコンピュータに積まれるようになり、この法則はすでに現状にあてはまりません。メモリが 512 MB 以下のマシンでは、2倍ルールが基本的に適合します。大容量のメモリ（1024MB 以上）を積んでいるときは、スワップパーティションは小さく、または作らなくてもかまわないでしょう。2GB 以上の物理 RAM を持っているなら、スワップパーティションがないほうが一般的に良いパフォーマンスを発揮すると思われます。
  Note: スワップパーティション・ファイルにハイバネートするつもりならば、Suspend and Hibernate (日本語)#スワップパーティション（ファイル）のサイズについて を見てください。
/data - [不定]
  全てのユーザーによって共有するファイルを置くために "data" パーティションをマウントしても良いでしょう。同じ目的で `/home` パーティションを使ってもかまいません。

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

- fdisk — Linux に含まれているターミナルパーティショニングツール。

  https://www.kernel.org/ || util-linux

- cfdisk — ncurses ライブラリを使ったターミナルパーティショニングツール。

  https://www.kernel.org/ || util-linux

Warning: cfdisk によって作成された最初のパーティションは、通常のセクター2048ではなくセクター63から始まります。SSD や最近のフォーマット (4k セクター) を使っているドライブでパフォーマンスが落ちることがあり、GRUB2 と一緒に使うと問題がおこることがあります。GRUB Legacy や Syslinux では問題ありません。

- gdisk — fdisk の GPT バージョン。

  http://www.rodsbooks.com/gdisk/ || gptfdisk

- cgdisk — cfdisk の GPT バージョン。

  http://www.rodsbooks.com/gdisk/ || gptfdisk

- sgdisk — gdisk のスクリプタブルバージョン。

  http://www.rodsbooks.com/gdisk/sgdisk-walkthrough.html || gptfdisk

- GNU Parted — ターミナルパーティショニングツール。

  https://www.gnu.org/software/parted/parted.html || parted

- GParted — GTK によるグラフィカルツール。

  http://gparted.sourceforge.net/ || gparted

- Partitionmanager — Qt によるグラフィカルツール。

  http://sourceforge.net/projects/partitionman/ || partitionmanager

- QtParted — Partitionmanager の類似ツール、AUR から利用可能。

  http://qtparted.sourceforge.net/ || qtparted

## パーティションアライメント

パフォーマンスや寿命を最適化するのに、正しいパーティションアライメントを設定することは重要です。これはファイルシステムレベルだけでなくハードウェアレベルでも全ての I/O 操作に決まったブロックがあるためです。アライメントの鍵は、使用しているハードウェアに応じて、特定のブロックサイズにあわせてパーティショニングすることです。パーティションがブロックサイズの倍数で始まるように整列されてない場合、パーティションの開始オフセットによって全てが歪むので、ファイルシステムのアライメントは無意味になってしまいます。

### ハードディスクドライブ

伝統的に、ハードドライブを扱うときには、読み書きするデータのシリンダー・ヘッド・セクタを指定していました (CHS アドレッシング)。これらは放射状に位置していて、ドライブヘッド（＝プラッタ）とデータの軸位置は別々でした。現在のロジカルブロックアドレッシングでは、ハードドライブ全体が１つの連続したデータストリームとして扱われており、セクタという言葉はアドレス指定できる一番小さな単位を示しています。

標準のセクタサイズは 512B ですが、最近の高容量なハードドライブはもっと大きな値、大抵は 4KiB を使っています。512B より大きい値を使うことは Advanced Format と呼ばれます。

### ソリッドステートドライブ

ソリッドステートドライブはフラッシュメモリを使用しているため、ハードドライブとは事情が大きく異なります。ランダムアクセスによる読み取りが可能な一方、消去 (書き換えとランダム書き込み) はブロック単位でしか行うことができません。さらに、消去ブロックサイズ (erase block size, EBS) は標準のブロックサイズよりもずっと大きくなっており、例えば 128KiB と 4KiB だったりするため、EBS の倍数にアライメントする必要があります。

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

過去、正しいアライメントをするにはパーティションの際に手動で計算して設定する必要がありました。最近のパーティションツールはほとんど自動的にパーティションアライメントを実行します:

- fdisk
- gdisk
- gparted
- parted

パーティションが整列しているか確認するには、以下のように `/usr/bin/blockdev` を使って確かめて下さい。'0' が帰ってくるならば、パーティションはアライメントされています:

    # blockdev --getalignoff /dev/<partition>
    0

## GPT を使う - 新しい方法

### Gdisk の使い方

`fdisk` と同じ機能を持つ GPT 用のツールである、`gdisk` によって、ほとんどの全ての SSD と互換性のある 2048 セクター (または 1024KiB) ブロックサイズベースの自動パーティションアライメントができます。GNU parted も GPT をサポートしていますが、パーティションのアライニングについてはあまりユーザーフレンドリーとは言えません。Arch のインストール ISO による環境には gdisk コマンドが含まれています。インストールした後に必要ならば、gptfdisk パッケージで gdisk を利用することができます。

gdisk の典型的な使用方法の概要:

- root であなたのドライブに対して `gdisk` を起動して下さい (disk-device は `/dev/sda` などに置き換えて下さい):

      # gdisk disk-device

- ドライブが新品の時や、やり直しをしたい場合は、空の GUID パーティションテーブル (GPT) を `o` コマンドで作成します。
- `n` コマンドで新しいパーティションを作ります (プライマリ/最初のパーティション)。
- 新規パーティションの場合、gdisk は一番高いアライメントを選択します。そうでない場合は、全てのパーティションオフセットを分ける2つのうち大きい方を選択します。
- 2048番目より前のセクタから開始するよう選択したときは gdisk は自動的に2048番目のディスクセクタからパーティションが始まるように移動します。2048セクタのアライメントを確実にするためです (1セクタは 512B なので、どんな SSD の NAND 消去ブロックにも丁度合う 1024KiB アライメントになります)。
- `+x{M,G}` 形式を使ってパーティションを x メビバイト・ギガバイトまで拡張します。アライメントのサイズ (1024kiB) の倍数でないサイズを選んだ場合、gdisk はパーティションを一番近い倍数にまで縮小させます。例えば、15 GiB のパーティションを作りたい場合は、`+15G` と入力してください。残り容量全て使うときは、エンターだけ押すか、`+0` と入力します。
- パーティションの type id を選択します、ほとんどの場合はデフォルトの `Linux filesystem` (コード `8300`) で問題ありません。`L` を押せばコードの一覧が表示されます。LVM を使うつもりならば `Linux LVM` (`8e00`) を選択してください。
- 同じようにして他のパーティションも割り振ります。
- テーブルをディスクに書き込み `w` コマンドで終了します。
- ファイルシステムで新しいパーティションをフォーマットしてください。

Note:

- BIOS 環境で GPT でパーティションされたディスクから起動するとき、GRUB を使ってディスクを起動する場合は、出来る限りディスクの最初に、ファイルシステムがなくてパーティションタイプが `BIOS boot` か `bios_grub` (gdisk タイプコード `EF02`) の BIOS boot partition を作成する必要があります。Syslinux ではこの `bios_grub` パーティションを作る必要はありませんが、`/boot` パーティションは分割して、(gdisk を使って) パーティションの `Legacy BIOS Bootable partition` 属性を有効にしなくてはなりません。
- GRUB Legacy は GPT をサポートしていません、BURG, GRUB, Syslinux を使って下さい。
- BIOS モード (32ビットの Windows 全てと64ビットの Windows XP でだけ使えます) で Windows (XP, Vista, 7) とのデュアルブートをするつもりならば、Windows が GPT ディスクからの起動をサポートしていないので GPT を使ってはいけません！下で記述している MBR でのパーティションと BIOS モードでのブート方法を使う必要があります。この制限は、UEFI モードで最近の64ビットの Windows を起動する場合はあてはまりません。

## MBR を使う - レガシーな方法

MBR を使う場合、パーティションテーブルを編集するためのユーティリティは fdisk と呼ばれています。最近のバージョンの fdisk はデフォルトの表示単位にシリンダーを使用する古いシステムのサポートや、MS-DOS との互換性をデフォルトで廃止しています。最新の fdisk は自動的に全てのパーティションを2048セクタ (1024 KiB) にアライメントをするため、SSD メーカーによって使用されている EBS サイズ全てで問題なく整列されます。つまりデフォルト設定で正しいアライメントが行われます。

昔の fdisk は、デフォルトの表示単位にシリンダーを使っていて、SSD のアライメントと干渉する MS-DOS との互換性も残っていました。そのため、2008-2009年あたりのインターネットのガイドを調べたら、大げさに書かれているのが見て取れると思います。最新の fdisk では、物事はもっとシンプルになり、そのことはこの記事にも反映されています。

### Fdisk の使い方

- あなたのドライブを指定して `fdisk` を root で起動します (disk-device は `/dev/sda` などに置き換えて下さい):

      # fdisk disk-device

- ドライブが新品の時や、やり直しをしたい場合は、空の DOS パーティションテーブルを `o` コマンドで作成します。
- `n` コマンドで新しいパーティションを作ります (プライマリ/最初のパーティション)。
- `+xG` 形式を使ってパーティションを x ギガバイトまで拡張します。例えば、15 GiB のパーティションを作りたい場合は、`+15G` と入力してください。
- `t` コマンドで、パーティションのシステム ID を Linux のデフォルトタイプ (`type 83`) から望ましいタイプに変更してください。これは任意のステップであり、スワップ、NTFS、LVM などの異なるタイプのパーティションを作りたいときにしてください。`l` コマンドを使うことで利用できるパーティションタイプを全て一覧することができます。
- 同じようにして他のパーティションも割り振ります。
- `w` コマンドでテーブルをディスクに書き込み終了します。
- ファイルシステムで新しいパーティションをフォーマットしてください。

## 参照

- Wikipedia:ja:パーティション
- Manually Partitioning Your Hard Drive with fdisk
- Partition Alignment (サンプル付き)

Category:

- File systems (日本語)