mkfsコマンドとは?Linuxでファイルシステムを作成する方法

Linux

Linuxで新しく作成したパーティションをファイル保存に使えるようにするには、mkfsコマンドでファイルシステムを作成します。

前回解説したfdiskコマンドでは、ディスクにパーティションを作成する方法を扱いました。

しかし、パーティションを作成しただけでは、まだ通常のファイル保存には使えません。

作成したパーティションにext4xfsなどのファイルシステムを作成して、さらにmountでマウントすることで、Linux上でファイルを保存できるようになります。

この記事では、Linux初心者でも安全に理解できるように、mkfsコマンドの基本構文、mkfs.ext4mkfs.xfsの使い方、作業前の確認、ファイルシステム作成後のマウント方法、データ消去の注意点、よくあるエラーまで実例付きで解説します。

  1. mkfsコマンドとは
  2. ファイルシステムとは
  3. mkfsを使う場面
  4. mkfsを実行する前の重要な注意点
  5. 対象ディスクを確認する方法
  6. マウント中か確認する方法
  7. mkfsコマンドの基本構文
  8. ext4ファイルシステムを作成する方法
  9. xfsファイルシステムを作成する方法
  10. vfatファイルシステムを作成する方法
  11. swap領域を作成する場合
  12. ラベルを付けてファイルシステムを作成する方法
  13. UUIDを確認する方法
  14. ファイルシステム作成後にマウントする方法
  15. /etc/fstabに登録する方法
  16. fdiskからmkfs、mountまでの全体の流れ
    1. 1. ディスクを確認する
    2. 2. パーティションを作成する
    3. 3. パーティション情報を再読み込みする
    4. 4. ファイルシステムを作成する
    5. 5. マウントポイントを作成する
    6. 6. マウントする
    7. 7. マウント状態を確認する
    8. 8. 必要ならfstabへ登録する
  17. mkfsとfdiskの違い
  18. mkfsとmountの違い
  19. mkfsとlsblk・blkidの違い
  20. mkfsコマンドの主な種類
  21. mkfsコマンドでよくある注意点
    1. 対象デバイスを間違えない
    2. パーティションではなくディスク全体を指定しない
    3. mkfs後はUUIDが変わる
    4. マウント中のパーティションには実行しない
  22. mkfsコマンドでよくあるエラー
    1. Permission denied
    2. No such file or directory
    3. is mounted; will not make a filesystem
    4. command not found
    5. 既存のファイルシステムがあると警告される
  23. よくある質問
    1. mkfsコマンドは何に使いますか?
    2. mkfsを実行するとデータは消えますか?
    3. ext4でフォーマットするにはどうすればよいですか?
    4. xfsでフォーマットするにはどうすればよいですか?
    5. fdiskとmkfsの違いは何ですか?
    6. mkfsを実行しただけでファイル保存できますか?
    7. mkfs後にUUIDは変わりますか?
    8. マウント中のパーティションにmkfsできますか?
    9. UbuntuやCentOS Streamでも使えますか?
  24. まとめ

mkfsコマンドとは

mkfsは、Linuxでパーティションやブロックデバイスにファイルシステムを作成するためのコマンドです。

mkfsは「make filesystem」の略です。

たとえば、/dev/sdb1というパーティションにext4ファイルシステムを作成する場合は、次のように実行します。

sudo mkfs.ext4 /dev/sdb1

ファイルシステムを作成すると、そのパーティションをLinuxでファイル保存先として使えるようになります。

ただし、mkfsを実行すると対象パーティション内の既存データは基本的に失われます。

そのため、作業前には対象デバイスが本当に正しいかを必ず確認してください。

ファイルシステムとは

ファイルシステムとは、ディスク上にファイルやディレクトリを保存・管理するための仕組みです。

ディスクやパーティションは、そのままでは単なる保存領域です。

そこにファイル名、ディレクトリ構造、権限、更新日時などを管理する仕組みを作ることで、Linuxからファイルとして扱えるようになります。

代表的なファイルシステムには、次のようなものがあります。

ファイルシステム 特徴
ext4 Linuxで広く使われる標準的なファイルシステム
xfs 大容量ディスクやサーバー用途でよく使われる
vfat USBメモリなどで使われるFAT系ファイルシステム
ntfs Windowsでよく使われるファイルシステム
swap スワップ領域用の形式

Linuxサーバーで追加ディスクを使う場合は、ext4またはxfsを選ぶことが多いです。

mkfsを使う場面

mkfsは、主に次のような場面で使います。

  • 新しく追加したディスクを使えるようにしたいとき
  • fdiskで作成したパーティションをフォーマットしたいとき
  • USBメモリにファイルシステムを作成したいとき
  • 検証用ディスクを初期化したいとき
  • サーバーのデータ用ディスクを作成したいとき

たとえば、追加ディスクを/dataとして使う場合は、次のような流れになります。

lsblk
sudo fdisk /dev/sdb
sudo mkfs.ext4 /dev/sdb1
sudo mkdir -p /data
sudo mount /dev/sdb1 /data
df -h /data

mkfsは、この流れの中で「パーティションにファイルシステムを作る」段階を担当します。

mkfsを実行する前の重要な注意点

mkfsは非常に強力なコマンドです。

対象を間違えると、必要なデータを消してしまう可能性があります。

実行前には、少なくとも次の3つを確認してください。

  • 対象デバイスが本当に作業対象か
  • マウント中ではないか
  • 必要なデータのバックアップがあるか

特に、/dev/sda/dev/nvme0n1はシステムディスクであることがあります。

誤ってOSの入っているパーティションにmkfsを実行すると、システムが起動しなくなる可能性があります。

対象ディスクを確認する方法

まず、lsblkでディスクとパーティション構成を確認します。

lsblk

実行結果の例です。

NAME   SIZE TYPE MOUNTPOINTS
sda     50G disk
├─sda1   1G part /boot
└─sda2  49G part /
sdb    100G disk
└─sdb1 100G part

この例では、sdaがシステムディスク、sdbが追加ディスクです。

/dev/sdb1にはマウントポイントが表示されていないため、まだマウントされていないパーティションだと分かります。

ファイルシステムの有無も確認したい場合は、lsblk -fを使います。

lsblk -f

実行結果の例です。

NAME   FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 xfs          1111-2222 /boot
└─sda2 xfs          3333-4444 /
sdb
└─sdb1

/dev/sdb1FSTYPEが空であれば、ファイルシステムがまだ作成されていない可能性があります。

マウント中か確認する方法

対象パーティションがマウント中か確認するには、lsblkfindmntを使います。

lsblk
findmnt /data

対象がマウントされている場合は、mkfsを実行する前にアンマウントします。

sudo umount /data

マウント中のパーティションに対してmkfsを実行するのは危険です。

必ずマウント状態を確認しましょう。

mkfsコマンドの基本構文

mkfsコマンドの基本構文は次のとおりです。

mkfs -t ファイルシステム種類 デバイス名

たとえば、/dev/sdb1ext4を作成する場合は、次のように実行します。

sudo mkfs -t ext4 /dev/sdb1

また、ファイルシステム種類ごとの専用コマンドを使うことも多いです。

sudo mkfs.ext4 /dev/sdb1
sudo mkfs.xfs /dev/sdb1
sudo mkfs.vfat /dev/sdb1

実務では、mkfs.ext4mkfs.xfsのような専用コマンドをよく使います。

ext4ファイルシステムを作成する方法

Linuxでよく使われるext4ファイルシステムを作成するには、mkfs.ext4を使用します。

sudo mkfs.ext4 /dev/sdb1

実行すると、ファイルシステム作成処理が行われます。

作成後、lsblk -fで確認します。

lsblk -f

実行結果の例です。

NAME   FSTYPE LABEL UUID                                 MOUNTPOINTS
sdb
└─sdb1 ext4         5555-6666-7777-8888

FSTYPEext4が表示されていれば、ファイルシステムが作成されています。

xfsファイルシステムを作成する方法

CentOS Stream、Rocky Linux、AlmaLinuxなどのサーバー環境では、xfsが使われることも多いです。

xfsファイルシステムを作成するには、mkfs.xfsを使用します。

sudo mkfs.xfs /dev/sdb1

作成後、確認します。

lsblk -f

実行結果の例です。

NAME   FSTYPE LABEL UUID                                 MOUNTPOINTS
sdb
└─sdb1 xfs          9999-aaaa-bbbb-cccc

FSTYPExfsが表示されていれば、XFSファイルシステムが作成されています。

環境によってはxfsprogsパッケージが必要です。

sudo dnf install xfsprogs

vfatファイルシステムを作成する方法

USBメモリなどでWindowsとの互換性を意識する場合、vfatを使うことがあります。

sudo mkfs.vfat /dev/sdb1

FAT32として作成したい場合、環境によっては次のように指定します。

sudo mkfs.vfat -F 32 /dev/sdb1

mkfs.vfatを使うには、dosfstoolsパッケージが必要な場合があります。

sudo apt install dosfstools

Linux専用のサーバーディスクとして使う場合は、通常ext4xfsを検討します。

swap領域を作成する場合

スワップ領域を作成する場合は、通常のmkfsではなくmkswapを使用します。

sudo mkswap /dev/sdb1

スワップを有効化するには、swaponを使います。

sudo swapon /dev/sdb1

現在のスワップ状態は、次のコマンドで確認できます。

swapon --show
free -h

スワップ設定は通常のデータ用ファイルシステムとは用途が違うため、別記事で詳しく扱うのがおすすめです。

ラベルを付けてファイルシステムを作成する方法

ファイルシステムにはラベルを付けられる場合があります。

ext4でラベルを付ける例です。

sudo mkfs.ext4 -L data /dev/sdb1

作成後に確認します。

lsblk -f

実行結果の例です。

NAME   FSTYPE LABEL UUID                                 MOUNTPOINTS
sdb
└─sdb1 ext4   data  5555-6666-7777-8888

ラベルを使うと、どの用途のディスクか分かりやすくなります。

UUIDを確認する方法

mkfsでファイルシステムを作成すると、通常は新しいUUIDが作成されます。

UUIDはlsblk -fblkidで確認できます。

lsblk -f
sudo blkid /dev/sdb1

実行結果の例です。

/dev/sdb1: UUID="5555-6666-7777-8888" TYPE="ext4"

/etc/fstabへ自動マウント設定を書く場合、このUUIDを使用します。

ファイルシステム作成後にマウントする方法

mkfsでファイルシステムを作成したら、マウントポイントを作成してマウントします。

sudo mkdir -p /data
sudo mount /dev/sdb1 /data

マウントできたか確認します。

df -h /data
findmnt /data
lsblk

実行結果の例です。

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       100G   24K  100G   1% /data

これで/dataディレクトリを通して、/dev/sdb1のファイルシステムを利用できます。

/etc/fstabに登録する方法

再起動後も自動でマウントしたい場合は、/etc/fstabに設定します。

まずUUIDを確認します。

sudo blkid /dev/sdb1

実行結果の例です。

/dev/sdb1: UUID="5555-6666-7777-8888" TYPE="ext4"

/etc/fstabを編集する前にバックアップします。

sudo cp /etc/fstab /etc/fstab.bak

設定例です。

UUID=5555-6666-7777-8888 /data ext4 defaults 0 2

編集後は、いきなり再起動せず、必ずmount -aで確認します。

sudo mount -a
findmnt /data

/etc/fstabの設定を間違えると起動時のトラブルにつながる場合があります。慎重に確認しましょう。

fdiskからmkfs、mountまでの全体の流れ

追加ディスクをLinuxで使えるようにする全体の流れを整理します。

1. ディスクを確認する

lsblk

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

sudo fdisk /dev/sdb

3. パーティション情報を再読み込みする

sudo partprobe /dev/sdb

4. ファイルシステムを作成する

sudo mkfs.ext4 /dev/sdb1

5. マウントポイントを作成する

sudo mkdir -p /data

6. マウントする

sudo mount /dev/sdb1 /data

7. マウント状態を確認する

df -h /data
findmnt /data
lsblk

8. 必要ならfstabへ登録する

sudo blkid /dev/sdb1
sudo cp /etc/fstab /etc/fstab.bak
sudo vi /etc/fstab
sudo mount -a

このように、mkfsはディスク管理作業の中間にある重要なコマンドです。

mkfsとfdiskの違い

fdiskmkfsは、どちらもディスク管理で使いますが、役割が違います。

コマンド 役割
fdisk ディスクにパーティションを作成・削除する
mkfs パーティションにファイルシステムを作成する

簡単にいうと、fdiskは「領域を分ける」、mkfsは「ファイルを保存できる形式にする」コマンドです。

mkfsとmountの違い

mkfsmountも混同しやすいコマンドです。

コマンド 役割
mkfs ファイルシステムを作成する
mount ファイルシステムをディレクトリへ接続する

mkfsを実行しただけでは、まだそのパーティションへ通常のパスでアクセスできません。

mount/dataなどへ接続して、初めてファイル保存先として使いやすくなります。

mkfsとlsblk・blkidの違い

lsblkblkidは確認用のコマンドです。

mkfsは実際にファイルシステムを作成する操作系コマンドです。

コマンド 主な用途
lsblk ディスクやパーティション構成を確認する
blkid UUIDやファイルシステム種類を確認する
mkfs ファイルシステムを作成する

安全のため、mkfsを実行する前後でlsblk -fblkidを使って確認しましょう。

mkfsコマンドの主な種類

コマンド 作成するファイルシステム
mkfs.ext4 ext4
mkfs.xfs xfs
mkfs.vfat vfat / FAT
mkfs.btrfs btrfs
mkswap swap領域

環境によっては、対応するパッケージがインストールされていないと使えない場合があります。

mkfsコマンドでよくある注意点

対象デバイスを間違えない

mkfsで最も危険なのは、対象デバイスを間違えることです。

作業前には必ず確認します。

lsblk -f
sudo fdisk -l

システムディスクや必要なデータが入ったパーティションを指定しないよう注意してください。

パーティションではなくディスク全体を指定しない

通常は、/dev/sdbではなく/dev/sdb1のようなパーティションを指定します。

sudo mkfs.ext4 /dev/sdb1

作業内容によってはディスク全体にファイルシステムを作成するケースもありますが、初心者は基本的にパーティションを作成してから、そのパーティションにmkfsを実行する流れで覚えると安全です。

mkfs後はUUIDが変わる

mkfsでファイルシステムを作り直すと、UUIDが変わることがあります。

/etc/fstabで古いUUIDを指定している場合、マウントできなくなる可能性があります。

作成後は必ずUUIDを確認しましょう。

sudo blkid /dev/sdb1

マウント中のパーティションには実行しない

マウント中のパーティションにmkfsを実行しないでください。

まず状態を確認します。

findmnt /data
lsblk

必要に応じてアンマウントします。

sudo umount /data

mkfsコマンドでよくあるエラー

Permission denied

mkfs.ext4: Permission denied while trying to determine filesystem size

権限が不足している可能性があります。

通常はsudoを付けて実行します。

sudo mkfs.ext4 /dev/sdb1

No such file or directory

mkfs.ext4: No such file or directory while trying to determine filesystem size

指定したデバイスが存在しない可能性があります。

デバイス名を確認してください。

lsblk

is mounted; will not make a filesystem

/dev/sdb1 is mounted; will not make a filesystem here!

対象パーティションがマウント中です。

マウント状態を確認し、必要ならアンマウントします。

findmnt
sudo umount /data

command not found

mkfs.xfs: command not found

必要なパッケージが入っていない可能性があります。

CentOS Stream、Rocky Linux、AlmaLinuxなどでxfsを使う場合は、xfsprogsを確認します。

sudo dnf install xfsprogs

UbuntuやDebianでFAT系を扱う場合は、dosfstoolsが必要なことがあります。

sudo apt install dosfstools

既存のファイルシステムがあると警告される

すでにファイルシステムがあるパーティションにmkfsを実行すると、警告が出ることがあります。

これは、既存データを上書きする可能性があるためです。

本当に初期化してよい対象か、もう一度確認してください。

lsblk -f
sudo blkid /dev/sdb1

よくある質問

mkfsコマンドは何に使いますか?

パーティションやブロックデバイスに、ext4xfsなどのファイルシステムを作成するために使います。

mkfsを実行するとデータは消えますか?

基本的に対象パーティション内の既存データは失われます。実行前に必ず対象デバイスを確認し、必要なデータはバックアップしてください。

ext4でフォーマットするにはどうすればよいですか?

mkfs.ext4を使用します。

sudo mkfs.ext4 /dev/sdb1

xfsでフォーマットするにはどうすればよいですか?

mkfs.xfsを使用します。

sudo mkfs.xfs /dev/sdb1

fdiskとmkfsの違いは何ですか?

fdiskはパーティションを作成・削除するコマンドです。mkfsは作成したパーティションにファイルシステムを作成するコマンドです。

mkfsを実行しただけでファイル保存できますか?

いいえ。通常はmkfsでファイルシステムを作成したあと、mountでディレクトリへマウントする必要があります。

sudo mkdir -p /data
sudo mount /dev/sdb1 /data

mkfs後にUUIDは変わりますか?

ファイルシステムを作り直すとUUIDが変わることがあります。作成後はblkidlsblk -fで確認しましょう。

マウント中のパーティションにmkfsできますか?

基本的に行うべきではありません。対象がマウント中か確認し、必要ならアンマウントしてから作業します。

findmnt /data
sudo umount /data

UbuntuやCentOS Streamでも使えますか?

はい。Ubuntu、Debian、CentOS Stream、Rocky Linux、AlmaLinuxなど、多くのLinuxディストリビューションで利用できます。ただし、ファイルシステム種類によっては追加パッケージが必要な場合があります。

まとめ

mkfsコマンドは、Linuxでパーティションにファイルシステムを作成するためのコマンドです。

ext4を作成する場合は、次のように実行します。

sudo mkfs.ext4 /dev/sdb1

xfsを作成する場合は、次のように実行します。

sudo mkfs.xfs /dev/sdb1

ファイルシステム作成後は、マウントポイントを作成してマウントします。

sudo mkdir -p /data
sudo mount /dev/sdb1 /data

マウント状態は、次のコマンドで確認できます。

df -h /data
findmnt /data
lsblk

fdiskはパーティションを作るコマンド、mkfsはファイルシステムを作るコマンド、mountはファイルシステムをディレクトリへ接続するコマンドです。

追加ディスクを使えるようにする流れでは、この3つの役割を分けて理解することが大切です。

sudo fdisk /dev/sdb
sudo mkfs.ext4 /dev/sdb1
sudo mount /dev/sdb1 /data

mkfsは便利ですが、対象を間違えるとデータを失う危険があります。実行前には必ずlsblk -fblkidで対象を確認し、必要なデータはバックアップしてから作業しましょう。

コメント

タイトルとURLをコピーしました