mkfsコマンドの使い方を徹底解説!Linuxのファイルシステム作成とストレージ管理の基本
生徒
「Linux(リナックス)で新しいハードディスクやUSBメモリを使えるようにしたいのですが、ただ接続するだけじゃダメなんですか?」
先生
「そうですね。Linuxでは新しく追加したストレージを利用するために、フォーマットという作業が必要です。そこで使うのがmkfs(エムケーエフエス)コマンドですよ。」
生徒
「フォーマットって、初期化のことですよね。mkfsという名前には何か意味があるんですか?」
先生
「make file system(メイク・ファイル・システム)の略で、ファイルシステムを作成するという意味です。この作業をしないと、OSはデータをどこにどう書き込めばいいか分からないんです。」
生徒
「なるほど!難しそうに見えますが、初心者でも安全に操作できますか?」
先生
「手順をしっかり守れば大丈夫です。データの消去を伴う強力なコマンドなので、注意点も含めてじっくり解説していきますね。」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. mkfsコマンドとは?
mkfs(読み方はエムケーエフエス)コマンドは、Linux(リナックス)においてパーティション上にファイルシステムを作成するためのコマンドです。Windows(ウィンドウズ)やMac(マック)で言うところの「フォーマット(初期化)」を行うツールだと考えると分かりやすいでしょう。
ストレージ(記憶装置:キオクソウチ)は、買ってきたばかりの状態では、単なる箱のようなものです。そこにデータを保存するための「本棚」や「索引」を作る作業が、ファイルシステムの作成です。mkfsを実行することで、OS(オーエス)がファイルを読み書きできる環境が整います。
ファイルシステムにはいくつか種類があり、Linuxで標準的なext4(イーエックスティーフォー)や、大容量向けのxfs(エックスエフエス)、Windowsでも読み書きできるfat32(ファットサンジュウニ)などを用途に合わせて選択できます。
2. ファイルシステムの役割と仕組み
ファイルシステム(読み方はファイルシステム)は、HDD(ハードディスクドライブ)やSSD(ソリッドステートドライブ)などの記憶媒体に、どのようにデータを配置し、管理するかを規定する仕組みのことです。
もしファイルシステムがなければ、データは単なる0と1の羅列として保存されるだけで、どこからどこまでが一つの写真なのか、ファイル名は何なのかを判断することができません。mkfsコマンドを使ってファイルシステムを作成することで、以下のような管理が可能になります。
- ファイル名の管理とディレクトリ(フォルダ)構造の構築
- ファイルの作成日時、更新日時、所有者などの属性情報の保持
- 空き領域の管理とデータの効率的な配置
Linuxではこの管理情報を「iノード(アイノード)」という仕組みで管理しているのが特徴です。mkfsコマンドはこのiノードの領域も確保してくれます。
3. mkfsコマンドの基本構文
mkfsコマンドは非常に強力な権限を必要とするため、通常は管理者権限(root権限:ルートケンゲン)で実行します。基本的な書き方は以下の通りです。
mkfs -t [ファイルシステムの種類] [デバイス名]
また、最近のLinuxディストリビューションでは、mkfs.ext4やmkfs.xfsといった、ドットで繋いだ専用のコマンド形式を使うのが一般的です。これらは内部的にmkfsを呼び出しており、初心者にも直感的で使いやすくなっています。
実行する際は、必ず対象のデバイス名(例:/dev/sdb1)を間違えないように確認しましょう。間違えると、既存のデータがすべて消去されてしまいます。
4. ext4ファイルシステムを作成する方法
現在、Linuxで最も汎用性が高く、信頼されているのがext4(イーエックスティーフォー)です。まずはこの形式でフォーマットする手順を見てみましょう。
以下の例では、新しく追加したディスクデバイス /dev/sdb1(エスディービーワン)をext4形式で初期化しています。
mkfs.ext4 /dev/sdb1
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 5242880 4k blocks and 1310720 inodes
Filesystem UUID: a1b2c3d4-e5f6-7890-abcd-ef1234567890
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
実行結果に「done」と表示されれば成功です。これで、この領域はext4形式のストレージとして認識される準備が整いました。
5. XFSファイルシステムを作成する方法
大容量のストレージや、大規模なデータベースを扱う場合に適しているのがxfs(エックスエフエス)です。RHEL(レッドハット・エンタープライズ・リナックス)などの企業向けOSでは、標準のファイルシステムとして採用されています。
xfsは大量のファイルを高速に処理できるのが強みです。作成方法はext4とほぼ同じですが、コマンド名がmkfs.xfsになります。
mkfs.xfs /dev/sdb2
meta-data=/dev/sdb2 isize=512 agcount=4, agsize=65536 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=262144, imaxpg=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunits=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
このように、xfsは作成時に詳細なパラメータ(設定値)が表示されるのが特徴です。
6. Windowsと共有できるFAT32形式で作成する
USBメモリなどを、LinuxだけでなくWindows(ウィンドウズ)パソコンでも使いたい場合は、vfat(ブイファット)という形式でフォーマットします。これは一般的にFAT32(ファットサンジュウニ)と呼ばれます。
Linux以外のOSとの互換性を重視する場合に非常に便利な選択肢です。ただし、1ファイルの最大サイズが4GBまでという制限がある点には注意してください。
mkfs.vfat -F 32 /dev/sdc1
mkfs.fat 4.2 (2021-01-31)
オプションの「-F 32」は、FAT32形式を指定するという意味です。これで、デジカメやゲーム機、Windowsマシンでも読み取れるストレージになります。
7. 作成したファイルシステムを確認する
mkfsコマンドでファイルシステムを作成した後は、正しく反映されているかを確認する必要があります。その際によく使われるのがlsblk(エルエスビーエルケー)コマンドです。
「-f」オプションを付けることで、それぞれのパーティションがどのファイルシステム(FSTYPE)でフォーマットされているかを表示できます。これは一般ユーザーでも実行可能です。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
└─sda1 ext4 c2d3e4f5-g6h7-i8j9-k0l1-m2n3o4p5q6r7 /
sdb
├─sdb1 ext4 a1b2c3d4-e5f6-7890-abcd-ef1234567890
└─sdb2 xfs b2c3d4e5-f6g7-8901-bcde-f01234567891
この結果を見ることで、先ほど作成したsdb1がext4、sdb2がxfsになっていることが一目で分かります。UUID(ユーユーアイディー)は、デバイスを一意に識別するための長い番号です。
8. mkfsコマンド実行時の注意点と安全策
mkfsコマンドは非常に便利な反面、誤って使用すると取り返しのつかないデータの紛失を招きます。初心者が安全に作業するためのポイントをまとめました。
- デバイス名の再確認: フォーマット対象が本当に正しいか、
fdisk -lやlsblkで何度も確認してください。 - マウントの解除: 使用中のデバイス(マウントされているデバイス)に対してmkfsを実行してはいけません。必ず
umount(アンマウント)コマンドで接続を解除してから行います。 - バックアップの徹底: 初期化はデータをすべて消去します。必要なデータが入っているディスクを誤って指定しないよう、常にバックアップを取る習慣をつけましょう。
歴史的な背景として、初期のUnix(ユニックス)ではファイルシステムの作成は非常に複雑な手作業でしたが、現在のLinuxではmkfsというシンプルなインターフェースに統合され、誰でも簡単に扱えるようになりました。しかし、その「手軽さ」ゆえのミスには十分気をつけたいですね。
LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。
Linux教科書 LPICレベル1 スピードマスター問題集を見る※ Amazonアソシエイト広告リンク
まとめ
今回の記事では、Linux環境におけるストレージ管理の要となるmkfsコマンド(make file system)について、その役割から具体的な操作手順、注意点までを網羅して解説してきました。新しいハードディスクやSSD、USBメモリを導入した際、単に物理的に接続するだけではOSはデータを保存する場所として認識できません。そこで、mkfsコマンドを用いて「ファイルシステム」というデータの管理構造を作成する、いわゆる「フォーマット」というプロセスが必要不可欠になります。
Linuxでは、標準的なext4、エンタープライズ用途に強いxfs、Windowsとの互換性に優れたvfat(FAT32)など、用途に応じた多彩なファイルシステムが選択可能です。それぞれの形式には特徴があり、例えばext4はバランスの取れた汎用性、xfsは大容量データの高速処理、vfatはマルチプラットフォームでの共有といった強みを持っています。
また、mkfsコマンドの実行には管理者権限(sudo)が必要であり、指定したデバイス上のデータはすべて消去されるという強力な性質を持っています。そのため、作業前にはlsblkコマンドやfdisk -lコマンドを駆使して、対象となるデバイス名(/dev/sdb1など)に間違いがないかを、石橋を叩いて渡るように慎重に確認することが、サーバー構築やシステム運用の現場では極めて重要です。
mkfsコマンドの実践的な応用とオプション活用
基本的な使い方のほかにも、mkfsには細かな制御を可能にするオプションが用意されています。例えば、ファイルシステムに任意の名前を付ける「ラベル」設定や、予期せぬトラブルを避けるためのチェック機能などがあります。以下に、現場でも役立つ応用的なコマンド例をまとめました。
| ファイルシステム形式 | コマンド例 | 主な特徴・用途 |
|---|---|---|
| ext4 | mkfs.ext4 -L "DATA_DISK" /dev/sdb1 |
Linuxの標準形式。ラベル(-L)を付けて識別性を向上。 |
| xfs | mkfs.xfs -f /dev/sdb2 |
大規模ストレージ向け。-fオプションで強制上書き(慎重に)。 |
| vfat | mkfs.vfat -n "USB_MEM" -F 32 /dev/sdc1 |
Windows/Mac/Linux間でのデータ移動。ボリューム名(-n)を指定。 |
ストレージ管理の自動化を支えるファイルシステム作成
インフラエンジニアやプログラマーにとって、ファイルシステムの作成はシェルスクリプトなどでの自動化対象にもなります。例えば、クラウドサーバーに動的にディスクを追加する際、以下のようなスクリプトの流れで環境構築を行います。
#!/bin/bash
# ストレージの初期化からマウントまでを自動化するサンプル
DEVICE="/dev/sdb1"
MOUNT_POINT="/mnt/data"
# ファイルシステムの作成(ext4形式)
sudo mkfs.ext4 ${DEVICE}
# マウントポイントの作成
if [ ! -d "${MOUNT_POINT}" ]; then
sudo mkdir -p ${MOUNT_POINT}
fi
# マウントの実行
sudo mount ${DEVICE} ${MOUNT_POINT}
# 結果表示
echo "ストレージの準備が完了しました。"
lsblk -f ${DEVICE}
このように、mkfsコマンドは単独で使用するだけでなく、システム全体の構成管理の一部として理解しておくことで、より高度なLinuxサーバーの運用が可能になります。常に「データの重要性」を念頭に置きつつ、適切なファイルシステムを選択できるスキルを身につけていきましょう。
生徒
「先生、mkfsコマンドの使い方がかなり明確になってきました!要するに、Linuxで新しい『入れ物』を使えるようにするための大切な儀式のようなものですね。」
先生
「その通りです!良い表現ですね。ただの鉄の塊であるディスクに、OSが理解できる言語で『目次』を書き込むような作業です。実際にコマンドを叩くときに、一番怖かったポイントはありますか?」
生徒
「やっぱり、デバイス名を間違えて既存のデータを消しちゃうことですね。/dev/sdaと/dev/sdbを一文字間違えるだけで大惨事になると思うと、エンターキーを押す指が震えそうです。」
先生
「その慎重さは素晴らしい武器になりますよ。プロの現場でも、実行前に必ずlsblkでパーティションのサイズやマウント状況をダブルチェック、トリプルチェックします。ちなみに、用途によってファイルシステムを使い分ける理由は理解できましたか?」
生徒
「はい!Linux専用なら信頼のext4、大きなデータを扱うサーバーなら高速なxfs、友達のWindowsパソコンにデータを渡すなら互換性のFAT32、という感じですよね。用途に合わせた『本棚』の種類を選ぶ感覚ですね。」
先生
「完璧な理解です。もし間違えて作成してしまっても、マウントする前であれば別の形式でmkfsをやり直すことも可能です(もちろん中のデータは消えますが)。まずは仮想環境などで、何度も練習して手に馴染ませてみてください。」
生徒
「ありがとうございます!次は、作成したファイルシステムをOSが常に起動時に読み込んでくれるように、fstab(エフエスタブ)の設定についても勉強してみたいと思います。Linuxのストレージ管理、奥が深くて面白いです!」
先生
「その意気です。一歩ずつ着実に進んでいきましょう。コマンド一つでシステムが劇的に変化する。それがLinuxを操る醍醐味ですからね。これからも安全第一で学習を続けていきましょう!」