# 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: 以下はただの推奨事項です。パーティションのサイズに関する厳格なルールは存在しません。

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

/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` パーティションを使ってもかまいません。

Note: 可能であれば、それぞれのファイルシステムに追加の 25% の容量を加えて、フラグメンテーションを防いだり将来の拡張のために余剰を残して下さい。

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

- 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

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

  http://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

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

パフォーマンスや寿命を最適化するのに、正しいパーティションアライメントを設定することは重要です。アライメントのキーポイントは SSD の EBS (erase block size) にあわせてパーティショニングすることです。

Note: EBS はベンダーによって異なります。

パーティションが EBS (例：512KiB) の倍数で始まるように整列されていないときは、パーティションの開始オフセットによってすべてがゆがむので、ファイルシステムのアライメントは無意味な作業です。伝統的に、ハードドライブを扱うときには、読み書きするデータのシリンダー・ヘッド・セクタを指定していました。これらは放射状に位置していて、ドライブヘッド（＝プラッタ）とデータの軸位置は別々でした。LBA (logical block addressing) では、このようなことはありません。現在では、ハードドライブ全体が１つの連続したデータストリームとして扱われています。

## 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` コマンドで新しいパーティションを作ります (プライマリ/最初のパーティション)。
- Assuming the partition is new, gdisk will pick the highest possible alignment. Otherwise, it will pick the largest power of two that divides all partition offsets.
- If choosing to start on a sector before the 2048th gdisk will automatically shift the partition start to the 2048th disk sector. This is to ensure a 2048-sectors alignment (as a sector is 512B, this is a 1024KiB alignment which should fit any SSD NAND erase block).
- `+x{M,G}` 形式を使ってパーティションを x メビバイト・ギガバイトまで拡張します。アライメントのサイズ (1024kiB) の倍数でないサイズを選んだ場合、gdisk はパーティションを一番近い倍数にまで縮小させます。例えば、15 GiB のパーティションを作りたい場合は、`+15G` と入力してください。
- パーティションの 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 を使う - レガシーな方法

Using MBR, the utility for editing the partition table is called fdisk. Recent versions of fdisk have abandoned the deprecated system of using cylinders as the default display unit, as well as MS-DOS compatibility by default. The latest fdisk automatically aligns all partitions to 2048 sectors, or 1024 KiB, which should work for all EBS sizes that are known to be used by SSD manufacturers. This means that the default settings will give you proper alignment.

Note that in the olden days, fdisk used cylinders as the default display unit, and retained an MS-DOS compatibility quirk that messed with SSD alignment. Therefore one will find many guides around the internet from around 2008-2009 making a big deal out of getting everything correct. With the latest fdisk, things are much simpler, as reflected in this guide.

### 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` コマンドでテーブルをディスクに書き込み終了します。
- ファイルシステムで新しいパーティションをフォーマットしてください。

## 参照

- Ext4#Creating ext4 partitions from scratch
- Wikipedia:ja:パーティション
- Manually Partitioning Your Hard Drive with fdisk

Category:

- File systems (日本語)