こういった場面はLinuxサーバーの構築・管理を始めたエンジニアがよく直面します。ファイルシステムの選択を誤ると、後からのパフォーマンス問題やデータ保護の不足につながります。
この記事では、Linuxの主要ファイルシステムであるext4・xfs・btrfsの特徴と違いを比較し、各ファイルシステムのフォーマットとマウント手順を実コマンド付きで解説します。Rocky Linux 9 / RHEL 9 / Ubuntu 24.04 LTS で動作確認済みです。
・ext4・xfs・btrfsの違いと用途の使い分け方
・mkfsコマンドでフォーマットする手順(ext4/xfs/btrfs対応)
・mountコマンドで一時マウントする方法
・/etc/fstabへのUUID登録と永続マウントの設定方法
・ファイルシステムの確認コマンド(df -hT / lsblk -f)
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Linuxのファイルシステムとは何か
ファイルシステムとは、ディスク上のデータをどのように管理・アクセスするかを定義する仕組みです。データの格納方法・ファイル名の管理・パーミッション・ジャーナリング(障害復旧機能)などが、ファイルシステムの種類によって異なります。Linuxで使われる主要なファイルシステムは以下の3つです。
・ext4:Linux標準の汎用ファイルシステム。互換性が最も高い
・xfs:大規模ストレージ・高負荷環境向け。RHEL/Rocky Linuxのデフォルト
・btrfs:スナップショット・サブボリューム・圧縮を内蔵した次世代型
ext4:Linux標準の汎用ファイルシステム
ext4(Fourth Extended Filesystem)はLinuxカーネル 2.6.28 からメインラインに組み込まれた、最も広く使われているファイルシステムです。1. ext4の主な特徴
・最大ファイルサイズ:16TiB(4KiBブロックサイズ時)・最大ボリュームサイズ:1EiB
・ジャーナリング:対応(data=ordered がデフォルト)
・エクステント:連続ブロックをまとめて管理し、断片化を抑制
・遅延アロケーション:ブロック割り当てを遅延させることで書き込みパフォーマンスを向上
ext4は Ubuntu 系ディストリビューションのデフォルトであり、古いハードウェア・仮想環境・小規模サーバーに最適です。
2. ext4でフォーマットとマウントを行う
# /dev/sdb1 を ext4 でフォーマット $ sudo mkfs.ext4 /dev/sdb1 mke2fs 1.46.5 (30-Dec-2021) Creating filesystem with 5242880 4k blocks and 1310720 inodes Filesystem UUID: 7a3b4c5d-e6f7-8901-abcd-2345678901ef Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, ... ... Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done # マウントポイントを作成してマウント $ sudo mkdir -p /data $ sudo mount /dev/sdb1 /data # マウント確認 $ df -hT /data Filesystem Type Size Used Avail Use% Mounted on /dev/sdb1 ext4 20G 44M 19G 1% /data
xfs:大容量・高スループット向けファイルシステム
xfsはSGI(Silicon Graphics)が開発し、現在はRed Hat / Rocky Linux / RHEL系のデフォルトファイルシステムです。大規模データ・高並列I/O・大容量ファイルの扱いに特化しています。1. xfsの主な特徴
・最大ファイルサイズ:8EiB(実質無制限)・最大ボリュームサイズ:8EiB
・ジャーナリング:メタデータのみ(高速)
・遅延ログ:ジャーナリングの高速化機能
・動的inode割り当て:inode枯渇が起きにくい構造
xfsの注意点は、ファイルシステムの縮小ができないことです。容量を削減したい場合はデータを退避してフォーマットし直す必要があります。
2. xfsでフォーマットとマウントを行う
# /dev/sdc1 を xfs でフォーマット $ sudo mkfs.xfs /dev/sdc1 meta-data=/dev/sdc1 isize=512 agcount=4, agsize=1310720 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 data = bsize=4096 blocks=5242880, imaxpct=25 = 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 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 # マウント $ sudo mkdir -p /bigdata $ sudo mount /dev/sdc1 /bigdata # マウント確認 $ df -hT /bigdata Filesystem Type Size Used Avail Use% Mounted on /dev/sdc1 xfs 20G 34M 20G 1% /bigdata
btrfs:スナップショットと圧縮を内蔵した次世代型
btrfs(B-Tree Filesystem)はOracle が開発を主導した次世代ファイルシステムです。SuSE/openSUSEではデフォルト採用されており、Fedoraでも採用されています。1. btrfsの主な特徴
・スナップショット:CoW(Copy-on-Write)により、コピーなしで瞬時にスナップショットを作成・サブボリューム:1つのファイルシステム内に独立した仮想ボリュームを作成可能
・インライン圧縮:zlib / lzo / zstd による透過的なデータ圧縮
・内蔵RAID:RAID 0, 1, 5, 6, 10 に対応(RAID 5/6は本番非推奨)
・最大ボリュームサイズ:16EiB
2. btrfsでフォーマットとマウントを行う
# /dev/sdd1 を btrfs でフォーマット $ sudo mkfs.btrfs /dev/sdd1 btrfs-progs v5.16.2 See https://btrfs.readthedocs.io for more information. Label: (null) UUID: c1d2e3f4-a5b6-7890-cdef-4567890123ab Node size: 16384 Sector size: 4096 Filesystem size: 20.00GiB Block group profiles: Data: single 8.00MiB Metadata: DUP 1.00GiB System: DUP 8.00MiB ... # 圧縮を有効にしてマウント $ sudo mkdir -p /compressed $ sudo mount -o compress=zstd /dev/sdd1 /compressed # マウント確認 $ df -hT /compressed Filesystem Type Size Used Avail Use% Mounted on /dev/sdd1 btrfs 20G 17M 20G 1% /compressed # スナップショットの作成 $ sudo btrfs subvolume snapshot /compressed /compressed/snap_20260407 Create a snapshot of '/' in '/compressed/snap_20260407'
/etc/fstabへの登録(永続マウント)
再起動後もマウントを維持するには、/etc/fstab に設定を追記します。デバイス名ではなく UUID を使うことで、ディスクの追加・交換後も設定が狂いにくくなります。1. UUIDを確認する
# blkid コマンドで UUID を確認 $ sudo blkid /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sdb1: UUID="7a3b4c5d-e6f7-8901-abcd-2345678901ef" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="..." /dev/sdc1: UUID="8b4c5d6e-f7a8-9012-bcde-5678901234fg" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="..." /dev/sdd1: UUID="c1d2e3f4-a5b6-7890-cdef-4567890123ab" UUID_SUB="..." TYPE="btrfs" PARTUUID="..."
2. /etc/fstabに追記する
# /etc/fstab への追記例 # ext4 UUID=7a3b4c5d-e6f7-8901-abcd-2345678901ef /data ext4 defaults,nofail 0 2 # xfs UUID=8b4c5d6e-f7a8-9012-bcde-5678901234fg /bigdata xfs defaults,nofail 0 2 # btrfs(圧縮有効) UUID=c1d2e3f4-a5b6-7890-cdef-4567890123ab /compressed btrfs compress=zstd,nofail 0 0 # fstab の構文チェック(-a オプションで全エントリを再マウント) $ sudo mount -a && echo "fstab OK" fstab OK
実務Tips:ファイルシステムの確認コマンド
1. 現在のファイルシステムを確認する
# マウント済みのファイルシステム一覧 $ df -hT Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 3.8G 0 3.8G 0% /dev tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm /dev/nvme0n1p1 xfs 50G 12G 38G 25% / /dev/sdb1 ext4 20G 100M 19G 1% /data /dev/sdc1 xfs 20G 5.0G 15G 25% /bigdata # ブロックデバイスの一覧(パーティションとファイルシステム確認) $ lsblk -f NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS nvme0n1 |-nvme0n1p1 xfs / ... 37G 25% / |-nvme0n1p2 swap 1 ... [SWAP] sdb |-sdb1 ext4 1.0 7a3b4c5d-... 19G 1% /data sdc |-sdc1 xfs ... 8b4c5d6e-... 15G 25% /bigdata
2. ファイルシステムの使用状況を詳細確認する
# ext4 の詳細情報 $ sudo tune2fs -l /dev/sdb1 | grep -E "Filesystem|Block|Inode|Last|Mount" Filesystem volume name: /data Last mounted on: /data Filesystem UUID: 7a3b4c5d-... Block count: 5242880 Reserved block count: 262144 Free blocks: 5191234 Inode count: 1310720 Free inodes: 1310709 # xfs の詳細情報 $ sudo xfs_info /dev/sdc1 meta-data=/dev/sdc1 isize=512 agcount=4, agsize=1310720 blks ...
トラブルシュート:ファイルシステムのエラー対処
「mount: wrong fs type, bad option, bad superblock」が出る
指定したデバイスのファイルシステムタイプが一致しない場合に発生します。# ファイルシステムタイプを確認してからマウント $ sudo blkid /dev/sdb1 /dev/sdb1: UUID="7a3b4c5d-..." TYPE="ext4" # タイプを明示してマウント $ sudo mount -t ext4 /dev/sdb1 /data
「You can't shrink an xfs filesystem」のエラー
xfsはファイルシステムの縮小をサポートしていません。容量を変更したい場合は、データをバックアップしてフォーマットし直す必要があります。# xfs は拡張のみ可能(縮小不可) $ sudo xfs_growfs /dev/sdc1 meta-data=/dev/sdc1 isize=512 ... # 縮小が必要な場合: データをrsyncでバックアップ → 再フォーマット → 復元 $ sudo rsync -av /bigdata/ /backup/ $ sudo umount /bigdata $ sudo mkfs.xfs -f /dev/sdc1 $ sudo mount /dev/sdc1 /bigdata $ sudo rsync -av /backup/ /bigdata/
ext4のfsckでファイルシステムを修復する
ファイルシステムが破損した場合、アンマウント状態で fsck を実行します。# 必ずアンマウントしてから実行 $ sudo umount /data # 自動修復モードで実行(-y で全質問に yes) $ sudo fsck.ext4 -y /dev/sdb1 e2fsck 1.46.5 (30-Dec-2021) /dev/sdb1: clean, 11/1310720 files, 51646/5242880 blocks # 再マウント $ sudo mount /dev/sdb1 /data
本記事のまとめ
| ファイルシステム | 特徴 | 向いている用途 |
|---|---|---|
| ext4 | 安定・互換性最高・縮小可能 | 汎用・小~中規模・仮想環境 |
| xfs | 大容量・高スループット・RHEL標準 | 大規模DB・ビッグデータ・高I/O |
| btrfs | スナップショット・圧縮・RAID内蔵 | 開発環境・バックアップ・NAS |
mkfs.ext4 /dev/sdX1 |
ext4フォーマット | - |
mkfs.xfs /dev/sdX1 |
xfsフォーマット | - |
mkfs.btrfs /dev/sdX1 |
btrfsフォーマット | - |
df -hT |
マウント済みFSの確認 | - |
lsblk -f |
ブロックデバイスとFSタイプ確認 | - |
関連記事として「Linuxの主要な設定ファイルの場所と内容まとめ」や「LinuxのDNS設定の基本」も合わせてご覧ください。
Linuxのストレージ管理を体系的に学びませんか?
ファイルシステムの仕組みが分かると、ディスク管理・パーティション設計・障害対応の全体像が見えてきます。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:a2psコマンドでポストスクリプト形式にファイルを変換する方法|基本構文とオプション解説
- 前のページへ:Linuxで画像ファイル形式を変換する方法|convertコマンドの基本と一括変換スクリプト
- この記事の属するカテゴリ:Linuxtips・ディレクトリ・ファイル操作へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます