「パーティショニング」の版間の差分
(→パーティションスキーム: 同期) |
(TranslationStatus) |
||
416行目: | 416行目: | ||
* [https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-and-gpt-faq Microsoft の Windows と GPT FAQ] |
* [https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-and-gpt-faq Microsoft の Windows と GPT FAQ] |
||
* [https://www.thomas-krenn.com/en/wiki/Partition_Alignment Partition Alignment] (例付き) |
* [https://www.thomas-krenn.com/en/wiki/Partition_Alignment Partition Alignment] (例付き) |
||
+ | |||
+ | {{TranslationStatus|Partitioning|2022-08-03|739784}} |
2022年8月3日 (水) 05:33時点における版
パーティショニングとは二次記憶装置上に1つ、あるいは複数の領域を作成して、それぞれの領域を分離して管理できるようにすることです。
ディスク全体を1つのパーティションに割り当てることもできますし、複数のパーティションに割り当てることもできます(デュアルブートする場合やスワップパーティションを作る場合、オーディオファイルやビデオファイルなどのデータを論理的に分けておきたい場合に便利です)。パーティションスキームは、Master Boot Record (MBR) や GUID Partition Table (GPT) などのパーティションテーブルに格納されています。
パーティションテーブルはパーティショニングツールを使うことで作成したり変更したりできます。Arch Linux で利用できるパーティショニングツールは #パーティショニングツール セクションにリストアップされています。
通常、パーティションにはファイルシステムが直接含まれています。これは、パーティション上にファイルシステムを作成する(つまり、パーティションをフォーマットする)ことで可能です。あるいは、パーティションには LVM、ブロックデバイス暗号化、RAID を含ませることもでき、最終的にこれらは、ファイルを格納できるデバイスファイルを提供します(あるいは、デバイスをさらに積み重ねることもできます)。
ブロックデバイス(例えば ディスク、パーティション、LUKS デバイス、LVM 論理ボリューム、RAID アレイ)のうち、マウント可能なファイルシステムを直接含んでいるものは、ボリュームと呼ばれます。
パーティションテーブル
主に2種類のパーティションテーブルが利用できます。以下の #Master Boot Record (MBR) セクションと #GUID Partition Table (GPT) セクションで、どちらを選択すればよいかについての議論と共に説明されています。3つ目に、あまり一般的でない代替品としてパーティションレスディスクがあり、これも以下のセクションで説明されています。
ブロックデバイスのパーティションテーブルを表示するにはパーティショニングツールを使ってください。
Master Boot Record
Master Boot Record (MBR) は、ストレージデバイスの最初の512バイトです。これには、オペレーティングシステムのブートローダーとストレージデバイスのパーティションテーブルが含まれています。BIOS システムのブートプロセスで重要な役割を果たします。MBR の構造については、Wikipedia:Master boot record#Disk partitioning を参照してください。
Master Boot Record (bootstrap code)
MBR の先頭440バイトは、bootstrap code 領域 です。BIOS システムでは、通常、MBR にブートローダーの最初のステージが含まれています。bootstrap code は、dd を使ってバックアップしたり、バックアップから復元したり、消去したりすることができます。
Master Boot Record (partition table)
MBR パーティションテーブル(またの名を DOS パーティションテーブル、MS-DOS パーティションテーブル)には、3つのパーティションタイプがあります:
- Primary (プライマリ)
- Extended (拡張)
- Logical (論理)
プライマリパーティションは起動可能にすることができ、ディスクや RAID ボリュームごとに4つまで作成できます。MBR パーティションテーブルで5つ以上のパーティションが必要になった場合、プライマリパーティションのうち1つを拡張パーティションに置き換えて、その中に論理パーティションを作成する必要があります。
拡張パーティションは論理パーティションの入れ物と考えることができます。1つのハードディスクには2つ以上の拡張パーティションを格納することはできません。拡張パーティションはプライマリパーティションとしてもカウントされるので、ディスクに1つの拡張パーティションが存在している場合、追加できるプライマリパーティションは3つだけです(つまり、3つのプライマリパーティションと1つの拡張パーティション)。拡張パーティション内に存在できる論理パーティションの数に制限はありません。Windows とデュアルブートするシステムでは、Windows をプライマリパーティションに格納する必要があります。
sda1 から sda3 をプライマリパーティションとし、sda4 を拡張パーティションとするのが慣例です。sda4 上の論理パーティションは、sda5、sda6 などのようになります。
GUID Partition Table
GUID パーティションテーブル (GPT) とは、パーティションスキームの1つであり、Unified Extensible Firmware Interface 規格の一部です。GPT では、パーティションとパーティションタイプを定義するためにグローバル一意識別子(GUID)が使われます(Linux の世界では UUID が使用されます)。GPT は Master Boot Record パーティショニングスキーム方式の後継として設計されました。
GUID Partition Table ディスクの先頭には、GPT を検出できないソフトウェアから保護するための protective Master Boot Record (PMBR) が存在します。通常の MBR のような protective MBR には、bootstrap code 領域が存在し、対応しているブートローダで BIOS/BPT ブートを行うために利用できます。
GPT か MBR の選択
GUID Partition Table (GPT) は新しい、現代的なパーティションスタイルです。古い Master Boot Record (MBR) システムを置き換えることを目指しています。GPT には、MS-DOS が使われていた時代にタイムスリップしてしまったような癖がある MBR に対してメリットがいくつかあります。フォーマッティングツールの最近の開発によって、GPT と MBR はどちらも信頼性、パフォーマンスを同じくらいの簡単さで実現できるようになりました。
GPT か MBR を選択する際に考慮すべきポイントは:
- レガシー BIOS を使って(32ビットと64ビットに関わらず) Windows とデュアルブートする場合、MBR スキームを使用する必要があります。
- BIOS モードではなく UEFI モードで64ビット Windows とデュアルブートする場合、GPT スキームを使用する必要があります。
- 古いハードウェア(特に、古いノートパソコン)上にインストールする場合、MBR を選択することを検討してください。そのハードウェアの BIOS が GPT に対応していないかもしれないからです(しかし、#古い BIOS をだまして GPT から起動させる に解決策があります)。
- 2 TiB よりも大きいディスクをパーティショニングする場合、GPT を使う必要があります。
- UEFI ブートでは常に GPT を使うことが推奨されます。一部の UEFI 実装は UEFI モードでの MBR からの起動をサポートしていないからです。
- 上記のどれにも当てはまらない場合、GPT と MBR から自由に選んでください。GPT のほうがよりモダンなので、この場合、GPT を選ぶことが推奨されます。
MBR に対する GPT のメリットは:
- GPT はユニークなディスク GUID と、各パーティションごとにユニークなパーティション GUID(PARTUUID)を提供します。これは、パーティションやディスクを参照するための、ファイルシステム依存に依存しない良い手段です。GUID は、systemd 対応の initramfs で利用できる Discoverable Partitions Specification の前提条件です。
- GPT は、ファイルシステムに依存しないパーティション名を提供します(PARTLABEL)。
- GPT では任意の数のパーティションを作成できます(パーティションテーブルに割り当てられた領域のサイズに依存します)。拡張パーティションや論理パーティションは必要ありません。デフォルトで、GPT には 128 個のパーティションを定義できるスペースが確保されています。パーティションテーブルにより多くのスペースを割り当てることで、より多くのパーティションを定義できるようになります(この機能をサポートしているツールは今の所 gdisk しか知られていません)。
- GPT では、セクタ番号を格納するために64ビットの LBA を使用します(アドレシング可能な最大ディスクサイズは 2 ZiB です)。MBR では、ドライブごとに 2 TiB までしかアドレシングできません。[1]
- GPT では、バックアップのヘッダとパーティションテーブルがディスクの末尾に格納されており、プライマリのヘッダが破損してしまった場合にバックアップを使って復元を試みることができます。
- CRC32 checksum により、ヘッダとパーティションテーブルのエラーと破損を検出します。
#パーティショニングツール のセクションには、GPT や MBR のテーブルを作成/変更するためにどのツールを利用できるかを示す表があります。
パーティションレスディスク
パーティションレスディスク(別名 superfloppy)とは、パーティションテーブルを持たないストレージデバイスのことであり、1つのファイルシステムがストレージデバイス全体を占めます。パーティションレスデバイスに存在するブートセクタは、volume boot record (VBR) と呼ばれます。
Btrfs パーティショニング
Btrfs はデータストレージデバイス全体を占有して、MBR や GPT パーティションスキームを置き換えることができます。詳しい説明は Btrfs#パーティショニング を見て下さい。
パーティションスキーム
ハードドライブをパーティショニングするのに厳格なルールはありませんが、以下に一般的なガイダンスを記します。ディスクのパーティショニングスキームは、使用できるディスク容量の制限のほかに、求められる柔軟性、スピード、セキュリティなどの理由で決定されます。ユーザーの決定はコンピュータを使う癖や条件によって様々なものになりえます。Arch Linux と Windows OS のデュアルブートを考えているのなら、Windows と Arch のデュアルブートを読んでください。
シングルルートパーティション
このスキームが一番シンプルで、ほとんどの場合これで十分です。必要に応じてスワップファイルを作成することもでき、簡単にサイズを変更できます。一般的に、まず1つのパーティション /
で始めて、それから、RAID や暗号化、共有メディアパーティションなどの目的にあわせてパーティションを分割するのは道理にかなっています。
パーティションを分割する
パーティションをパス毎に分割することで異なるファイルシステムとマウントオプションが使えるようになります。メディアパーティションなどの場合、オペレーティングシステム間で共有できます。
パーティショニングの際に利用できるレイアウト例を以下に挙げています。以下のサブセクションでは、独立したパーティションに配置して /
下のマウントポイントにマウントできるディレクトリのいくつかを詳細に説明しています。これらのディレクトリの内容に関する完全な説明は file-hierarchy(7) を見てください。
/
ルートディレクトリはディレクトリ階層のトップです。このディレクトリでは主要なファイルシステムがマウントされ、他の全てのファイルシステムの幹になります。すべてのファイルとディレクトリはルートディレクトリ /
の下に現れます、それらが異なる物理デバイスに保存されている場合でも同様です。ルートファイルシステムには、システムの起動、修復、回復、修繕に必要なものがなければなりません。そのため、/
下の特定のディレクトリは、分割されたパーティションになりえません。
/
パーティション(ルートパーティション)は必須の、一番重要なパーティションです。このパーティションで他の全てのパーティションを置き換えることができます。
/
には伝統的に /usr
ディレクトリが含まれており、インストールされているソフトウェアの量によっては非常に肥大化することがあります。最近のハードディスクでは、ほとんどのユーザにとって 15 から 20 GiB あれば十分でしょう。スワップファイルをここに保存するつもりであれば、パーティションのサイズをもっと大きくする必要があるかもしれません。
/boot
/boot
ディレクトリには、カーネルや RAM ディスクのイメージ、ブートローダの設定ファイルやブートローダのステージが含まれています。また、このディレクトリには、カーネルがユーザ空間のプログラムを実行し始める前に使用されるデータも格納されています。/boot
は通常のシステム運用では必要ありませんが、ブート時やカーネルのアップグレード(初期 RAM ディスクの生成)の際に必要になります。
EFI システムパーティションを /boot
として使用していない場合、/boot
の推奨サイズは 200 MiB です。EFI システムパーティションを /boot
として使用している場合、少なくとも 300 MiB 以上にすることが推奨されます。
/home
/home
ディレクトリには、ユーザー固有の設定ファイル、キャッシュ、アプリケーションのデータ、メディアファイルが含まれます。
/home
を分割することで /
を別個にパーティションしなおすことができますが、分割してなくとも /home
に触れずに Arch を再インストールすることはできます - 他のトップレベルディレクトリは削除する必要があり、それから pacstrap を実行することができます。
異なるディストリビューションのユーザー間で home ディレクトリを共有するべきではありません、なぜならソフトウェアのバージョンやパッチによって互換性がないことがあるからです。代わりに、メディアパーティションを共有したり、少なくとも、同じ /home
パーティションにある別の home ディレクトリを使うなどしてください。このパーティションのサイズは様々です。
/var
/var
ディレクトリには、スプールディレクトリ・ファイル、管理用のログデータ、pacman のキャッシュなどの可変データが置かれます。キャッシングやロギングなどに使われるため頻繁に読み書きされます。分割したパーティションに配置することで、ログなどによってディスク容量が不足するのを回避できます。
/usr
を読み込み専用でマウントするための選択肢としても存在します。歴史的に、(インストールやシステムメンテナンスと対照的に)システムオペレーションでは /var
に置かれるものは全て /usr
に書き出されます。
/var
には、他のデータに混じって pacman のキャッシュが含まれます。パッケージのアップグレードによってシステムが不安定なった際に、保存されている以前のバージョンのパッケージにダウングレードしなければならなくなった場合に備えて、これらのパッケージを保管しておくと便利です。pacman のキャッシュは、システムが拡張されたりアップデートされたりするたびに大きくなります。しかし、スペースの問題が生じた際には、キャッシュを安全に削除できます。デスクトップのシステムでは、/var
に 8 から 12 GiB 確保すれば十分なはずです(ソフトウェアをどれだけインストールするかに依りますが)。
/data
「データ」パーティションをマウントして、すべてのユーザが共有する様々なファイルを格納することができます。/home
パーティションをこの用途に使うこともできます。このパーティションのサイズは様々です。
スワップ
スワップは、仮想メモリとして使用されるディスク領域を提供するファイル、またはパーティションです。スワップファイルとスワップパーティションのパフォーマンスは同等ですが、スワップファイルのほうが必要に応じてサイズを変更しやすいです。スワップパーティションは基本的にオペレーションシステム間で共有することができますが、ハイバネーションが使われる場合はそうでありません。
歴史的に、スワップパーティションのサイズは物理 RAM のサイズの2倍にするという一般的なルールがありました。しかし、コンピュータがより多くのメモリを搭載するようになってから、このルールは時代遅れになりました。例えば、512 MiB の RAM を搭載する平均的なデスクトップマシンでは、通常「2倍ルール」は適切です。十分な量の RAM (1024 MiB 以上)が利用できる場合は、スワップパーティションを小さくしてもよいでしょう。
ハイバネート(suspend to disk)する場合、RAM と同じサイズのスワップパーティションを作成することが推奨されます。カーネルは、スワップ領域に収まるように suspend-to-disk イメージを圧縮しようとしますが、スワップ領域のサイズが RAM よりも大幅に小さい場合にハイバネートが成功する保証はありません。詳細は サスペンドとハイバネート#ハイバネーション を見てください。
レイアウト例
以下の例では、/dev/sda
をディスクの例として使い、1番目のパーティションとして /dev/sda1
が存在するとします。パーティショニングするディスクが NVMe ディスク(例えば、/dev/nvme0n1p1
から始まるパーティションを持つ /dev/nvme0n1
)であったり、SD カードや eMMC ディスク(例えば、/dev/mmcblk0p1
から始まるパーティションを持つ /dev/mmcblk0
)であったりすると、ブロックデバイスの命名規則が異なります。詳細は デバイスファイル#ブロックデバイスの名前 を見てください。
UEFI/GPT レイアウト例
インストールされたシステムでのマウントポイント | パーティション | パーティションタイプ GUID | パーティション属性 | 推奨サイズ |
---|---|---|---|---|
/boot または /efi 1
|
/dev/sda1
|
C12A7328-F81F-11D2-BA4B-00A0C93EC93B : EFI システムパーティション
|
少なくとも 300 MiB | |
[SWAP]
|
/dev/sda2
|
0657FD6D-A4AB-43C4-84E5-0933C84B4F4F : Linux スワップ
|
512 MiB 以上 | |
/
|
/dev/sda3
|
4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709 : Linux x86-64 root (/)
|
デバイスの残りの領域 |
BIOS/MBR レイアウト例
インストールされたシステムでのマウントポイント | パーティション | パーティションタイプ ID | ブートフラグ | 推奨サイズ |
---|---|---|---|---|
[SWAP]
|
/dev/sda1
|
82 : Linux スワップ
|
No | 512 MiB 以上 |
/
|
/dev/sda2
|
83 : Linux
|
Yes | デバイスの残りの領域 |
N/A | 未割り当て領域2 | N/A | N/A | ディスクの末尾に少なくとも 16.5 KiB |
BIOS/GPT レイアウト例
インストールされたシステムでのマウントポイント | パーティション | パーティションタイプ GUID | パーティション属性 | 推奨サイズ |
---|---|---|---|---|
なし | /dev/sda1
|
21686148-6449-6E6F-744E-656564454649 : BIOS ブートパーティション3
|
1 MiB | |
[SWAP]
|
/dev/sda2
|
0657FD6D-A4AB-43C4-84E5-0933C84B4F4F : Linux スワップ
|
512 MiB 以上 | |
/
|
/dev/sda3
|
4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709 : Linux x86-64 root (/)
|
デバイスの残りの領域 |
- ブートローダが、カーネルと initramfs のイメージのある
/efi
のファイルシステム(とそこにあるファイル)にアクセスできる場合、ESP は/efi
にマウントすることができます。詳細は EFI システムパーティション#典型的なマウントポイント と Arch ブートプロセス#ブートローダーセクションにある警告を見てください。 - 512バイトセクタ33個(16.5 KiB)以上のパーティショニングされていない領域をディスクの末尾に作成します。これは、将来的に GPT に変換できるようにするためのものです。この領域は、バックアップ GPT ヘッダのために必要です。すべての MBR ディスクに対してこのようなパーティショニングされていない領域を確保することが推奨されます。
- BIOS ブートパーティションは、GPT ディスクから GRUB を BIOS ブートする場合にのみ必要です。
/boot
とは関係ありません。このパーティションはファイルシステムでフォーマットしてはいけませんし、マウントしてもいけません。
ツール
パーティショニングツール
以下のプログラムは、デバイスのパーティションテーブルとパーティションを作成/操作するために使用されます。使用する正確なコマンドはリンク先の記事を見てください。
この表は、あなたのニーズにあうユーティリティを選ぶ際に役立ちます:
MBR | GPT | |
---|---|---|
対話的 | fdisk parted |
fdisk gdisk parted |
疑似グラフィック | cfdisk | cfdisk cgdisk |
非対話的 | sfdisk parted |
sfdisk sgdisk parted |
グラフィカル | GParted gnome-disk-utility partitionmanager |
GParted gnome-disk-utility partitionmanager |
fdisk
fdisk とその関連するユーティリティは fdisk の記事で説明されています。
GPT fdisk
gdisk とその関連するユーティリティは gdisk の記事で説明されています。
- GPT fdisk (gptfdisk)
- gdisk(8) – 対話的な GUID partition table (GPT) 操作プログラム。
- cgdisk(8) – Curses ベースの gdisk 亜種。
- sgdisk(8) – スクリプト可能な gdisk 亜種。
GNU Parted
これらのツールは GNU Parted の記事で説明されています。
- GNU Parted — ターミナルパーティショニングツール。
- GNOME Disks — GNOME のためのディスク管理ユーティリティ。
- GParted — ディスクのパーティションをグラフィカルに管理するGTK パーティションエディタ。
- KDE Partition Manager — ディスクデバイス、パーティション、そしてファイルシステムを管理する KDE のためのユーティリティプログラム。
バックアップ
- fdisk はパーティションテーブルのバックアップを作成できます。fdisk#パーティションテーブルのバックアップとリストア を見てください。
- GPT fdisk は、protective MBR、メイン GPT ヘッダ、バックアップ GPT ヘッダ、そしてパーティションテーブルのコピー一つからなるバイナリバックアップを作成できます。GPT fdisk#パーティションテーブルのバックアップとリストア を見てください。
リカバリ
- GPT fdisk — (ディスクの先頭にある)プライマリ GPT ヘッダを(ディスクの末尾にある)セカンダリ GPT ヘッダから復元できるパーティショニングツール(その逆も可)。
- TestDisk — MBR と GPT の両方の失われたパーティションを復元できるユーティリティ。
パーティションアライメント
経験則として、パーティションの開始位置とサイズをメビバイト単位に揃えるというものがあります。Advanced Format#パーティションのアライメント を見てください。
GPT カーネルサポート
カーネル構成の CONFIG_EFI_PARTITION
オプションは、カーネルでの GPT サポートを有効にします(名前は EFI PARTITION ですが)。このオプションはカーネルに組み込まれている必要があり、ロード可能なモジュールとしてコンパイルされてはなりません。このオプションは、GPT ディスクがデータストレージのみに使用され、起動には使用されない場合でも必要です。このオプションは、すべての Arch の 公式にサポートされているカーネル でデフォルトで有効になっています。カスタムカーネルの場合は、CONFIG_EFI_PARTITION=y
を実行してこのオプションを有効にします。
トラブルシューティング
古い BIOS をだまして GPT から起動させる
一部の古い BIOS (2010年以前のもの) は、ブートセクターを解析しようとし、ブート可能な MBR パーティションが含まれていない場合はブートを拒否します。これは、このディスクでGPTを使用する場合に問題になります。これは、 BIOS の観点から、タイプee
の起動不可能な MBR パーティションが1つだけ含まれているためです(つまり、保護 MBR パーティション) fdisk -t mbr /dev/sda
を使用して、保護MBRエントリを起動可能としてマークできます。これは一部の BIOS で機能します。ただし、 UEFI 仕様では、保護 MBR パーティションエントリを起動できないように禁止されており、 UEFI ベースのボードはレガシーブートモードでもこれを考慮します。したがって、これは、最新の UEFI ベースのボードと起動可能な MBR パーティションの検索を要求する古い BIOS の両方で起動することになっている GPT ベースの USB フラッシュドライブを作成する場合に重要です。 fdisk や gdisk などの従来のツールを使用してこの問題を解決することはできませんが、両方の種類の BIOS に適した偽の MBR パーティションエントリをバイトシーケンスとして手動で作成することはできます。
以下のコマンドは、2番目の MBR パーティションスロットを上書きし、タイプ0 (つまり未使用) の起動可能なパーティションを追加して、デバイスの最初のセクターのみをカバーします。 GPT や、通常は保護 MBR パーティションを含む最初の MBR パーティションエントリには干渉しません。
# printf '\200\0\0\0\0\0\0\0\0\0\0\0\001\0\0\0' | dd of=/dev/sda bs=1 seek=462
最終的に次のようになります:
# fdisk -t mbr -l /dev/sda
Disk /dev/sda: 232.9 GiB, 250059350016 bytes, 488397168 sectors Disk model: ST3250820AS Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/sda1 1 488397167 488397167 232.9G ee GPT /dev/sda2 * 0 0 1 512B 0 Empty Partition table entries are not in disk order.
ファームウェアRAIDが有効なときにドライブが表示されない
SATA や NVMe ドライブがファームウェアセットアップで表示されるのに、Linux (例えば fdisk -l
) に表示されない場合、コントローラがファームウェア RAID モードになっている可能性があります。
NVMe の場合、journal に以下のように表示されるはずです。
kernel: ahci 0000:00:17.0: Found 1 remapped NVMe devices. kernel: ahci 0000:00:17.0: Switch your BIOS from RAID to AHCI mode to use them.
解決方法は、ファームウェアセットアップ画面を開いて SATA コントローラオペレーションモード を RAID から AHCI に変更することです。設定は異なる名前になっていたり、コントローラごとやポートごとの設定があるかもしれないことに注意してください。