「/etc/fstab」ファイルは、利用するファイルシステムのマウント設定を事前に行っておく設定ファイル。mountコマンドはこのファイルの設定内容を参照して動作。
一行一行がひとつのファイルシステムのマウント設定を表しています。
「/etc/fstab」ファイルの書式は以下の通りです。項目は6つです。
(1) デバイス名
「/dev/sda1」のようにデバイスファイルを書くか、ラベル(あらかじめファイルシステムに対して付けておいた名前)やUUID(Universally Unique Identifier: 汎用一意識別子、全世界で重複が起きないように生成される一意な値)を使った指定を書きます。
ラベルを使う場合は 「LABEL=/boot」のように「LABEL=」の後ろにラベル名を書きます。この場合ラベル名は「/boot」です。
UUIDを使う場合も同様で「UUID=」の後ろに続けてUUID文字列を書きます。
デバイスのUUIDは、blkidコマンドやlsblkコマンドで確認できます。
blkidはブロックデバイス(HDDやCD-ROMなどのようにブロック単位でデータを転送するデバイス)の情報を表示するコマンドです。デバイス名や、UUID、ファイルシステムのタイプを表示できます。
lsblkはブロックデバイスをツリー状に一覧表示するコマンドです。「--output」オプションで表示項目を指定することによって、UUIDやファイルシステムのタイプを表示できます。
例)デバイス名、UUID、ファイルシステムのタイプを表示する
(2) マウントポイント
ルートファイルシステム上のどの位置にマウントするかの指定をルートからのパスで書きます。
(3) ファイルシステムの種類
デバイス名で指定したファイルシステムの種類を書きます。
(4) マウントオプション
マウントする際に必要となるオプションを書きます。
●主なマウントオプション
オプション
・async 非同期で入出力を行う
・auto 「mount -a」コマンド実行時にマウント
・noauto 「mount -a」コマンド実行時にマウントしない
・defaults デフォルト指定(async,auto,dev,nouser,rw,suid)
・exec バイナリの実行を許可
・noexec バイナリの実行を禁止
・ro 読み取り専用
・rw読み書きを許可
・suid SUIDとSGIDを有効化
・user 一般ユーザでマウント可、本人のみアンマウント可
・users 一般ユーザでマウント可、誰でもアンマウント可
・nouser 一般ユーザによるマウントを禁止
※デフォルトでは async, auto, exec, nouser, rw, suid (と、表には載っていないdev)が指定されたのと同じ状態で、オプションを記述するとこれが上書きされていきます。
どのオプションも上書きせず、そのままで良いことを示す指定が「defaults」です。
(5) dumpフラグ
そのファイルシステムをdumpコマンド(バックアップ用のコマンド)の対象とするかどうかを「0」か「1」で書きます。「0」では対象外となり、「1」では対象となります。
(6) fsckフラグ
起動時に自動的に行われるfsck(ファイルシステムチェック)の優先度を数字で書きます。数字が小さいものから順にチェックされますが、0は例外で、チェックを省く指定になります。
●ファイルシステムにアクセスし、利用するためには、「マウント」を行う必要があります。
マウントとは、デバイスとその上に構築されているファイルシステムを OS に認識させ、指定のディレクトリに割り当て、そのディレクトリ以下のパスでファイルシステム内にアクセスできるようにすることです。
逆に、マウントされているファイルシステムを切り離し、マウント前の状態に戻すことを「アンマウント」といいます。
●Linuxでマウントを行うには mountコマンドを使います。
mount [オプション] [デバイス] [マウント先]
「デバイス」にはデバイスファイルを指定します。(/dev/cdrom、/dev/sda1 など)
「マウント先」(「マウントポイント」とも呼ばれる)には、そのファイルシステムをどのディレクトリに割り当てるかを指定します。(/mnt、/media など)
なお、マウントの設定ファイル「/etc/fstab」に設定が存在する場合は、「デバイス」か「マウント先」のどちらか片方だけ指定すれば、もう片方は 「/etc/fstab」が参照され自動的に決定されます。
以下は「/etc/fstab」に設定が存在する場合のmountコマンドの書式です。オプションもファイルの設定が参照されますので、省略できます。
mount デバイス
または
mount マウント先
また、「デバイス」と「マウント先」どちらも指定しなかった(mount のみ実行した)場合は、現在マウントされているファイルシステムの一覧が、「/etc/mtab」ファイルの情報を元に表示されます。(マウント中のファイルシステムについては、下記「※マウント中のファイルシステムについて」もご参照ください。)
●mountコマンドの主なオプション
オプション
・-a 「etc/fstab」ファイルに記載されているファイルシステムを全てマウント(noautoマウントオプションが指定されているものは除く)
・-o 続けてマウントオプションを指定
・-t 続けてファイルシステムの種類を指定(指定しない場合は自動で種類を推測)
※-o に続けて指定するマウントオプションとしては、「/etc/fstab」に記述するものと同じマウントオプションが利用できます。
以下の例では、-o ro と指定することで読み取り専用でマウントを行うよう指定しています。
例)ext3ファイルシステムの「/dev/sda2」を「/mnt/mydata」に読み取り専用(ro)でマウントする場合
# mount -t ext3 -o ro /dev/sda2 /mnt/mydata
●また、アンマウントを行うには、umountコマンドを使います。
umount [オプション] [デバイスorマウント先]
既にマウントされているファイルシステムについて、デバイスかマウント先のどちらかを指定すればアンマウントされます。片方だけ指定すればよいことに注意します。
umountコマンドの主なオプションは以下の通りです。
オプション
・-a 「etc/fstab」ファイルに記載されているファイルシステムを全てアンマウント
・-t 指定した種類のファイルシステムのみをアンマウント
例)「/mnt/mydata」にマウントした「/dev/sda2」をアンマウントする場合
# umount /mnt/mydata
または
# umount /dev/sda2
※なお、ファイルシステムにあるファイルが操作中の場合や、ユーザがファイルシステム内で操作をしている場合、そのファイルシステムはアンマウントできません。
●マウント中のファイルシステムについて
/etc/mtabやmountコマンドのほかに、Linuxにおいて各種リソース情報を格納している「/proc」ディレクトリ配下でもマウント情報を確認することができます。
以下は、現在マウントされているファイルシステムを確認できるコマンドと、実行例です。
・mount
・cat /etc/mtab
・cat /proc/self/mounts
・cat /proc/mounts
※通常、一般ユーザによるファイルシステムのマウントは禁止されていますが、設問のように「mount」のみを実行した場合は、現在マウントされているファイルシステムの一覧が、「/etc/mtab」ファイルの情報を元に表示されます。 なお、「/proc/self/mounts」と「/proc/mounts」の内容は、マウント名前空間の違いにより、ユーザーによって異なる場合があります。
●デバイスのUUID(Universally Unique Identifier: 汎用一意識別子、全世界で重複が起きないように生成される一意な値)は、blkidコマンドやlsblkコマンドで確認できます。
blkidはブロックデバイス(HDDやCD-ROMなどのようにブロック単位でデータを転送するデバイス)の情報を表示するコマンドです。デバイス名や、UUID、ファイルシステムのタイプを表示できます。
lsblkはブロックデバイスをツリー状に一覧表示するコマンドです。「--output」オプションで表示項目を指定することによって、UUIDやファイルシステムのタイプを表示できます。