パーティションとファイルシステム作成 - fdisk/mkfs【LPIC-1 104.1】
この記事で達成できること
- MBR と GPT の違いと、選択基準を説明できる
fdisk/gdisk/partedでパーティションを作成できるmkfs系コマンドで ext4 / xfs / vfat ファイルシステムを作成できるmkswapとswaponでスワップ領域を構築できる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 で確定する。
w を実行するまで変更はディスクに書き込まれません。逆に w を押すと既存のパーティションテーブルが上書きされます。誤ったデバイスを開いた場合は q で保存せず終了してください。
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
対処: blkid で TYPE= が表示されなければ未フォーマット。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)でフォーマットした - [ ] スワップは
mkswap→swaponで有効化した - [ ]
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 で永続化する手順に進むと理解が完成する。