【LPIC・Linux】ファイルシステムのマウントを管理する「/etc/fstab」

  • URLをコピーしました!
目次

はじめに

こんにちは。ネットワークエンジニアの「だいまる」です。

今回は、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名を記載していきます。

(e2labelコマンドによるLABEL指定方法)
書式:sudo e2label (LABEL付与したいファイルシステム) (LABEL名)
 例:sudo e2label /dev/sda1 /hdd1
*今回のLABEL名は「hdd1」

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に関する記事を作成していこうと思います。

  • URLをコピーしました!

この記事を書いた人

目次