パーティションとファイルシステム作成 - fdisk/mkfs【LPIC-1 104.1】

パーティションとファイルシステム作成 - fdisk/mkfs【LPIC-1 104.1】

この記事で達成できること

  • MBR と GPT の違いと、選択基準を説明できる
  • fdisk / gdisk / parted でパーティションを作成できる
  • mkfs 系コマンドで ext4 / xfs / vfat ファイルシステムを作成できる
  • mkswapswapon でスワップ領域を構築できる
  • lsblk / blkid / partprobe でディスク状態を正確に把握できる

LPIC-1 主題 104.1「パーティションとファイルシステムを作成する」の中核。ディスクを区切り、使える状態にするまでの一連の流れを扱う。

パーティション作成は何から決めるのか

最初に決めるのは「MBR か GPT か」。これでパーティション編集ツールが変わる。2TB を超えるディスクや 4 個を超える基本パーティションが必要なら GPT を選ぶ。

ディスクを使える状態にするまでは、原則として次の 3 段階を踏む。順序を飛ばすとマウントできない。

段階 操作 代表コマンド
1. パーティション分割 ディスクを区画に分ける fdisk / gdisk / parted
2. ファイルシステム作成 区画をフォーマットする mkfs.ext4 / mkfs.xfs / mkswap
3. マウント 区画をディレクトリに割り当てる mount(本記事の範囲外)

パーティションを作っただけでは、まだデータを書き込めません。mkfs でファイルシステムを作成する手順を忘れると、mount の段階で wrong fs type エラーになります。

MBR と GPT はどう違うのか

MBR は古い方式で、基本パーティション 4 個までの制限がある。GPT は新しい方式で、大容量ディスクと多数のパーティションに対応する。

項目 MBR(msdos) GPT
最大ディスク容量 2TB まで 2TB 超対応
基本パーティション数 4 個まで 実用上 128 個
拡張パーティション 必要(基本3+拡張1の構成) 不要
編集ツール fdisk gdisk
共通ツール parted(両対応) parted(両対応)

MBR で 5 個以上の区画が必要な場合、基本パーティション 3 個+拡張パーティション 1 個を作り、拡張パーティションの中に論理パーティションを置く。GPT ではこの制約がなく、すべて対等なパーティションとして扱える。

手順

Step 1: lsblk でディスク構成を確認する

lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0   50G  0 disk
├─sda1   8:1    0   49G  0 part /
└─sda2   8:2    0    1G  0 part [SWAP]
sdb      8:16   0   20G  0 disk

lsblk はブロックデバイスとパーティションを階層表示する。ここでは sdb がまだ未分割(子の sdb1 等がない)と分かる。作業対象のデバイス名を取り違えると既存データを破壊するため、必ず最初に確認する。

Step 2: fdisk で MBR パーティションを作成する

fdisk /dev/sdb
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (default 41943039): +10G

Created a new partition 1 of type 'Linux' and of size 10 GiB.

Command (m for help): w
The partition table has been altered.

fdisk の主要サブコマンドは n(新規作成)、p(テーブル表示)、d(削除)、t(タイプ変更)、w(書き込んで終了)、q(保存せず終了)。n でパーティション種別・番号・サイズを指定し、最後に w で確定する。

Step 3: GPT は gdisk、汎用なら parted を使う

gdisk /dev/sdb
parted /dev/sdb mklabel gpt
parted /dev/sdb mkpart primary ext4 1MiB 10GiB
Command (? for help): n
Partition number (1-128, default 1): 1
First sector (...):
Last sector (...): +10G
Current type is 8300 (Linux filesystem)
Command (? for help): w

GPT のディスクは gdisk で対話編集する。操作体系は fdisk に似ており、n(作成)/d(削除)/w(書き込み)を使う。parted は MBR・GPT 両対応で、mklabel(テーブル形式の作成)と mkpart(パーティション作成)を一行で実行できるため、スクリプト化に向く。

Step 4: partprobe でカーネルにテーブルを再読込させる

partprobe /dev/sdb
lsblk /dev/sdb
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb      8:16   0  20G  0 disk
└─sdb1   8:17   0  10G  0 part

パーティションテーブルを書き換えても、使用中のディスクではカーネルが古い情報を保持していることがある。partprobe はカーネルにパーティションテーブルの再読込を要求する。新しい sdb1 が認識されたことを lsblk で確認する。

Step 5: mkfs でファイルシステムを作成する

mkfs.ext4 /dev/sdb1
blkid /dev/sdb1
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 2621440 4k blocks and 655360 inodes
Filesystem UUID: 3f29c0a1-...-9b2e4d
Writing superblocks and filesystem accounting information: done

/dev/sdb1: UUID="3f29c0a1-...-9b2e4d" TYPE="ext4"

mkfs.ext4 は ext4 ファイルシステムを作成する。mkfs.xfs(XFS)、mkfs.vfat(FAT、-F 32 で FAT32)も同じ要領で使える。mkfs.ext4 は内部的に mke2fs を呼び出す。作成後は blkid で UUID とファイルシステム種別を確認する。UUID は /etc/fstab での永続マウントに使う。

Step 6: mkswap でスワップ領域を作成する

mkswap /dev/sdb2
swapon /dev/sdb2
swapon --show
Setting up swapspace version 1, size = 2 GiB
no label, UUID=8a1f...e07c

NAME      TYPE      SIZE USED PRIO
/dev/sdb2 partition   2G   0B   -2

スワップ用パーティションは mkfs ではなく mkswap で初期化する。swapon で有効化、swapoff で無効化する。swapon --show または free -h で有効なスワップを確認できる。スワップ領域も mkswap を実行しないと swapon が失敗する点に注意する。

ext / xfs / vfat / btrfs はどう使い分けるのか

汎用の Linux ファイルシステムなら ext4 が無難。大容量・高並列なら xfs、Windows との共有や EFI システムパーティションには vfat を使う。

種別 作成コマンド 主な用途
ext2 mkfs.ext2 ジャーナルなし。小容量・ブートパーティション等
ext3 mkfs.ext3 ext2 にジャーナリングを追加
ext4 mkfs.ext4 標準的な Linux 用。大容量・高信頼
xfs mkfs.xfs 大容量・高スループット向け
vfat mkfs.vfat FAT。Windows 共有・EFI システムパーティション
btrfs mkfs.btrfs スナップショット・サブボリューム対応の新しい FS

ext2/3/4 は系統的に互換性があり、mke2fs が共通の実体。xfs は一度作成すると縮小できない(拡張のみ)点が運用上の注意点。btrfs はスナップショットや RAID 機能を内蔵する比較的新しいファイルシステムで、LPIC-1 では概要レベルの理解で足りる。

トラブルシューティング

症状: mount すると wrong fs type と言われる

原因: パーティションを作成したが mkfs でファイルシステムを作っていない

確認:

blkid /dev/sdb1

対処: blkidTYPE= が表示されなければ未フォーマット。mkfs.ext4 /dev/sdb1 などでファイルシステムを作成する。

症状: fdisk で 5 個目の基本パーティションが作れない

原因: MBR は基本パーティション 4 個までの制限がある

確認:

fdisk -l /dev/sdb

対処: 拡張パーティションを作り、その中に論理パーティションを配置する。制約を受けたくなければ parted ... mklabel gpt で GPT に変更する(既存データは消える)。

症状: パーティションを作ったのに lsblk に出てこない

原因: カーネルが古いパーティションテーブルを保持している

確認:

lsblk /dev/sdb

対処: partprobe /dev/sdb でカーネルにテーブルを再読込させる。それでも反映されない場合は再起動する。

症状: swapon が Invalid argument で失敗する

原因: 対象パーティションに mkswap を実行していない

確認:

blkid /dev/sdb2

対処: mkswap /dev/sdb2 でスワップ領域として初期化してから swapon /dev/sdb2 を実行する。

作業完了チェックリスト

  • [ ] lsblk で作業対象デバイスを取り違えていないか確認した
  • [ ] fdisk / gdisk / parted でパーティションを作成し w で書き込んだ
  • [ ] partprobe でカーネルにテーブルを再読込させた
  • [ ] mkfs.ext4(または用途に応じた mkfs)でフォーマットした
  • [ ] スワップは mkswapswapon で有効化した
  • [ ] blkid で UUID とファイルシステム種別を確認した

まとめ

場面 コマンド 目的
確認 lsblk / fdisk -l デバイスとパーティションの把握
MBR 編集 fdisk /dev/sdb n/p/d/t/w/q で対話編集
GPT 編集 gdisk /dev/sdb GPT パーティション作成
汎用編集 parted ... mklabel/mkpart スクリプト向き・両形式対応
反映 partprobe /dev/sdb テーブル再読込
フォーマット mkfs.ext4 /dev/sdb1 ファイルシステム作成
スワップ mkswap / swapon スワップ領域の構築
確認 blkid /dev/sdb1 UUID・FS 種別の確認

パーティションとファイルシステムの作成は、ディスクを使える状態にする入口。次はこのファイルシステムを実際にマウントし、/etc/fstab で永続化する手順に進むと理解が完成する。

次に読む