mkfsコマンドでLinuxのファイルシステムを作成する方法|ext4・xfs・tmpfsの使い分けとfstab設定も

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, ディスク操作 > mkfsコマンドでLinuxのファイルシステムを作成する方法|ext4・xfs・tmpfsの使い分けとfstab設定も
「新しいディスクを追加したのに、マウントしようとしたらエラーになる」
「パーティションを作ったあと、次に何をすればいいのかわからない」

こういう状況で詰まってしまうのは、ディスクの準備手順に「ファイルシステムの作成」というステップが抜けているためです。パーティションを切るだけでは使えません。その上にファイルシステムを作成して初めて、データを書き込める状態になります。

この記事では、Linuxでファイルシステムを作成する mkfs コマンド の実践的な使い方を解説します。ext4・xfs・vfatの違いと使い分け、実行環境での出力例、fstabへの永続マウント設定、よくあるエラーへの対処まで、現場で必要な情報を一通りカバーします。

動作確認環境:RHEL 9.4 / Rocky Linux 9.4 / Ubuntu 24.04 LTS

この記事のポイント

・mkfs.ext4 が最もよく使われるファイルシステム作成コマンド
・RHEL系サーバーの /data パーティションは xfs が標準的な選択肢
・mkfs 実行前に lsblk でデバイス名を必ず確認し、誤消去を防ぐ
・fstab に UUID で記述すると再起動後も自動マウントできる


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

ファイルシステムとは何か、なぜ必要なのか

ディスクやパーティションは、初期状態では「何もない空間」です。OSがそこにファイルを保存・管理するためには、あらかじめルールを設定しておく必要があります。そのルールの体系が「ファイルシステム」です。

Windowsで言うところの「フォーマット」に相当する操作が、Linuxでは mkfs コマンドによるファイルシステムの作成にあたります。

Linuxでよく使われるファイルシステムの種類は以下のとおりです。
ファイルシステム 主な用途 特徴
ext4 汎用(Debian系・Ubuntu系の標準) 安定性が高く情報も豊富、ほぼ全ディストロで使える
xfs 大容量データ・RHEL系サーバー RHEL/Rocky Linuxの標準、大ファイルのI/O性能が高い
vfat USBメモリ・外付けディスク WindowsとLinux両方で読み書きできる
tmpfs 一時ファイル領域(/tmp等) メモリ上に存在し、再起動で消える

mkfsコマンドの基本構文

mkfs は Make FileSystem の略で、指定したデバイスにファイルシステムを作成するコマンドです。

基本構文は以下のとおりです。

# 基本構文 mkfs -t ファイルシステム種別 デバイス名 # または短縮形(ファイルシステム種別を直接サブコマンドで指定) mkfs.ext4 デバイス名 mkfs.xfs デバイス名 mkfs.vfat デバイス名

実際の現場では mkfs.ext4 のような短縮形がよく使われます。可読性が高く、コマンド補完でも見つけやすいためです。

※ mkfs は実行すると既存データが全て消去されます。 デバイス名を間違えると取り返しのつかない事態になります。必ず実行前に lsblk でデバイスを確認してください。

実行前の確認:lsblkでデバイスを特定する

1. lsblkでブロックデバイス一覧を確認する

# ブロックデバイスを一覧表示する lsblk

実際のサーバーでの出力例(デバイス名は環境により異なります):

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 50G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 4G 0 part [SWAP] └─sda3 8:3 0 45G 0 part / sdb 8:16 0 100G 0 disk

この出力では sdb が新しく追加した100GBのディスクで、まだ MOUNTPOINTS が空欄です。このデバイスに対してファイルシステムを作成します。

確認ポイント:
・MOUNTPOINTS が空欄のデバイスが対象
・TYPE が disk のもの(partではなく、パーティションを切ってから使う場合は part が対象)
・SIZE の値が意図したディスクのサイズと一致しているか

2. パーティションを切ってからmkfsする場合

ディスク全体をひとつのファイルシステムとして使う場合は sdb のままで構いませんが、複数パーティションに分割する場合は事前に Linux ポート確認の全コマンド のようにパーティション操作を行い、sdb1 のようなパーティションデバイスに対してmkfsを実行します。

ls コマンドの基本オプション と同様、デバイス名の一覧を丁寧に確認する習慣をつけておくと、誤操作を防げます。

ext4ファイルシステムの作成手順

1. mkfs.ext4でファイルシステムを作成する

# /dev/sdb に ext4 ファイルシステムを作成する mkfs.ext4 /dev/sdb

実際の実行時の出力例です:

mke2fs 1.46.5 (30-Dec-2021) Creating filesystem with 26214400 4k blocks and 6553600 inodes Filesystem UUID: a7c3f812-4e5b-48d2-91f0-7d3c8e2b1f44 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Allocating group tables: done Writing inode tables: done Creating journal (131072 blocks): done Writing superblocks and filesystem accounting information: done

「done」が4行並べばファイルシステムの作成は完了です。UUID(例: a7c3f812-...)が表示されます。この UUID は後ほど fstab に記述するために控えておいてください。

2. マウントして動作確認する

# マウントポイントを作成する mkdir -p /data # /dev/sdb を /data にマウントする mount /dev/sdb /data # マウントされたことを確認する df -h /data

Filesystem Size Used Avail Use% Mounted on /dev/sdb 98G 24K 93G 1% /data

Use% が 1% 程度でマウントできていれば正常です。ファイルシステム作成直後はディスク全体の約1%がジャーナルやinode管理領域として使用されます。

3. ext4のよく使うオプション

-L ラベル名:ファイルシステムにラベルをつける(例: mkfs.ext4 -L data /dev/sdb
-b ブロックサイズ:ブロックサイズを指定する(1024/2048/4096。通常はデフォルトの4096で良い)
-m 予約パーセント:rootユーザー用の予約領域を変更する(デフォルト5%、-m 1 で節約可能)

データ領域として使うパーティションでは -m 1 が有効です。デフォルトだと100GBのディスクで5GBが予約されてしまいます。

xfsファイルシステムの作成手順

RHEL 9・Rocky Linux 9ではルートパーティションのデフォルトがxfsです。大容量ファイルのI/O性能に優れており、データベースや動画ファイルを扱うサーバーでよく採用されます。

1. mkfs.xfsでファイルシステムを作成する

# /dev/sdb に xfs ファイルシステムを作成する mkfs.xfs /dev/sdb

meta-data=/dev/sdb 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=12800, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 Discarding blocks...Done.

「Discarding blocks...Done.」が表示されれば完了です。

注意点:xfsに対してはxfs_repairを使う
ファイルシステムに問題が発生したときの修復ツールが ext4 と異なります。ext4 は fsck.ext4、xfs は xfs_repair を使います。xfs に誤って fsck.ext4 を実行するとデータが破損するため、ファイルシステムの種別は必ず確認してください。

2. xfsのよく使うオプション

-f:既存のファイルシステムが存在しても強制的に上書きする(mkfs.xfs -f /dev/sdb
-L ラベル名:ラベルをつける(mkfs.xfs -L data /dev/sdb

既にxfsが作成済みのデバイスに再度mkfs.xfsを実行しようとすると「already contains a XFS filesystem」というエラーが出ます。その場合は -f オプションで強制実行できますが、既存データは全て消えるため慎重に行ってください。

fstabに登録して再起動後も自動マウントする

mount コマンドでマウントするだけでは、サーバーを再起動するとマウントが解除されてしまいます。永続的にマウントするには /etc/fstab に設定を記述します。

1. UUIDを確認する

fstab ではデバイス名(/dev/sdb)ではなくUUIDを使うのが鉄則です。デバイス名はディスクの増減で変わることがありますが、UUIDは変わりません。

# デバイスのUUIDを確認する blkid /dev/sdb

/dev/sdb: UUID="a7c3f812-4e5b-48d2-91f0-7d3c8e2b1f44" BLOCK_SIZE="4096" TYPE="ext4"

dmidecode でハードウェア情報を取得 と同様に、ハードウェアの識別子を使う設定では正確な値を確認してから記述することが重要です。

2. /etc/fstabに追記する

# /etc/fstab に以下の行を追記する # UUID=xxx マウント先 ファイルシステム オプション dump pass UUID=a7c3f812-4e5b-48d2-91f0-7d3c8e2b1f44 /data ext4 defaults 0 2

各フィールドの意味:
UUID=...:マウントするデバイスのUUID
/data:マウント先のディレクトリ
ext4:ファイルシステムの種別(xfsの場合はxfs)
defaults:標準的なマウントオプション(rw, suid, exec, auto, nouser, async)
0:dumpバックアップ対象(0=対象外)
2:fsckチェック順序(0=スキップ、1=最優先、2=順番待ち)

3. fstabの設定を確認してからリブートする

fstabの記述ミスは、起動時にシステムが正常に立ち上がらない原因になります。記述後は必ず以下のコマンドで確認してください。

# fstab の記述に基づいてマウントをテストする(--fake はマウントを実行せず検証のみ) mount -a # エラーが出なければ問題なし # マウント状態を確認する df -h /data

mount -a でエラーが出なければ、再起動後も自動マウントされます。エラーが出た場合は fstab を修正してから再度試してください。

mount コマンドの使い方 もあわせて参照すると、マウントオプションの詳細を理解できます。

vfatファイルシステムの作成(USBメモリ・外付けディスク向け)

WindowsとLinuxの両方でアクセスしたい場合は vfat(FAT32)を使います。

# vfat ファイルシステムを作成する(USBメモリなど) mkfs.vfat /dev/sdc1 # ラベルをつけて作成する(-n オプション) mkfs.vfat -n USBDRIVE /dev/sdc1

vfat では日本語ファイル名の文字化けが起きやすいため、マウント時に iocharset=utf8 オプションを指定すると良いです。

# vfat を日本語対応でマウントする mount -o iocharset=utf8 /dev/sdc1 /mnt/usb

トラブルシュート:よくあるエラーと対処法

「is mounted」エラー:マウント中のデバイスにmkfsを実行しようとした

mke2fs: /dev/sdb is mounted; will not make a filesystem here!

対処法:

# まずアンマウントする umount /dev/sdb # アンマウントできない場合はumountせずに使用しているプロセスを確認する lsof /dev/sdb

「already contains a XFS filesystem」エラー:既存xfsに上書きしようとした

mkfs.xfs: /dev/sdb appears to contain an existing filesystem (xfs). Use the -f option to force overwrite.

対処法:本当に上書きして良い場合のみ -f オプションを追加する。

# 強制上書き(既存データはすべて消える) mkfs.xfs -f /dev/sdb

「command not found」エラー:mkfs.xfsがインストールされていない

bash: mkfs.xfs: command not found

対処法:xfsprogs パッケージをインストールする。

# RHEL系 dnf install xfsprogs # Debian/Ubuntu系 apt install xfsprogs

fstabの設定ミスでブート失敗した場合

fstab の記述ミスでシステムが起動しなくなった場合は、レスキューモードで起動して /etc/fstab を修正します。問題の行を一時的にコメントアウト(行頭に # を付ける)して再起動してください。

これは mount コマンドの使い方 の記事でも触れているトラブルですが、事前に mount -a で確認するだけで防げるケースがほとんどです。

本記事のまとめ

やりたいこと コマンド
ext4 ファイルシステムを作成する mkfs.ext4 /dev/sdb
xfs ファイルシステムを作成する mkfs.xfs /dev/sdb
vfat ファイルシステムを作成する mkfs.vfat /dev/sdc1
ラベルをつけて ext4 を作成する mkfs.ext4 -L data /dev/sdb
予約領域を1%に変更して ext4 を作成する mkfs.ext4 -m 1 /dev/sdb
既存 xfs に強制上書きする mkfs.xfs -f /dev/sdb
デバイスの UUID を確認する blkid /dev/sdb
fstab の設定をテストする mount -a
mkfsコマンドは、実行すると元に戻せない操作です。必ず lsblk でデバイス名を確認してから実行する習慣をつけてください。

ext4 は汎用性が高く初心者にも扱いやすい選択肢です。RHEL系サーバーでデータパーティションを追加する場合は xfs が本番環境での実績が豊富です。用途に応じて使い分けてください。

関連記事として、mount コマンドの使い方 も確認しておくと、マウントオプションの詳細理解に役立ちます。また、ディスク構成の全体把握には dmidecode でハードウェア情報を取得 が参考になります。

ファイルシステムの作成を覚えたら、次はサーバー構築を体系的に学びませんか?

mkfsコマンドでディスクを自在に扱えるようになったら、そのスキルを活かしてサーバー全体を設計・構築する力を身につけてみませんか。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

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

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

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

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

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

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

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

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

この記事を書いた人

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

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

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