こんにちは、インフラエンジニアの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 を打っておくと、選択肢を見たときに迷いにくくなります。
少しずつ手を動かして、自信を持って本番に臨んでください。



