はじめに
こんにちは。ネットワークエンジニアの「だいまる」です。
今回は、LPIC Level2のアウトプットとして、ファイルシステムのマウントを管理する「/etc/fstab」についてまとめたいと思います。
/etc/fstabとは?
「/etc/fstab」とは、「Linux上で利用するファイルシステムのマウント設定を事前に行うファイル」になります。
この設定ファイルに記載することで、Linuxサーバの再起動や電源OFF/ON時にファイルシステムのマウントを自動で実施してくれます。
とても便利で重要な設定ファイルのため、しっかり実機で確認していきましょう。
まずは「/etc/fstab」に何も設定を追加していない時の動作を確認していきます。
Step1:再起動前の状態確認
まずは、設定前の状態を確認していきます。
「lsblk -f」では、確認したいファイルシステムのUUIDを参照します。
今回の「/mnt/hdd1」のUUIDは「773fc3ed-d157-49df-XXX6-XXXXXXXXXX」になります。
daimaru@raspi-test:~ $ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sda
└─sda1 ext4 1.0 773fc3ed-d157-49df-XXX6-XXXXXXXXXX 869.2G 0% /mnt/hdd1
そして、「cat /etc/fstab」で設定ファイルの中身を確認します。
この時、UUID(773fc3ed-d157-49df-XXX6-XXXXXXXXXX)がないことがわかると思います。
daimaru@raspi-test:~ $ sudo cat /etc/fstab
proc /proc proc defaults 0 0
PARTUUID=752c3c01-01 /boot/firmware vfat defaults 0 2
PARTUUID=752c3c01-02 / ext4 defaults,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
一応、しっかりマウントされていることも確認します。

今回の対象「/mnt/hdd1」はしっかりマウントされてますね!
daimaru@raspi-test:~ $ sudo ls /mnt/hdd1
lost+found test
daimaru@raspi-test:~ $ sudo df -l
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 960302096 32 911447640 1% /mnt/hdd1
Step2:再起動の実施
「/etc/fstab」の中身やマウント状況を確認した次は、Linuxサーバの再起動を行っていきます。
daimaru@raspi-test:~ $ sudo reboot
Broadcast message from root@raspi-test on pts/1 (XXX YYYY-MM-DD HH:MM:SS JST):
The system will reboot now!
Step3:再起動後の状態確認
サーバの起動後のマウント状況を確認してみるとマウント先が「/media/daimaru/_hdd1」に変わっているだけでなく、「/mnt/hdd1」配下に何も存在しないことがわかります。
つまり、自動マウントが行われていないのです。
daimaru@raspi-test:~ $ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sda
└─sda1 ext4 1.0 /hdd1 773fc3ed-d157-49df-XXXXXXXXXXXX 869.2G 0% /media/daimaru/_hdd1
daimaru@raspi-test:~ $ sudo ls /mnt/hdd1
daimaru@raspi-test:~ $ sudo df -l
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 960302096 32 911447640 1% /media/daimaru/_hdd1

「/etc/fstab」を実際に設定してみよう!
「/etc/fstab」の概要を理解した後は、実際の設定方法等、詳細を見ていきましょう。
「/etc/fstab」の書式
まずは、「/etc/fstab」の設定ファイルの書式についてです。
###/etc/fstabの書式###
[マウント元デバイス] [マウント先デバイス] [ファイルシステムの種別] [オプション] [dumpフラグ] [fsckフラグ]
各入力値の説明を表にまとめてみました。
項目 | 詳細 |
マウント元デバイス | ・LABEL=<label名>:ラベル指定 ・UUID=<uuid>:UUID指定 ・デバイス名(/dev/sda1等) |
マウント先デバイス | ・マウント先指定(/mnt/hdd1等) |
ファイルシステム種別 | ext2/ext3/ext4等 |
オプション | 次の章で記載(多数あり) |
dumpフラグ | dumpコマンドの実施可否(0:dump off/1: dump on) |
fsckフラグ | fsckコマンドの実施可否 |
実際のファイルの中身は以下の通りです。
daimaru@raspi-test:~ $ sudo cat /etc/fstab
proc /proc proc defaults 0 0
PARTUUID=752c3c01-01 /boot/firmware vfat defaults 0 2
オプション一覧
「/etc/fstab」で設定するオプションは以下の表の通り数多くあることがわかります。
項目 | 詳細 |
rw/ro | ファイルシステムの書き込み可否 ・rw:書き込み可能 ・ro:読み込みのみ |
exec/noexec | バイナリの実行可否 |
auto/noauto | 自動マウントの可否 |
sync/async | ・sync:I/Oの同期 ・async:全I/Oの同期 |
nouser | 一般ユーザのマウント不可 |
user | 一般ユーザのマウント(マウントを行ったユーザのみ) |
users | 全ユーザのマウント |
group | 指定したグループのマウント |

fstabの設定を実際にやってみよう
fstabファイルの書式やオプションがわかった後は、実際に実機で確認してみよう。
今回の設定は、以下の内容で実施してみようと思います。
- マウント元デバイス:LABEL指定
- マウント先デバイス:/mnt/hdd1
- ファイルシステム種別:ext4
- オプション:ro,exec,auto,async,user(root権限で作成したディレクトリでどうなるか確認)
- dumpフラグ:1
- fsckフラグ:1
Step1:fstabファイルの設定
最初に設定するのは「デバイス元ファイル」の設定です。
今回は、LABEL指定のため、「e2labelコマンド」を使って指定したLABEL名を記載していきます。
LABEL=/hdd1 /mnt/hdd1 ext4 ro,exec,auto,async,user 1 1
Step2:再起動と起動時のログ確認
Step1による設定ファイルの編集を終えた後は、Linuxサーバの再起動を動作確認のために実施します。
daimaru@raspi-test:~ $ sudo reboot
Broadcast message from root@raspi-test on pts/1 (XXX YYYY-MM-DD HH:MM:SS JST):
The system will reboot now!
起動時に自動マウントされているかの確認を「dmseg」の出力ログから確認していきます。
daimaru@raspi-test:~ $ dmesg
[ 8.418842] sd 0:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB)
[ 8.419693] sd 0:0:0:0: [sda] Write Protect is off
[ 8.419726] sd 0:0:0:0: [sda] Mode Sense: 73 00 10 08
[ 8.421083] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, supports DPO and FUA
[ 8.518414] sda: sda1
[ 8.519614] sd 0:0:0:0: [sda] Attached SCSI disk
[ 11.960338] sd 0:0:0:0: Attached scsi generic sg0 type 0
[ 15.979983] EXT4-fs (sda1): mounted filesystem 773fc3ed-d157-49df-XXXXXXXXXX ro with ordered data mode. Quota mode: none.
上記の黄色のログ部分からext4のファイルシステムとしてマウントされていることがわかります。
Step3:起動後の状態確認
Step2のログ上ではマウントの確認が取れましたが、実際にマウントされているのでしょうか?
「lsblk -f」、「ls /mnt/hdd1」、「sudo df -h」の3つのコマンドで確認した結果、しっかりマウントされていることがわかりました。
daimaru@raspi-test:~ $ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sda
└─sda1 ext4 1.0 /hdd1 773fc3ed-d157-49df-aff6-XXXXXXXXX 869.2G 0% /mnt/hdd1
daiamru@raspi-test:~ $ sudo ls /mnt/hdd1
lost+found test
daimaru@raspi-test:~ $ sudo df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 916G 32K 870G 1% /mnt/hdd1
Step4:一般ユーザによる書き込みができるのか?
この動作確認の意図は、「/etc/fstab」のオプションで「ro」を設定したので、本当に書き込みできないの?と思い確認してみました。
以下コマンドが「vimコマンド」による動作確認ですが、本当に書き込み不可でマウントされていることがわかりました。
daimaru@raspi-test:~ $ sudo vim /mnt/hdd1/test/test.txt
"/mnt/hdd1/test/test.txt" [New] hello world
~
~
~
"/mnt/hdd1/test/test.txt"
"/mnt/hdd1/test/test.txt" E212: Cannot open file for writing
Press ENTER or type command to continue
次に、一般ユーザによる参照が可能か?を確認します。
daimaru@raspi-test:~ $ sudo ls -l /mnt/hdd1
total 20
drwx------ 2 root root 16384 Nov 27 09:01 lost+found
drwxr-xr-x 2 root root 4096 Dec 7 10:30 test
daimaru@raspi-test:~ $ ls /mnt/hdd1
lost+found test
上記結果より、参照可能であることがわかりました。

最後に
今回は、LPIC Level2の勉強として、ファイルシステムのマウント管理を行う「/etc/fstab」について、まとめてみました。
次回もLPIC Level2に関する記事を作成していこうと思います。