mkfs(ファイルシステムの作成)
『mkfs』は Linux でファイルシステムを作成するコマンド群です。パーティションやブロックデバイスをフォーマットして使用可能な状態にします。ext4・xfs・btrfs という3つの主要なファイルシステム形式を使い分けることで、汎用サーバー・高負荷データベース・スナップショットが必要な環境など用途に応じた最適な選択ができます。作成したファイルシステムは mount コマンドで一時的にマウントし、/etc/fstab に記述することで OS 再起動後も自動的にマウントされるよう永続化できます。
構文
# -----------------------------------------------
# ファイルシステムの作成(mkfs)
# -----------------------------------------------
# mkfs.ext4 {デバイス}
# → ext4 ファイルシステムを作成します
# → 汎用用途向けの標準的なファイルシステムです
# 例: sudo mkfs.ext4 /dev/sdb1
# mkfs.ext4 -L {ラベル名} {デバイス}
# → ボリュームラベルを付けて ext4 を作成します
# 例: sudo mkfs.ext4 -L data01 /dev/sdb1
# mkfs.xfs {デバイス}
# → xfs ファイルシステムを作成します
# → 高負荷・大容量向けで RHEL 系のデフォルトです
# 例: sudo mkfs.xfs /dev/sdb1
# mkfs.xfs -L {ラベル名} {デバイス}
# → ボリュームラベルを付けて xfs を作成します
# 例: sudo mkfs.xfs -L data01 /dev/sdb1
# mkfs.btrfs {デバイス}
# → btrfs ファイルシステムを作成します
# → スナップショット・サブボリューム・圧縮に対応しています
# 例: sudo mkfs.btrfs /dev/sdb1
# mkfs.btrfs -L {ラベル名} {デバイス}
# → ボリュームラベルを付けて btrfs を作成します
# 例: sudo mkfs.btrfs -L data01 /dev/sdb1
# -----------------------------------------------
# マウントとアンマウント(mount / umount)
# -----------------------------------------------
# mount {デバイス} {マウントポイント}
# → ファイルシステムをディレクトリにマウントします
# 例: sudo mount /dev/sdb1 /mnt/data
# mount -t {ファイルシステム型} {デバイス} {マウントポイント}
# → ファイルシステム型を明示してマウントします
# 例: sudo mount -t ext4 /dev/sdb1 /mnt/data
# 例: sudo mount -t xfs /dev/sdb1 /mnt/data
# mount -o {オプション} {デバイス} {マウントポイント}
# → マウントオプションを指定します
# 例: sudo mount -o ro /dev/sdb1 /mnt/data (読み取り専用)
# 例: sudo mount -o remount,rw /dev/sdb1 /mnt/data(再マウントで読み書き可に)
# mount
# → 現在マウント中のファイルシステム一覧を表示します
# umount {マウントポイントまたはデバイス}
# → ファイルシステムをアンマウントします
# 例: sudo umount /mnt/data
# 例: sudo umount /dev/sdb1
# -----------------------------------------------
# /etc/fstab のフォーマット
# -----------------------------------------------
# {デバイス} {マウントポイント} {FS型} {オプション} {dump} {pass}
#
# フィールド1(デバイス) : デバイスファイル・UUID・LABELを指定します
# フィールド2(マウントポイント): マウント先のディレクトリパスを指定します
# フィールド3(FS型) : ext4 / xfs / btrfs / swap など
# フィールド4(オプション) : defaults / ro / noatime / nofail など
# フィールド5(dump) : dump コマンドのバックアップ対象(通常 0)
# フィールド6(pass) : fsck の実行順(ルートは 1、それ以外は 2 または 0)
#
# 例(UUID指定):
# UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /mnt/data ext4 defaults,nofail 0 2
構文一覧
| コマンド / フィールド | 説明 |
|---|---|
mkfs.ext4 {デバイス} | ext4 ファイルシステムを作成します。汎用用途向けの標準的な選択肢で、Ubuntu や Debian のデフォルトです。ジャーナリング機能によりクラッシュ後の復旧が容易です。 |
mkfs.xfs {デバイス} | xfs ファイルシステムを作成します。大容量ファイル・高並列 I/O に強く、RHEL 系 Linux のデフォルトです。一度作成したファイルシステムのオンライン拡張が可能ですが縮小はできません。 |
mkfs.btrfs {デバイス} | btrfs ファイルシステムを作成します。スナップショット・サブボリューム・透過圧縮・RAID 機能を備えた次世代ファイルシステムです。Fedora・openSUSE のデフォルトとして採用されています。 |
mount -t {型} {デバイス} {マウントポイント} | ファイルシステム型を明示してデバイスをマウントします。型を省略しても自動判別されますが、明示することで誤検出を防げます。 |
umount {マウントポイント} | マウント中のファイルシステムをアンマウントします。対象ディレクトリで作業中のプロセスがあると「device is busy」エラーになります。lsof +D {マウントポイント} でアクセス中のプロセスを確認できます。 |
mount -a | /etc/fstab に記述されたすべてのエントリをマウントします。fstab 編集後の動作確認に使用します。 |
blkid {デバイス} | デバイスの UUID・ラベル・ファイルシステム型を表示します。fstab に UUID を記載する際に使用します。 |
| fstab フィールド1(デバイス) | マウントするデバイスを指定します。/dev/sdb1 のようなデバイスパスは再起動後に変わることがあるため、UUID=... または LABEL=... での指定が推奨されます。 |
| fstab フィールド2(マウントポイント) | マウント先のディレクトリパスを指定します。マウント前にディレクトリを mkdir で作成しておく必要があります。 |
| fstab フィールド3(FS型) | ファイルシステムの種類を指定します。ext4 / xfs / btrfs / swap / vfat などが指定できます。auto にすると自動判別されます。 |
| fstab フィールド4(オプション) | マウントオプションをカンマ区切りで指定します。defaults(rw / suid / exec / auto / nouser / async)が基本です。nofail はデバイスが存在しなくても起動を継続させるオプションです。 |
| fstab フィールド5(dump) | 古い dump コマンドによるバックアップ対象かどうかを指定します。現代の環境では通常 0(無効)を指定します。 |
| fstab フィールド6(pass) | 起動時の fsck(ファイルシステム整合性チェック)の実行順を指定します。ルートファイルシステムは 1、追加ディスクは 2、スキップする場合は 0 を指定します。 |
使用例
ext4 ファイルシステムの作成とマウント
# ----------------------------------------------- # 新しいディスク /dev/sdb を ext4 でフォーマットして永続マウントします # (PSB 捜査1課の監視データ保存用ディスクを想定しています) # ----------------------------------------------- # まずデバイスの状態を確認します # /dev/sdb がパーティションなしの状態であることを確認します sudo fdisk -l /dev/sdb # パーティションを作成します(fdisk でパーティション /dev/sdb1 を作成) # 詳細は disk_partition のページを参照してください sudo fdisk /dev/sdb # ext4 ファイルシステムを作成します # -L でボリュームラベル「psychopass-data」を付けます sudo mkfs.ext4 -L psychopass-data /dev/sdb1 # マウントポイントのディレクトリを作成します sudo mkdir -p /mnt/psychopass-data # 一時的にマウントして動作確認します sudo mount /dev/sdb1 /mnt/psychopass-data # マウントできていることを確認します df -h /mnt/psychopass-data # /etc/fstab への永続マウント設定のために UUID を取得します # UUID は再起動後もデバイスを一意に識別できるため /dev/sdb1 より安全です sudo blkid /dev/sdb1
実行するコマンドは次の通りです。
$ sudo blkid /dev/sdb1 /dev/sdb1: LABEL="psychopass-data" UUID="c7a94e12-3f8b-4d02-9e5a-1b8d06f72c34" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="8e3d21a0-01"
実装例は次の通りです。
# /etc/fstab にマウント設定を追記します # UUID を使用してデバイスを指定します(デバイス名は変わることがあります) # nofail を指定することでディスクが存在しなくても起動が止まりません echo 'UUID=c7a94e12-3f8b-4d02-9e5a-1b8d06f72c34 /mnt/psychopass-data ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab # 一度アンマウントして fstab 経由でマウントし直します sudo umount /mnt/psychopass-data # fstab の全エントリをマウントします(設定に誤りがあればここでエラーになります) sudo mount -a # マウントされていることを最終確認します df -h /mnt/psychopass-data
実行するコマンドは次の通りです。
$ df -h /mnt/psychopass-data Filesystem Size Used Avail Use% Mounted on /dev/sdb1 197G 1.6G 186G 1% /mnt/psychopass-data
xfs ファイルシステムの作成(RHEL 系)
# ----------------------------------------------- # /dev/sdc1 を xfs でフォーマットして永続マウントします # (MWPSB の犯罪係数解析ログ用の高 I/O ディスクを想定しています) # ----------------------------------------------- # xfs ファイルシステムを作成します # RHEL 系(AlmaLinux / Rocky Linux)のデフォルトはこの形式です sudo mkfs.xfs -L dominator-log /dev/sdc1 # マウントポイントを作成します sudo mkdir -p /mnt/dominator-log # ファイルシステム型を明示して xfs としてマウントします sudo mount -t xfs /dev/sdc1 /mnt/dominator-log # UUID を確認して fstab に追記します sudo blkid /dev/sdc1
実行するコマンドは次の通りです。
$ sudo blkid /dev/sdc1 /dev/sdc1: LABEL="dominator-log" UUID="f2e85b31-7c4a-48d9-b16e-9a2f0c83e471" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="1d7c9b44-01"
実装例は次の通りです。
# fstab へ追記します(xfs はオンライン拡張可能・縮小不可です) echo 'UUID=f2e85b31-7c4a-48d9-b16e-9a2f0c83e471 /mnt/dominator-log xfs defaults,nofail 0 2' | sudo tee -a /etc/fstab # fstab 経由で再マウントして確認します sudo umount /mnt/dominator-log sudo mount -a mount | grep dominator-log
実行するコマンドは次の通りです。
$ mount | grep dominator-log /dev/sdc1 on /mnt/dominator-log type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)
btrfs ファイルシステムの作成(スナップショット対応)
# ----------------------------------------------- # /dev/sdd1 を btrfs でフォーマットしてサブボリューム付きでマウントします # (公安局の事件ファイル保存・スナップショット管理用を想定しています) # ----------------------------------------------- # btrfs ファイルシステムを作成します sudo mkfs.btrfs -L sibyl-archive /dev/sdd1 # マウントポイントを作成してマウントします sudo mkdir -p /mnt/sibyl-archive sudo mount /dev/sdd1 /mnt/sibyl-archive # btrfs サブボリュームを作成します # サブボリュームごとにスナップショットを管理できます sudo btrfs subvolume create /mnt/sibyl-archive/@data sudo btrfs subvolume create /mnt/sibyl-archive/@snapshots # btrfs サブボリュームの一覧を確認します sudo btrfs subvolume list /mnt/sibyl-archive
実行するコマンドは次の通りです。
$ sudo btrfs subvolume list /mnt/sibyl-archive ID 256 gen 7 top level 5 path @data ID 257 gen 8 top level 5 path @snapshots
実装例は次の通りです。
# UUID を取得して fstab に追記します # subvol= オプションでサブボリュームを指定してマウントします sudo blkid /dev/sdd1
実行するコマンドは次の通りです。
$ sudo blkid /dev/sdd1 /dev/sdd1: LABEL="sibyl-archive" UUID="8a3d6f09-c21e-4b77-a9e3-5c0871d4b293" UUID_SUB="d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f80" BLOCK_SIZE="4096" TYPE="btrfs" PARTUUID="2a4b6c8e-01"
実装例は次の通りです。
# 一度アンマウントしてサブボリュームを指定した fstab 設定で再マウントします sudo umount /mnt/sibyl-archive # @data サブボリュームを /mnt/sibyl-archive にマウントします echo 'UUID=8a3d6f09-c21e-4b77-a9e3-5c0871d4b293 /mnt/sibyl-archive btrfs defaults,subvol=@data,compress=zstd,nofail 0 0' | sudo tee -a /etc/fstab sudo mount -a # btrfs ファイルシステムの詳細情報を確認します sudo btrfs filesystem show /mnt/sibyl-archive
実行するコマンドは次の通りです。
$ sudo btrfs filesystem show /mnt/sibyl-archive Label: 'sibyl-archive' uuid: 8a3d6f09-c21e-4b77-a9e3-5c0871d4b293 Total devices 1 FS bytes used 1.02MiB devid 1 size 500.00GiB used 3.02GiB path /dev/sdd1
概要
『mkfs』コマンド群と mount は、Linux でストレージを利用可能にするための基本的な操作です。ファイルシステムの選択は用途によって使い分けることが重要です。ext4 は長年の実績があり Debian・Ubuntu 系のデフォルトで、汎用サーバーに最適です。xfs は大容量・高並列 I/O に強く RHEL 系のデフォルトで、データベースサーバーやストレージサーバーに向いています。btrfs はスナップショット・サブボリューム・透過圧縮などの高度な機能を持ち、バックアップ戦略を組み込んだ管理が可能です。ファイルシステムを作成する前には必ず パーティション管理(fdisk / parted) でパーティションを用意してください。大容量ディスクの柔軟な管理には LVM(論理ボリューム管理) との組み合わせも有効です。マウント後のディスク使用量確認には df / du コマンドを使用します。/etc/fstab の誤った設定はシステムの起動不能を引き起こす可能性があるため、編集後は必ず mount -a で動作確認をしてから再起動してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。