InfraAcademy

InfraAcademy Blog

fstabの6つの欄、説明できますか?LPIC-1のファイルシステムとマウントを練習問題8問で確かめる

著者: ryu | #Linux #LPIC #LPIC-1
Linuxをブラウザで試してみる

Linux・ネットワーク・AWSを、環境構築なしで実践学習できます

この記事を共有

こんにちは、インフラエンジニアのryuです。

今回は、LPIC-1の101試験で出題されるファイルシステムとマウントを、練習問題で確かめていきます。

df や mount は普段から使うコマンドですが、試験では /etc/fstab の欄の順番や、fsck を実行してよいタイミングなど、細かいところまで聞かれます。

この記事では、出題範囲を整理したあと、ファイルを使った練習用のディスクで実際にコマンドを打ってもらい、最後に練習問題8問を解いてもらいます。

LPIC-1のファイルシステムはどこで出題される?

最初に、出題範囲を確認しておきましょう。

ファイルシステムとマウントは、101試験(101-500)の主題104「デバイス、Linuxファイルシステム、ファイルシステム階層標準」に含まれています。この記事で扱うのは次の3つの項目です。

項目 内容 重み 主なコマンド・ファイル
104.1 パーティションとファイルシステムを作成する 2 fdisk gdisk parted mkfs mkswap
104.2 ファイルシステムの整合性を保つ 2 df du fsck e2fsck tune2fs xfs_repair
104.3 ファイルシステムのマウントとアンマウントを制御する 3 /etc/fstab mount umount blkid lsblk

3つを合わせると重みは7あります。コマンドの数が多いので、まずは「作る」「確かめる」「つなぐ」の3つの段階に分けて覚えると整理しやすいです。

ディレクトリの役割(/etc や /var など)がまだあいまいな人は、先にLinuxのディレクトリ構成の解説を読んでおくと、マウント先の話が理解しやすくなります。

パーティションとファイルシステムを作るコマンド

ディスクを使えるようにするには、パーティションを切って、そこにファイルシステムを作る、という2段階の作業が必要です。

パーティションの管理方式には、MBRとGPTの2種類があります。試験でよく比べられるので、違いを表にしておきます。

項目 MBR GPT
基本パーティションの数 最大4つ(拡張パーティションを使えば論理パーティションを追加できる) 一般的な実装で128個まで
扱えるディスクの大きさ 約2TiBまで 2TiBを超えるディスクも扱える
主な操作コマンド fdisk gdisk(fdisk と parted もGPTに対応)

パーティションができたら、mkfs でファイルシステムを作ります。mkfs -t ext4 と mkfs.ext4 は同じ意味で、どちらの書き方も試験に出ます。

mkfs -t ext4 /dev/sdb1     # ext4 を作る(mkfs.ext4 /dev/sdb1 と同じ)
mkfs.xfs /dev/sdb2         # XFS を作る
mkswap /dev/sdb3           # スワップ領域として初期化する
swapon /dev/sdb3           # スワップを有効にする

スワップだけは mkfs ではなく mkswap を使う点に注意してください。初期化しただけでは使われないので、swapon で有効にするところまでがセットです。

fsckとdfで、ファイルシステムの状態を確かめる

次に、104.2の整合性の確認です。

ファイルシステムの検査と修復には fsck を使います。fsck は種類に合わせて e2fsck(ext2/3/4)などを呼び出す入口のコマンドです。

fsck は、原則としてアンマウントした状態のファイルシステムに対して実行します。マウント中のファイルシステムを修復しようとすると、データを壊すおそれがあります。

XFSの場合は、fsck ではなく xfs_repair で修復するのが基本です。ext系とXFSでコマンドが分かれるところは、試験でも狙われやすいです。

空き容量の確認には df、ディレクトリごとの使用量には du を使います。

df -h          # ファイルシステムごとの使用量と空き容量を、読みやすい単位で表示
df -i          # inode の使用状況を表示
du -sh /var/log   # /var/log 以下の合計サイズを表示
tune2fs -l /dev/sdb1   # ext系のスーパーブロックの情報を表示

df -h で空きがあるのにファイルが作れないときは、df -i でinodeが足りなくなっていないかを見ます。この2つの違いは、問題でもよく問われます。

/etc/fstabの6つの欄を覚えよう

いちばん出題されやすいのが、104.3の /etc/fstab です。

/etc/fstab は、起動時にどのファイルシステムをどこへマウントするかを書いておくファイルです。1行が1つのファイルシステムで、空白で区切られた6つの欄があります。

# <デバイス>                               <マウント先> <種類> <オプション> <dump> <fsckの順番>
UUID=c1f915a8-ce16-45c7-85f8-6213507ccbfc  /data        ext4   defaults     0      2

欄ごとの意味を表にまとめます。

順番 欄 意味
1 デバイス /dev/sdb1 のほか、UUID= や LABEL= で指定できる
2 マウント先 マウントするディレクトリ。スワップは none などを書く
3 種類 ext4 xfs swap など
4 オプション defaults noauto ro など。カンマ区切り
5 dump dump コマンドでバックアップするか。通常は 0
6 fsckの順番 ルートは 1、それ以外は 2、検査しないなら 0

デバイス名の /dev/sdb1 は、ディスクをつなぐ順番が変わるとずれることがあります。そのため、blkid で調べたUUIDで書くのが一般的です。

オプションの defaults は、rw,suid,dev,exec,auto,nouser,async をまとめた指定です。noauto を付けると、起動時や mount -a では自動でマウントされなくなります。

fstab の書き方そのものは、fstabの書き方とmountコマンドの解説で詳しく説明しています。

mountコマンドとマウント先で押さえておきたいこと

/etc/fstab とあわせて、mount コマンドの使い方も確認しておきましょう。

mount は、引数を付けずに実行すると、今マウントされているファイルシステムの一覧を表示します。一覧は長くなりやすいので、ツリー形式で見やすく表示する findmnt や、ディスクとパーティションの関係を表示する lsblk もあわせて覚えておくと便利です。

mount                         # マウント中のファイルシステムを一覧表示
mount -t ext4 /dev/sdb1 /data # 種類を指定してマウント
mount -o ro /dev/sdb1 /data   # 読み取り専用でマウント
mount -a                      # fstab のうち noauto 以外をまとめてマウント
lsblk -f                      # ディスク・パーティションと種類、UUID を表示

/etc/fstab に書いてあるファイルシステムなら、mount /data のようにマウント先だけを書いてもマウントできます。足りない情報は fstab から読み取られるためです。

マウント先のディレクトリについては、/mnt は管理者が一時的にマウントする場所、/media はUSBメモリなどの取り外しできるメディアが自動でマウントされる場所、という違いがあります。

また、systemd を使う環境では、/etc/fstab の各行が起動時に mount ユニットに変換されて扱われます。104.3ではこの仕組みを知っているかどうかも範囲に入っているので、systemctl list-units --type=mount で一覧を見られることを覚えておきましょう。

練習用のディスクで、mountとumountを打ってみよう

ここで、実際に手を動かしてみましょう。

新しいディスクを用意しなくても、ファイルをディスクの代わりにして練習できます。root権限が使える練習用のLinuxで、次の課題を順番に試してください。本番のサーバーでは行わないでください。

今日やる練習:ファイルで作ったディスクをマウントする

まず、100MBの空のファイルを作り、そこにext4のファイルシステムを作ります。

truncate -s 100M disk.img
mkfs.ext4 -q -L testdata disk.img
blkid disk.img

blkid を実行すると、筆者の環境では次のように表示されました。UUIDは環境ごとに違う値になります。

disk.img: LABEL="testdata" UUID="c1f915a8-ce16-45c7-85f8-6213507ccbfc" BLOCK_SIZE="4096" TYPE="ext4"

LABEL には -L で付けた名前が、TYPE にはファイルシステムの種類が入っています。/etc/fstab に書くUUIDは、ここで確認します。

続いて、ループデバイスとしてマウントし、df で確認します。マウント先のパスは、表示を短くするため /root/mnt に書き換えています。

mkdir -p mnt
mount -o loop disk.img mnt
df -hT mnt
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/loop0     ext4   90M   24K   83M   1% /root/mnt

Type の列で ext4 としてマウントされたことが分かります。100MBのファイルなのに Size が90Mになっているのは、ジャーナルやinodeテーブルなどの管理用の領域があるためです。Avail が Size から Used を引いた値より少ないのは、root用の予約領域があるためで、ext4ではよくある見え方です。

アンマウントできないときの確認

次に、わざとアンマウントに失敗してみます。マウント先のディレクトリに cd で入ったまま、umount を実行してください。

cd mnt
umount /root/mnt
umount: /root/mnt: target is busy.

target is busy は、そのファイルシステムを使っているプロセスがあるという意味です。ここでは自分のシェルがカレントディレクトリとして使っています。

外に出てからもう一度 umount すれば成功します。最後に、アンマウントした状態で読み取り専用の検査をしてみましょう。

cd ..
umount mnt
e2fsck -n disk.img
e2fsck 1.47.0 (5-Feb-2023)
testdata: clean, 11/25600 files, 2646/25600 blocks

-n は、問題が見つかっても修復せずに「いいえ」と答えるオプションです。clean と出ていれば、ファイルシステムに問題は見つかっていません。

うまくいかないときは、次の表で原因を確認してください。

症状 確認すること
mount で権限がないと言われる root権限で実行しているか
target is busy と出る マウント先に cd で入ったままになっていないか
fstab を書き換えたのに反映されない mount -a を実行したか。systemd の環境では systemctl daemon-reload も必要なことがある
起動時に止まる心配がある findmnt --verify で fstab の書き方を確認したか

LPIC-1のファイルシステムの練習問題8問

ここからは練習問題です。答えは各問題の下の引用にまとめています。先に自分で考えてから確認してください。

問題1:ファイルシステムを作るコマンド

/dev/sdb1 にext4のファイルシステムを作成するコマンドとして、正しいものはどれでしょうか。

  • A. mkfs -t ext4 /dev/sdb1
  • B. mkswap -t ext4 /dev/sdb1
  • C. fdisk -t ext4 /dev/sdb1
  • D. mount -t ext4 /dev/sdb1

正解:A mkfs -t ext4 は mkfs.ext4 と同じ意味です。mkswap はスワップ領域の初期化、fdisk はパーティションの操作、mount はマウントに使います。

問題2:fstabの6番目の欄

/etc/fstab の6番目の欄に 2 と書かれていました。この値の意味として正しいものはどれでしょうか。

  • A. dump でバックアップする世代数
  • B. 起動時に fsck で検査する順番
  • C. マウントを試す回数
  • D. 読み取り専用でマウントする

正解:B 6番目の欄は、起動時に fsck で検査する順番です。ルートファイルシステムは 1、それ以外は 2、検査しない場合は 0 を書きます。

問題3:自動でマウントしない指定

/etc/fstab に書いたファイルシステムを、起動時や mount -a では自動でマウントさせたくありません。オプション欄に書く値として正しいものはどれでしょうか。

  • A. defaults
  • B. nouser
  • C. noauto
  • D. async

正解:C noauto を付けると自動ではマウントされず、必要なときに mount で個別にマウントします。defaults には逆に auto が含まれています。

問題4:UUIDを調べるコマンド

/etc/fstab にUUIDで書くため、パーティションのUUIDを調べたいと考えています。使うコマンドとして適切なものはどれでしょうか。

  • A. blkid
  • B. du
  • C. swapon
  • D. tune2fs -c

正解:A blkid は、ブロックデバイスのUUIDやラベル、ファイルシステムの種類を表示します。lsblk -f でも確認できます。

問題5:fsckを実行するタイミング

ext4のファイルシステムを fsck で修復するときの説明として、正しいものはどれでしょうか。

  • A. マウントしたまま実行するのが安全である
  • B. 原則としてアンマウントしてから実行する
  • C. XFSにも同じ fsck で修復を行うのが基本である
  • D. 修復は df で行う

正解:B マウント中のファイルシステムを修復すると、データを壊すおそれがあります。XFSの修復には xfs_repair を使い、df は容量を表示するだけのコマンドです。

問題6:容量はあるのにファイルが作れない

df -h では空き容量が十分にあるのに、新しいファイルを作れません。最初に確認するとよいコマンドはどれでしょうか。

  • A. df -i
  • B. du -sh /
  • C. mkswap
  • D. umount -a

正解:A 小さなファイルが大量にあると、容量より先にinodeが足りなくなることがあります。df -i の IUse% が100%に近いかを確認します。

問題7:アンマウントできない

umount /data を実行したところ、target is busy と表示されました。原因として考えられるものはどれでしょうか。

  • A. /data が /etc/fstab に書かれていない
  • B. /data のファイルシステムがext4である
  • C. /data 以下のファイルやディレクトリを使っているプロセスがある
  • D. /data にスワップが設定されている

正解:C 使用中のプロセスがあるとアンマウントできません。lsof /data や fuser -vm /data で、どのプロセスが使っているかを調べられます。

問題8:スワップを使えるようにする

/dev/sdb3 をスワップ領域として使いたいと考えています。正しい手順はどれでしょうか。

  • A. mkfs.ext4 /dev/sdb3 を実行してから mount /dev/sdb3
  • B. mkswap /dev/sdb3 を実行してから swapon /dev/sdb3
  • C. swapon /dev/sdb3 を実行してから mkswap /dev/sdb3
  • D. fdisk /dev/sdb3 を実行するだけでよい

正解:B 先に mkswap でスワップ領域として初期化し、そのあと swapon で有効にします。起動時にも使いたい場合は /etc/fstab に種類を swap として書きます。

InfraAcademyで、ファイルシステムの練習を続ける

問題を解いて迷ったところは、コマンドを実際に打って確かめるのがいちばん確実です。

InfraAcademy には、ブラウザ上で動くLinuxの練習環境があります。df -h と df -i を見比べたり、/etc/fstab を cat で開いて6つの欄を1つずつ読んだりするところから始めてみてください。

問題演習は、トップページのInfraAcademy の資格模擬問題にある「(無料)LPICの練習問題で毎日トレーニング300問」で続けられます。間違えた問題は、選択肢に出てきたコマンドの役割を一言で言えるかどうかを確認すると、似た問題で迷いにくくなります。

ほかの主題も練習問題で確かめたい人は、LPIC-1のプロセス管理の練習問題やユーザー・グループ管理の練習問題もあわせて解いてみてください。手を動かす課題はLPIC-1のハンズオン課題にまとめています。

学ぶ順番はLinuxの学習ロードマップ、LPICの勉強全体の進め方はLPICの勉強方法を参考にしてください。

まとめ

今回は、LPIC-1のファイルシステムとマウントを、練習問題8問で確かめました。

  • 出題範囲は101試験の104.1(重み2)、104.2(重み2)、104.3(重み3)
  • 作るのは mkfs、スワップは mkswap と swapon
  • 修復は原則アンマウントしてから。ext系は e2fsck、XFSは xfs_repair
  • /etc/fstab は6つの欄。6番目はfsckの順番で、ルートは 1、それ以外は 2
  • アンマウントできないときは、使っているプロセスを lsof や fuser で探す

ファイルシステムの問題は、コマンドの役割を取り違えたときに間違えやすい分野です。練習用のディスクで一度でも mount と umount を打っておくと、選択肢を見たときに迷いにくくなります。

少しずつ手を動かして、自信を持って本番に臨んでください。

参考

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

株式会社InfraAcademy 代表 / エンジニア

大手メーカーでインフラエンジニアとして勤務した後、ベンチャー企業・スタートアップでフルスタックエンジニアを経験。その後、起業し学習サービス「InfraAcademy」を運営しています。
保有資格:ネットワークスペシャリストなど 運営会社:株式会社InfraAcademy

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る