パーティション

ここで記載する内容は最悪操作したディスク内の OS とデータをなくします。

試す場合、まずは破損しても良い環境で行って下さい。


パーティションを操作する場合

OS をハードディスク・SSD から起動した場合、

ブートローダーや fstab などによって
起動 OS のパーティションと swap は固定マウントされ動かす事ができません。

 

USB メモリや DVD などから ISO をライブ起動する場合は

swap 以外はマウントされないので、この状態での操作が推奨されます。

swap もオフにして移動などが可能です。

 

運営者は GUI 操作として GParted がおすすめです。

GParted は確実なディスク情報を提供し、操作を行う事ができます。

ただしできるだけ新しいバージョンを使って下さい。
古いバージョンは物理的にパーティションのコピーを行うため遅く、
基本領域と拡張領域間のコピーは破損させる場合があります。

新しいバージョンはこれらを e2image を使用して行います。

旧バージョンで1時間ほどかかる操作が

新バージョンでは10分〜20分位になります。

また新バージョンでディスク破損を経験した事はありません。

 

GParted Live などはメモリにシステムを常駐させます。(Frugal インストール)

ハードディスク・SSD 起動でもパーティションを動かす事が可能です。


デスクトップ環境のパーティション割当

通常デスクトップ環境で使われるマウントポイントは次になるでしょう。

  • /
  • /boot
  • /home
  • swap

他に /usr や /var なども可能な場合がありますが、

これは1ディスクのデスクトップ環境で使用する場合、意味がないでしょう。

特に個人用途で用いる場合は、パーティションを細かく分ける必要はありません。


/

Linux 本体。それ以外のマウントポイントがある場合は、

それらを別のパーティションで使えるようにしますが、

それ以外のディレクトリ・フォルダはこのパーティションに入ります。


/boot

ブートローダーを専用パーティションに分ける事があります。

適切な場所に置く事で、GRUB 2 のステージ 2 本体を固定配置できるため、

/ のパーティションを動かしても起動できなくなる恐れがなくなります。

この理由からマルチブートを行う場合、/boot をつくるのであれば、
MBR へブートローダーを生成する OS で割り当てを行うのが理想でしょう。

それ以外は /boot を生成しなくても影響はありません。

(ブートローダーを2つ経由して起動する2段階起動にする場合でも)


UEFI の場合は、EFI 専用のパーティションや
GRUB が使用する bios_grub フラグのパーティションもあるため、

この辺が変わってくる事にご注意下さい。


GRUB 1(GRUB Legacy)や GRUB4DOS は MBR のみに本体を置くため、

/ 割り当てでパーティションを動かしても起動が可能です。


/home

openSUSE は初期状態で /home を個別のパーティションに割り当てます。

サーバではユーザー別の容量制限を設ける意味で、これを割り当てます。

容量が大きくないディスクではこれを作らない方が良い事もあります。


システムとデータを分ける事によってファイルの扱いにメリットがあります。

/home を割り当てず、NTFS などで Windows・OS X と共有する場合もあります。

昔は FAT32 にしていましたが、
FAT には MS-DOS からの仕様でファイル名を変える場合があります。

現在は NTFS の方が無難に使用できるでしょう。


複数ディスクがある場合、/home やデータ領域は

/ とは異なる領域にあるのは、ヘッダの動きを少なくするため、

ディスクアクセスの高速化になり、効果的です。


swap

Linux では仮想メモリ領域である swap を専用のパーティションに割り当てます。

生成する場合は通常実際のメモリ量と同じ容量からその倍の容量です。

2GB のメモリがある場合、swap は 2GB〜4GB が理想になります。

 

ハードディスクでは Linux が一つの場合 / の前に swap を置くのが理想です。

/ と swap の距離が近いため、ヘッダの動きが少なくなり、
高速動作を期待できるためです。

複数ディスクがある場合、/ とは異なるディスクの swap を使用するように

fstab を設定すると効果的です。

 

メモリが十分に大きい場合は swap を使われる可能性は低くなります。

また SSD や USB メモリ・SD カード などではアクセス寿命を考慮し、

ディスクアクセスを軽減する事があります。

これらから、あえて swap パーティションを作らない事もあります。

また、Ubuntu 17.04 以降などは swap パーティションを作る代わりに

起動パーティションへ swap ファイルを生成します。

 

マルチブートにする場合、インストール時に swap を指定すると

フォーマットする事で UUID を変えてしまう事があります。

swap を指定しないでインストールし、
インストール後に fstab を編集するのが一つの解決策です。


GPT

GUID パーティション テーブル。
2T バイトを超えるディスクは GPT にする必要があります。

UEFI の一機能として定められました。

MBR 互換領域もあり、MBR にしか対応していないアプリ等でも認識します。

 

Intel CPU 搭載の Mac が UEFI と GPT を採用しています。

Windows でも Windows 7 プレインストールパソコンの途中から

UEFI と GPT に対応するパソコンになってきています。

 

パーティション数

標準で 128 パーティションに対応しています。

パーティションテーブルへの空き領域割り当てで
更に大きなパーティションも扱う事ができます。

 

MBR のような拡張領域は必要ありません。


MBR

MS-DOS 時代から使われているパーティションの分け方で、

数年前まで BIOS と共に主流で使われていました。


パーティションの分け方

sda でハードディスク・SSD が認識されている場合、

MBR での割り当ては次のようになります。

  • sda1〜sda4 - 基本領域
    拡張領域を作成するとその中を論理領域で分割できます。
    通常並びは変わりません。
  • sda5〜 - 論理領域
    パーティションを削除すると、番号が変更されます。

論理領域の番号が変わっても起動に影響がでないよう、
現在 UUID でパーティションを指定するようになっています。

 

容量制限

MBR の使用上、物理的な容量は 2T バイトまでになります。

最近のパソコンなどで GPT を採用する要因の一つが
この制限を撤廃する目的があります。


パーティション数制限

数年前の Linux ではドライブの最大パーティションとして次の制限があります。

  • IDE ディスクは最大 63 まで(例えば hda63)
  • SCSI ディスクは最大 15 まで(例えば sda15)

最近公開されている Linux では、この制限はなくなっています。
例えば SCSI ディスクも sda16 以降を作成しアクセスできます。

しかし、古い Linux では sda15 までしか認識しない場合があります。

また、Linux が対応していても、古くから存在しているアプリでは
対応していない場合があります。

  • Slackware 系の一部は自動マウントを番号 15 までで止めてしまいます。
    16 以降は手動でマウントを行って操作可能です。
  • Vine Linux 6 系のインストーラーは番号 15 までしか認識しません。

特にディスク操作を行うアプリでは
パーティション番号 16 以降(例えば sda16 以降)を無効として
削除する場合もありますので、くれぐれもご注意下さい。

 

これ以外でも数十パーティションを超えると
起動で問題が発生する事があります。運営者の経験では次を確認しています。

  • Mageia 5 まで・PCLinuxOS の場合、
    起動にかなり時間を要する状態になります。
  • Vine Linux 6 系は起動に失敗します。

これに限らず、GRUB 2 は os prober(他の OS を検索する機能)の動作で
パーティション数が多いほど時間を要します。


パーティション番号の並びを変える

パーティションの追加・削除を行うと、

パーティション番号の並び方が変わってしまう場合があります。

 

先頭からパーティションの順番を付け直す機能が fdisk にあります。

対象が Linux 本体が入っているパーティションの場合や

実行してマウントされているために操作が失敗する場合、
GParted Live などのライブ起動した Linux で操作して下さい。

  1. 例えば sudo fdisk /dev/sdb (sdb は対象ディスク) として起動します。
  2. x (追加機能・熟練者向けコマンド) を選びます。
  3. f (パーディション番号の修繕) を選びます。
  4. ここで警告メッセージが表示される場合、i (無視) します。
  5. r (メインメニューへ戻る) を選びます。
  6. w (ディスクへ書き込んで終了) を選びます。ここで更新されます。
    q (変更せずに終了) の場合は操作せずに終了します。

GParted などで変更されている事を確認して下さい。

/etc/fstab などで /dev/sdb1 などと直接パーティション番号を指定していた場合

これを変更しないと起動できなくなったり、

参照に問題が発生する事にご注意下さい。

この方法では UUID は更新されないため、
UUID で指定している場合は影響ありません。


パーティションを移動すると起動できなくなるケース

次のパーティションはパーティションの先頭位置を動かすと起動できなくなります。

  • GRUB 2 をインストールしている Linux パーティションで
    その GRUB を MBR などにインストールしている場合
  • 最近 Windows でシステムが入っているドライブのパーティション

これはブートローダーだけでは起動領域が足らず、
OS のパーティションにも入れているためです。

 

GRUB 2 でこれが発生した場合、次の手段で起動・回復できます。

いずれもライブ起動ができるため、
復旧用の CD や USB メモリを用意しておくと良いでしょう。

最近のバージョンではこの問題は改善されているようで、
パーティションの先頭位置を動かしても起動できるようになっているようです。

 

現在 Windows 10 はパーティションを移動して起動できない場合に

起動領域から復旧させる機能を持ちます。簡単な操作で復旧可能です。

ただし起動領域がパーティションを見つけられない場合は
再インストールを要する事もあります。


ext4 フォーマットの 64 ビット・metadata_csum 対応

2016 年に公開されている Linux より順次 ext4 でフォーマットした時に

64bit と metadata_csum を付けて生成されるようになっています。

(ここで出てくる 64bit は 64bit CPU (32bit CPU) とは別の話です)
これにより 2T バイトを超えるパーティションを生成できるようにしています。

おおよそ e2fsprogs 1.43 以降が対象ですが、
1.42 系のバージョンでもパッチ対応されている可能性があります。

  • Debian 9.0.0 Stretch 以降
  • Fedora 現バージョン対応済み
  • openSUSE Tumbleweed
  • Ubuntu 16.10 以降

この 64bit・metadata_csum の ext4 に対応していない Linux が存在するため、

該当のパーティションを操作したり

fsck で確認しようとして失敗する事があります。

 

パーティションに関して手っ取り早い対処方法は、
64bit・metadata_csum に対応している環境で操作する事です。

比較的新しいパッケージを取り込んでいる環境になります。

 

また新しいバージョンでフォーマットした ext4 に

古いバージョンの Linux をインストールした場合、
fsck が未対応のために失敗し、起動できなくなります。

/etc/fstab で fsck を動作しないようにする事で改善できますが、

これを回避するためにインストール時は

その Linux でフォーマットするのが確実です。

 

Debian Jessie そのものは非対応になりますが、

backports で e2fslibs および e2fsprogs を更新すると改善可能です。

 

64 ビット・metadata_csum 変換

e2fsprogs 1.43 以降の場合、単に ext4 でフォーマットすると

64 ビット・metadata_csum を有効にした ext4 パーティションになります。

これが確実な手段です。

 

すでに生成されている ext4 を変換する必要がある場合は

次の手順が使えますが、
環境によっては起動できないなどの問題が発生する場合があります。

 

有効にする

こちらにも手順が記載されています。

 

Ext4 # メタデータチェックサムを有効化する | Auch Linux Wiki

 

# e2fsck -Df /dev/sdz99

# resize2fs -b /dev/sdz99

# tune2fs -O metadata_csum /dev/sdz99

 

無効にする

# e2fsck -Df /dev/sdz99

# tune2fs -O ^metadata_csum /dev/sdz99

# resize2fs -s /dev/sdz99