Infra Engineer

ファイルシステムテーブル~fstab、mtab~
2022.03.11
Lv1

ファイルシステムテーブル~fstab、mtab~

本記事の対象者

LPIC level1習得を目指す初学者の方
コマンドの基本的な用途について、要点を絞って解説します。


今回の内容

今回は、「/etc/fstab」ファイルと「/etc/mtab」ファイルについて解説します。

/etc/fstab
・/etc/mtab
・まとめ
・確認問題

/etc/fstab

「/etc/fstab」は、ファイルシステムの情報が記載されている設定ファイルです。
マウントを実行する際にはこのファイルが参照されます。
このファイルはOS起動時に読み込まれるため、ファイルシステムを自動的にマウントすることもできます。
よって、マウントする頻度の高いファイルシステムは、ここに記載しておきます。

 

例)
「/etc/fstab」の例
[root@localhost ~]# cat /etc/fstab
LABEL=/                 /                  ext3    defaults        1 1
/dev/sda1               /                  ext3    defaults        1 1
/dev/sda2               /boot              ext3    defaults        1 2
/dev/cdrom              /mnt/cdrom         iso9660 noauto,owner,ro 0 0
/dev/sdb1               /var               ext3    defaults        1 3
/dev/sdb2               swap               swap    defaults        0 0

①デバイスファイル名
デバイスファイル名もしくはラベル(LABEL=ラベル名)、またはUUID(※1)を指定します。

②マウントポイント
ファイルシステムのマウント先のディレクトリ(=マウントポイント)を指定します。

③ファイルシステムの種類
ファイルシステムの種類を指定します。

④マウントオプション(※2)
マウントする際に必要となるオプションを指定します。複数のオプションを指定する場合は「,(カンマ)」で区切ります。

⑤dumpフラグ
1であればdumpコマンドによるバックアップ対象になります。
通常、「ext2」「ext3」ファイルシステムは1を、その他のファイルシステムは0を指定します。

⑥ブート時にfsckがチェックする順序
Linuxが起動する際にfsckがチェックする順序を「0,1,2…」で指定できます。
1,2…の順にチェックされ、0を指定するとチェックされません。
ルートファイルシステムは1である必要があります。

 

※1
UUIDは、デバイスを識別するために使われるIDです。デバイスには固有のUUIDがつけられています。
最近のシステムでは、デバイスファイル欄にUUIDが指定されていることがあります。

[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Oct 27 16:43:44 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=0cd877d9-d9ba-4b37-96cf-86c11457ec46 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

※2 主なマウントオプションの一覧

マウントオプション 説明
async ファイルシステムの非同期入出力を設定する。
auto -aオプションでmountコマンドを実行したときにマウントする。
noauto -aオプションでmountコマンドを実行してもマウントしない。
defaults デフォルトのオプションを設定する。
(async, auto, dev, exec, nouser, rw, suid)
exec バイナリの実行を許可する。
noexec バイナリの実行を許可しない。
ro 読み取り専用でマウントする。
rw 読み書きを許可してマウントする。
unhide 隠しファイルも表示する。
suid SUIDとSGIDを有効にする。
user 一般ユーザーでもマウントを可能にする。
users マウントしたユーザー以外のユーザーもアンマウント(マウント解除)できるようになる。
nouser 一般ユーザーのマウントを許可しない。

/etc/mtab

「/etc/mtab」は、現在マウントされているファイルシステムの情報が格納されているファイルです。
このファイルはmountコマンドやumountコマンドが使用しているファイルであり、「/etc/fstab」のようにユーザーが手動で書き換えるものではありません。

例)
「/etc/mtab」の中身
[root@localhost ~]# cat /etc/mtab
sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
devtmpfs /dev devtmpfs rw,seclabel,nosuid,size=495436k,nr_inodes=123859,mode=755 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs rw,seclabel,nosuid,nodev 0 0
devpts /dev/pts devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,seclabel,nosuid,nodev,mode=755 0 0
tmpfs /sys/fs/cgroup tmpfs ro,seclabel,nosuid,nodev,noexec,mode=755 0 0
cgroup /sys/fs/cgroup/systemd cgroup rw,seclabel,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd 0 0
pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0
cgroup /sys/fs/cgroup/cpuset cgroup rw,seclabel,nosuid,nodev,noexec,relatime,cpuset 0 0
cgroup /sys/fs/cgroup/net_cls,net_prio cgroup rw,seclabel,nosuid,nodev,noexec,relatime,net_prio,net_cls 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,seclabel,nosuid,nodev,noexec,relatime,freezer 0 0
cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,seclabel,nosuid,nodev,noexec,relatime,cpuacct,cpu 0 0
cgroup /sys/fs/cgroup/perf_event cgroup rw,seclabel,nosuid,nodev,noexec,relatime,perf_event 0 0
cgroup /sys/fs/cgroup/blkio cgroup rw,seclabel,nosuid,nodev,noexec,relatime,blkio 0 0
cgroup /sys/fs/cgroup/pids cgroup rw,seclabel,nosuid,nodev,noexec,relatime,pids 0 0
cgroup /sys/fs/cgroup/hugetlb cgroup rw,seclabel,nosuid,nodev,noexec,relatime,hugetlb 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,seclabel,nosuid,nodev,noexec,relatime,devices 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,seclabel,nosuid,nodev,noexec,relatime,memory 0 0
configfs /sys/kernel/config configfs rw,relatime 0 0
/dev/mapper/centos-root / xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0
systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=26,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=12188 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
hugetlbfs /dev/hugepages hugetlbfs rw,seclabel,relatime 0 0
mqueue /dev/mqueue mqueue rw,seclabel,relatime 0 0
/dev/sda1 /boot xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
tmpfs /run/user/0 tmpfs rw,seclabel,nosuid,nodev,relatime,size=101476k,mode=700 0 0

※本来このようなコマンドを打って確認する類のファイルではありません。

Tips : /proc/mounts
「/proc/mounts」はLinuxカーネルが、現在認識しているマウント状況をリアルタイムに反映しているファイルです。「/etc/mtab」と「/proc/mounts」の内容は異なることがあります。umountコマンドではなく、何らかの障害でデバイスがアンマウントされてしまった場合、「/etc/mtab」には残ったままになる場合があります。一方で「/proc/mounts」にはOSがどう認識しているかが反映されますので、このような状況もリアルタイムに反映されています。「/etc/mtab」はあくまで、mountコマンドとumountコマンドの参照ファイルです。

まとめ

今回は、「/etc/fstab」「/etc/mtab」について解説しました。
これらのファイルは、マウントを実行するコマンドである「mount」やマウントを解除するコマンドである「umount」との関連が重要です。
これらのコマンドの解説の際に「/etc/fstab」「/etc/mtab」がまた登場しますので、今回の内容はしっかりと抑えておいてください。

最後に確認問題で今回の内容を振り返ってみてください。


確認問題

問題①

「/etc/fstab」の一行にはいくつのフィールドがあるか。

A) 4
B) 5
C) 6
D) 7

解答
答え:C

「/etc/fstab」の記法は、以下の通りです。
第1フィールド:デバイス名
第2フィールド:マウントポイント
第3フィールド:ファイルシステムの種類
第4フィールド:各種オプション
第5フィールド:ファイルシステムをdumpするか否かの指定
第6フィールド:OS起動時にfsckチェックを行うか否かの指定を行う

問題②

「/etc/fstab」で明示的にデバイスファイル名を記載する代わりに、目的のファイルシステムを識別するために他にどのような形式を使用できるか。(2つ選択)

A) LABEL
B) FIND
C) ID
D) UUID

解答
答え:A, D

デバイスファイル名の他に、ラベル名とUUIDが使用できます。