Linuxでファイルシステムを作成する方法|mkfsコマンドでext4・xfsをフォーマットする手順

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)【Linux入門】初心者のための基礎知識・講座 > Linuxでファイルシステムを作成する方法|mkfsコマンドでext4・xfsをフォーマットする手順
「新しいディスクを追加したけど、フォーマットってどうやるの?」
fdiskでパーティションを切った後の手順がわからない。
ext4とxfsどちらを選べばいいか判断できない。

ファイルシステムの作成(フォーマット)は、ディスクを使えるようにするための必須手順です。
この記事では、mkfsコマンドを使ったext4とxfsのフォーマット方法、
fdiskによるパーティション作成後のフォーマット手順、
マウントとfstab登録、そしてxfsとext4の選択基準を体系的に解説します。
RHEL 9 / Rocky Linux 9 / Ubuntu 24.04 LTS で動作確認済みです。

この記事のポイント

・mkfs.ext4 / mkfs.xfs でディスクをフォーマットする方法がわかる
・fdiskでパーティション作成後にファイルシステムを作る手順を理解できる
・/etc/fstab に登録して自動マウントを設定できる
・ext4とxfsの違いと使い分けの基準がわかる


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

ファイルシステムとはなにか

ファイルシステムとは、ディスク上のデータを「ファイル」として扱うための仕組みです。

ファイルシステムがなければ、ディスクのデータを読み出すために
「193765セクタと193766セクタのデータを読み出す」というように
物理的なセクタ番号を直接指定する必要があります。

ファイルシステムがあることで、
「/var/log/messages を開く」という人間に分かりやすい操作ができます。

Linuxの主なファイルシステム:

ext4:Linuxで最も広く使われてきた標準ファイルシステム。安定性が高い
xfs:RHEL 7以降のデフォルト。大容量ファイルや高並列書き込みに強い
btrfs:スナップショット機能を持つ次世代ファイルシステム
vfat/exFAT:USBメモリなどのWindowsとの互換用

サーバー用途では ext4 または xfs の選択が実質的な判断になります。

fdiskでパーティションを作成する

新しいディスクを追加した場合、まずパーティションを作成し、
次にファイルシステムを作成(フォーマット)します。

【重要】以下の手順はデータが消えます。誤ったデバイスを指定しないよう必ず確認してください。

1. 追加されたディスクを確認する

# ディスク一覧を確認(ブロックデバイス) lsblk # 実行例 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 49G 0 part / sdb 8:16 0 100G 0 disk ←新しく追加したディスク # ディスクの詳細情報を確認 sudo fdisk -l /dev/sdb

2. fdiskでパーティションを作成する

# fdiskを起動(対話モード) sudo fdisk /dev/sdb # fdisk内のコマンド # n : 新しいパーティションを作成 # p : パーティションテーブルを表示 # d : パーティションを削除 # w : 変更を書き込んで終了 # q : 変更を保存せずに終了 # t : パーティションタイプを変更 # 操作例(ディスク全体を1つのパーティションにする場合) Command (m for help): n Partition type: p primary Partition number (1-4, default 1): 1 First sector (2048-209715199, default 2048): (Enterでデフォルト) Last sector: (Enterでデフォルト=全領域使用) Command (m for help): w ←変更を書き込む

3. partprobeでカーネルにパーティション変更を通知する

# カーネルのパーティションテーブルを更新 sudo partprobe /dev/sdb # パーティションが認識されたか確認 lsblk /dev/sdb

mkfsコマンドでファイルシステムを作成する

パーティションが作成できたら、mkfs コマンドでファイルシステムを作成(フォーマット)します。

1. ext4でフォーマットする

# ext4ファイルシステムを作成 sudo mkfs.ext4 /dev/sdb1 # 実行例 mke2fs 1.46.5 (30-Dec-2021) Creating filesystem with 26214400 4k blocks and 6553600 inodes Filesystem UUID: a1b2c3d4-e5f6-7890-abcd-ef1234567890 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, ... Allocating group tables: done Writing inode tables: done Creating journal (131072 blocks): done Writing superblocks and filesystem accounting information: done # ラベル付きでフォーマット(/etc/fstabでの管理が楽になる) sudo mkfs.ext4 -L datadisk /dev/sdb1

2. xfsでフォーマットする

# xfsファイルシステムを作成 sudo mkfs.xfs /dev/sdb1 # 実行例 meta-data=/dev/sdb1 isize=512 agcount=4, agsize=6553600 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=1 inobtcount=1 data = bsize=4096 blocks=26214400, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=12799, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 # 既存のxfsを強制的に再フォーマット(警告が出る場合) sudo mkfs.xfs -f /dev/sdb1

3. mkfsコマンドの主なオプション

コマンド 説明
mkfs.ext4 /dev/sdb1 ext4でフォーマット
mkfs.xfs /dev/sdb1 xfsでフォーマット
mkfs.ext4 -L label /dev/sdb1 ラベル付きでext4フォーマット
mkfs.ext4 -b 4096 /dev/sdb1 ブロックサイズ4096でフォーマット
mkfs.xfs -f /dev/sdb1 強制フォーマット(既存を上書き)

マウントとfstabへの登録

ファイルシステムを作成したら、マウントして使えるようにします。

1. UUIDを確認する

# ファイルシステムのUUIDを確認する(fstab登録に使う) sudo blkid /dev/sdb1 # 実行例 /dev/sdb1: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="ext4" # または lsblk -f でも確認できる lsblk -f /dev/sdb

2. マウントポイントを作成してマウントする

# マウントポイントを作成 sudo mkdir -p /data # 手動でマウントする(再起動で解除される) sudo mount /dev/sdb1 /data # マウント確認 df -h /data # 実行例 Filesystem Size Used Avail Use% Mounted on /dev/sdb1 100G 92K 100G 1% /data

3. /etc/fstabに登録して自動マウントする

再起動後も自動でマウントされるように /etc/fstab に登録します。

# /etc/fstab に追記する(UUIDで指定するのが推奨) # 書式: デバイス マウントポイント fstype オプション dump pass UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /data ext4 defaults 0 2 # xfsの場合 UUID=xxxxx-xxxx-xxxx-xxxx /data xfs defaults 0 2 # fstabの構文チェック(マウントせずに確認) sudo mount -a --fake # 再マウントして確認 sudo umount /data sudo mount -a # マウント確認 mount | grep /data

fstabのdumpとpassフィールド:
dump(5列目):0=バックアップしない(通常0)
pass(6列目):fsckの起動順序。root=1、その他=2、チェック不要=0

ext4とxfsの選択基準

どちらのファイルシステムを使うか迷ったときの判断基準を整理します。
比較項目 ext4 xfs
最大ファイルサイズ 16TB 8EB(実質無制限)
最大ボリュームサイズ 1EB 8EB
RHEL 7以降のデフォルト 非デフォルト デフォルト
縮小(shrink) 可能 不可(拡張のみ)
高並列書き込み 普通 強い
小ファイル多数の環境 得意 普通
選択の目安:
一般的なサーバー用途(Webサーバー、アプリケーション):xfs(RHEL 9のデフォルト)
大量の小ファイル(メールサーバー、Gitリポジトリ):ext4
後でボリューム縮小の可能性がある:ext4(xfsは縮小不可)
大容量ファイルサーバー、データベース:xfs

ファイルシステムの内部構造を理解する

ファイルシステムの仕組みを理解しておくと、
トラブル時に原因を絞り込みやすくなります。

1. スーパーブロック

ファイルシステムを作成した際、最初のブロックに「スーパーブロック」が作成されます。
スーパーブロックは、ファイルシステム全体の管理情報(サイズ、ブロックサイズ、未使用ブロック数など)を持ちます。

スーパーブロックが破損するとファイルシステム全体が使用不能になるため、
ext4では一定の間隔でバックアップスーパーブロックが作成されます。

# ext4のスーパーブロック情報を確認 sudo dumpe2fs /dev/sdb1 | head -30 # バックアップスーパーブロックの位置を確認 sudo dumpe2fs /dev/sdb1 | grep superblock # 実行例 Primary superblock at 0, Group descriptors at 1-3 Backup superblock at 32768, Group descriptors at 32769-32771 Backup superblock at 98304, Group descriptors at 98305-98307

スーパーブロックが壊れた場合は、バックアップから復旧できます。

# バックアップスーパーブロックを使ってfsmkチェック sudo fsck.ext4 -b 32768 /dev/sdb1

2. inode(Indexノード)

inode は、ファイルの属性・管理情報(サイズ、所有者、パーミッション、データブロックの位置)を格納する領域です。
ディレクトリ自体も inode を持ち、そのデータブロックにファイル名と inode 番号の対応表が保存されています。

つまり「ファイル名」はディレクトリエントリが持ち、
「ファイルの実体(属性とデータ)」は inode とデータブロックが持ちます。
このため、ハードリンクは同じ inode を指す別のファイル名として実装されています。

# ファイルのinode番号を確認 ls -i /etc/passwd # 実行例 131073 /etc/passwd # inode情報の詳細を表示 stat /etc/passwd # 実行例 File: /etc/passwd Size: 2847 Blocks: 8 IO Block: 4096 regular file Device: fd01h/64769d Inode: 131073 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

3. ジャーナリング

ext4 と xfs はどちらもジャーナリングファイルシステムです。
ジャーナルは「これから書き込む操作」を事前に記録するログ領域で、
突然の電源断があってもジャーナルを再生することでファイルシステムの整合性を保てます。

ext4 のジャーナリングモード:
ordered(デフォルト):データ書き込み後にメタデータをジャーナルに記録
writeback:メタデータのみジャーナル記録(パフォーマンス重視)
journal:データもメタデータも全てジャーナルに記録(最も安全・遅い)

ファイルシステムの確認・修復コマンド

1. ファイルシステムの整合性チェック

# ext4の整合性チェック(アンマウントが必要) sudo umount /data sudo fsck.ext4 /dev/sdb1 # xfsの整合性チェック sudo umount /data sudo xfs_repair /dev/sdb1 # マウントしたまま読み取り専用でチェック(ext4) sudo fsck.ext4 -n /dev/sdb1

2. ext4のinodeを確認する

inode はファイルの管理情報を格納する領域です。
inode が枯渇するとファイルが作成できなくなります。

# inode の使用状況を確認 df -i /data # 実行例 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sdb1 6553600 1234 6552366 1% /data # ext4のinode数を指定してフォーマット(小ファイル多数の場合) # -N で総inode数を指定 sudo mkfs.ext4 -N 10000000 /dev/sdb1

3. xfsのメタデータを確認・修復する

xfs はマウントしたままの状態では fsck は使えません。
修復には xfs_repair を使い、必ずアンマウントしてから実行します。

# xfs の情報を確認 sudo xfs_info /data # 実行例(RHEL 9のxfs情報) meta-data=/dev/sdb1 isize=512 agcount=4, agsize=6553600 blks data = bsize=4096 blocks=26214400, imaxpct=25 # xfs の整合性チェック・修復(ドライラン) sudo xfs_repair -n /dev/sdb1 # xfs の実際の修復(アンマウント必須) sudo umount /data sudo xfs_repair /dev/sdb1

4. LVM(論理ボリューム管理)と組み合わせる

物理ディスクを直接使う代わりに、LVM を経由するとオンラインでボリュームを拡張できます。
xfs との組み合わせでオンライン拡張が使えます。

# xfsをオンラインで拡張する(LVM経由の場合) # 1. 論理ボリュームを拡張 sudo lvextend -L +50G /dev/mapper/vg0-data # 2. xfsファイルシステムを拡張(マウントしたまま可能) sudo xfs_growfs /data # ext4のオンライン拡張 sudo lvextend -L +50G /dev/mapper/vg0-data sudo resize2fs /dev/mapper/vg0-data

本記事のまとめ

やりたいこと コマンド
ディスク一覧を確認 lsblk
fdiskでパーティション作成 sudo fdisk /dev/sdb
ext4でフォーマット sudo mkfs.ext4 /dev/sdb1
xfsでフォーマット sudo mkfs.xfs /dev/sdb1
UUIDを確認 sudo blkid /dev/sdb1
手動マウント sudo mount /dev/sdb1 /data
fstabの構文チェック sudo mount -a --fake
inode使用状況を確認 df -i /data
ext4の整合性チェック sudo fsck.ext4 /dev/sdb1
xfsのオンライン拡張 sudo xfs_growfs /data
新しいディスクを追加したら「lsblk → fdisk → mkfs → mkdir → mount → fstab登録」の流れが基本です。
ディスクのパーティション構成を事前に設計しておくことも重要です。
システム領域(/)とデータ領域(/data, /var など)を分けることで、
データ領域がいっぱいになってもシステムは動き続けます。
現場では「/ は 30GB、/var は 50GB、/data は残り全部」のように分割するのが一般的です。

また、本番環境のディスク操作は必ず事前にスナップショットやバックアップを取ってから行ってください。
mkfs は取り消しができない操作です。コマンドを実行する前にデバイス名(/dev/sdX)を必ず再確認する習慣をつけましょう。
この手順を1度手を動かして覚えれば、本番環境でも自信を持って作業できます。

特に /etc/fstab の編集は書き方を間違えるとOSが起動しなくなる危険があります。
sudo mount -a --fakesudo mount -a での確認を必ずセットで行ってください。

Linuxのログ確認については、Linuxのログファイルの種類と確認方法もあわせてご覧ください。
起動プロセスの詳細については、Linuxのsystemdによる起動プロセスを理解するで解説しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。