はじめに
こんにちは。ネットワークエンジニアの「だいまる」です。
今回は、LPIC Level2のアウトプットとして、ファイルシステムのマウントを管理する「/etc/fstab」についてまとめたいと思います。
/etc/fstabとは?
「/etc/fstab」とは、「Linux上で利用するファイルシステムのマウント設定を事前に行うファイル」になります。
このファイルに設定を追加することで、Linuxサーバの再起動や電源Off/On時にファイルシステムのマウントを自動で実施してくれるようになります。
ファイルに設定を追加しない場合は、再起動前にマウントを実施したファイルシステムがマウントされない状態で立ち上がってきます。
実機で確認してみましょう。
Step1:再起動前の状態確認
以下出力ログの通り、「/etc/fstab」には設定されてないですが、マウントされていることが確認できると重追います。
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
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
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:再起動の実施
以下コマンドで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」配下にtestディレクトリがありましたが、出力されないことがわかります。
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ファイルの設定
実際にfstabファイルに設定していきましょう。
まずは「デバイス元ファイル」の設定ですが、LABELによる指定を行うため、LABELの設定を行います。
LABELの指定には「e2labelコマンド」を利用します。
今回は「/hdd1」というラベル名にしています。
daimaru@raspi-test:~ $ sudo e2label /dev/sda1
daiamru@raspi-test:~ $ sudo e2label /dev/sda1 /hdd1
daimaru@raspi-test:~ $ sudo e2label /dev/sda1
/hdd1
次に、fstabの設定ファイルを編集していきます。
daimaru@raspi-test:~ $ sudo cat /etc/fstab
daimaru@raspi-test:~ $ sudo vim /etc/fstab
daimaru@raspi-test:~ $ sudo cat /etc/fstab
LABEL=/hdd1 /mnt/hdd1 ext4 ro,exec,auto,async,user 1 1
Step2:再起動と起動時のログ確認
Step1で設定を終えたため、再起動を実施してみます。
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:起動後の状態確認
実際にマウントされているのかをしっかり確認していきましょう。
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
上記結果より、「/dev/sda1」が「/mnt/hdd1」にマウントされていることがわかります。
Step4:一般ユーザによる書き込みができるのか?
マウント後の確認として、「書き込みが不可であること」と「一般ユーザによる読み込みが可能かどうか」を確認していきます。
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に関する記事を作成していこうと思います。