🐧 Linux 総合学習プラットフォーム
ストレージ/ファイルシステム ・ 中級

/etc/fstab による永続マウント

mount コマンドでの接続は再起動すると消えます。起動時に自動でマウントするには、設定ファイル /etc/fstab に1行追記します。各行は「デバイス(UUID推奨)・マウントポイント・ファイルシステム種別・オプション・dump・fsck順」の6項目で構成します。デバイス名は起動順で変わることがあるため、blkid で得た UUID で指定するのが安全です。記述ミスは起動失敗につながるので、mount -a で文法と実マウントを試験してから再起動します。

前のトピックで見た mount コマンドによる接続には、1つ大きな弱点がある。システムを再起動すると、接続がすべて失われてしまうことだ。

手作業で mount したファイルシステムは一時的なもので、再起動後にまた使いたければ、もう一度 mount し直さなければならない。サーバのデータ領域のように「起動したら常にこの場所に繋がっていてほしい」ファイルシステムを、毎回手で繋ぐのは現実的ではない。

🔗
たとえ手動の mount は「その場かぎりの約束」。/etc/fstab は「起動のたびに自動で繋ぐ常設の予約表」。一度書けば再起動しても繋がり続ける。

そこで使うのが、起動時に自動でマウントするファイルシステムを定義しておく設定ファイル、/etc/fstab(file systems table)だ。ここに1行書いておけば、以後は再起動のたびにシステムが自動でそのファイルシステムをマウントしてくれる。

実際、ルートファイルシステム(/)やスワップ領域も、もとからこの /etc/fstab に書かれていて、起動時にここを読んでマウントされている。では、その1行には何を書くのか。

📋 fstab の1行は、何でできているのか

/etc/fstab は1行につき1つのファイルシステムを記述し、各行はスペースやタブで区切られた6つのフィールドからなる。左から順に意味を見ていこう。

UUID=xxxx-xxxx /data ext4 defaults 0 2(1) デバイスUUID= 推奨(2) マウント先/data など(3) 種別ext4 / xfs(4) オプションdefaults など(5)dump(6)fsck順何をどこへどの形式でどう扱うか第5は通常 0、第6は / なら 1・データ領域なら 2・検査不要なら 0編集したら必ず mount -a で検証してから再起動

第1フィールドはマウントするデバイスで、UUID=... の形で書くのが推奨だ。第2フィールドはマウントポイント(例:/data)で、ここで指定するディレクトリは事前に mkdir で作っておく必要がある。第3フィールドはファイルシステムの種別(ext4・xfs など)。

/etc/fstab の1行=6つの欄①デバイスUUID=a1b2...②マウント先/data③種別ext4④オプションdefaults⑤dump0⑥fsck順2左から「何を・どこに・どの形式で・どう扱うか」の順に読む⑥は起動時チェックの順番(/ は1、その他は2、不要なら0)

第4フィールドはマウントオプションで、標準的な設定をまとめた defaults をよく使う。第5フィールドは dump で、バックアップ対象かを示す古い項目で、通常は 0 を指定する。第6フィールドは fsck の順序(起動時のファイルシステム検査をどの順で行うか)で、ルート(/)なら 1、その他のデータ領域なら 2、検査不要なら 0 とする。

UUID=xxxx-xxxx /data ext4 defaults 0 2 ……典型的な1行。# で始まる行はコメントとして無視される。

たとえば UUID=xxxx-xxxx /data ext4 defaults 0 2 のような1行になる。

各フィールドは1個以上の空白で区切られていればよく、見やすいように列を揃えて書く人が多いが、揃っていなくても動作には影響しない。# で始まる行はコメントとして無視されるので、何のための行かをメモしておくと後の保守が楽になる。

🎚 第4フィールドには、何を書き分けるのか

第4フィールドのマウントオプションは、前のトピックで見た mount -o に渡す値とまったく同じものだ。

defaults は rw(読み書き可)・suid・exec・auto・nouser・async といった標準的な設定をまとめた便利な指定で、ふつうのデータ領域はこれで足りる。

用途に応じて、読み取り専用にするなら ro、起動時に自動マウントしないなら noauto、一般ユーザにもマウントを許すなら user、性能を上げるなら noatime などを、defaults,noatime のようにカンマで足していく。

コツUSBメモリなど常時は挿さっていないデバイスには nofail を付ける。これが無いと、未接続のときに起動が止まることがある。

USBメモリのように常時は繋がっていないデバイスを書く場合、見つからなくても起動を止めないよう nofail を付けておくと安全だ。これを付けずに取り外し可能なデバイスを書くと、それが挿さっていないときに起動が止まってしまうことがある。

ところで、第1フィールドはなぜデバイス名でなく UUID なのか――ここに、地味だが大事な理由がある。

🆔 なぜ、デバイス名ではなく UUID なのか

第1フィールドのデバイス指定で、なぜ /dev/sda1 のようなデバイス名ではなく UUID を使うのか。はっきりした理由がある。

/dev/sda・/dev/sdb といった名前は、ディスクが認識される順番で割り当てられる。そのため、ディスクを増設したり、起動時の認識タイミングがずれたりすると、昨日まで /dev/sdb だったディスクが今日は /dev/sdc になる、といったことが起こり得る。

💡
ポイント/dev/sdb のような名前は認識順で変わりうる。UUID はフォーマット時に決まる不変の識別子。だから fstab は UUID で名指しするのが安全だ。

もし /etc/fstab にデバイス名で書いていると、この入れ替わりによって意図しないディスクがマウントされたり、目的のディスクが見つからず起動に失敗したりする。

一方、UUID はファイルシステムを作ったときに割り当てられる世界で一意な識別子で、ディスクの接続順が変わっても不変だ。だからこそ、UUID で名指しするのが安全なのだ。

書くべき UUID は、これまで使ってきた blkid コマンドで調べられる。blkid /dev/sda1 の出力にある UUID=... の値をそのまま転記する。

💣 たった1行のミスが、なぜ起動失敗を招くのか

/etc/fstab の編集は、ストレージ設定の中でもとくに慎重さが要る作業だ。

この設定は起動プロセスの早い段階で読み込まれる。ここに文法ミスや存在しないデバイス・誤ったオプションを書いてしまうと、最悪の場合システムが正常に起動できなくなり、復旧用のモード(緊急モード)に落ちてしまうことがある。

つまずきfstab のミスは即座にエラーが出ず、再起動して初めて気づく。文法ミスや存在しないデバイスを書くと、緊急モードに落ちて起動できなくなることがある。

GUIの設定画面と違って即座のエラー表示がなく、再起動して初めて問題に気づく、という怖さがある。では、再起動という賭けに出る前に、どう安全を確かめればよいのか。

🛟 なぜ mount -a を挟むと安全になるのか

この事故を防ぐ決定的な作法が、編集後に必ず mount -a を実行して検証することだ。

mount -a ……fstab の未マウント分を今その場で繋ぐ。エラーが出なければ正しい。出たら再起動前に直せる。

mount -a は /etc/fstab に書かれた(まだマウントされていない)エントリを、いまその場でまとめてマウントしようと試みる。つまり、再起動を待たずに「この設定で本当にマウントできるか」を安全に試せる。

ここでエラーが出なければ文法とマウントは正しく、エラーが出れば再起動する前に修正できる。逆に言えば、mount -a を実行せずにいきなり再起動するのは、起動不能のリスクを抱えたまま賭けに出るようなものだ。

💡
ポイント編集したら mount -a。これをセットで必ず行う。検証後は lsblk・findmnt・df で狙いどおり繋がり想定容量が見えるかも確認する。

編集したら mount -a、これをセットで必ず行ってほしい。検証後は、lsblk や findmnt、df で、狙ったマウントポイントに正しく繋がり、想定どおりの容量が見えているかも確認しておくと万全だ。

コツ本番サーバでは編集前に cp /etc/fstab /etc/fstab.bak でバックアップ。問題が起きてもすぐ元に戻せる。

実務では、本番サーバの /etc/fstab を編集する際、編集前に cp /etc/fstab /etc/fstab.bak のようにバックアップを取っておくと、問題が起きてもすぐ元に戻せて安心だ。

この項目に出てくる用語

fstabえふえすたぶ
/etc/fstab。起動時に自動マウントするファイルシステムを定義する設定ファイル。1行1ファイルシステムを6項目で記述する。
マウントポイントまうんとぽいんと
ファイルシステムをディレクトリツリーに接続する先のディレクトリ。/mnt や /home などがその例。
ファイルシステムふぁいるしすてむ
ディスク上にファイルやディレクトリを整理して記録する仕組み。ext4・xfs などの種類があり、mkfs で作成する。

関連コマンド

mountblkidlsblk

▶ 学習アプリでこの続きを学ぶ・演習する