ファイルシステムテーブルである /etc/fstab には、システムツールがマウントまたは有効化できるファイルシステム、スワップ領域、バインドマウント、ネットワークソース、そのほかの接続を記述します。エントリは起動処理に関与できますが、noauto などのオプション、自動マウントとの統合、サービスマネージャーの方針によって、いつ、あるいは実際にマウントされるかが変わります。
ファイルシステム · レッスン 7
/etc/fstab
`/etc/fstab` でファイルシステムとスワップの永続的な接続を定義し、安全に検証する方法を学びます。
6 つのフィールド
一般的なエントリは、空白で区切られた 6 つのフィールドからなります。
UUID=130b882f-7d79-436d-a096-1e594c92bb76 /data ext4 defaults,nosuid,nodev 0 2
- ソース:デバイスパス、
UUID=、LABEL=、ネットワークソース、そのほか対応する指定 - 対象:マウントポイント、またはスワップなど用途に応じて
none - 種類:ファイルシステムの種類、
swap、none、または許可された自動判定の種類 - オプション:マウントヘルパーと統合層が解釈する、カンマ区切りのリスト
- dump フィールド:歴史的には
dumpバックアップユーティリティへの参加を制御し、一般に0で無効化する - pass フィールド:該当する場合に、起動時の
fsckの順序を制御し、0でこの仕組みによる自動チェックを無効化する
フィールド内の空白は、スペースを \040 とするような fstab 構文でエスケープする必要があります。フィールドの外では、# からコメントが始まります。
通常の /etc/fstab エントリには、フィールドがいくつありますか?
安定したソース識別子
ローカルファイルシステムでは、/dev/sdX という列挙名より、ファイルシステム UUID の方が安定していることがよくあります。
$ lsblk -f
$ sudo blkid
UUID=... は、その識別子が目的のファイルシステムのものだと確認した後にだけ使用してください。再フォーマットすると新しい UUID が作られ、ブロック単位の複製では同じ UUID が重複することがあります。一方、PARTUUID= はパーティションテーブルのエントリを識別するもので、意味が異なります。
ソースフィールドの UUID=... は、通常何を識別しますか?
マウントオプションとチェック用フィールド
defaults は、実装で定義された一般的なオプションセットへ展開されます。すべてのマウントに最も安全な方針とは限りません。読み取り専用アクセス、デバイスノードや setuid 動作の制限など、信頼度とワークロードに応じたオプションを追加します。ネットワークやリムーバブルのファイルシステムでは、起動が予期せず停止しないように、タイムアウト、依存関係、障害許容の方針が必要になることがあります。
fsck に対応するファイルシステムでは、慣例としてルートファイルシステムに pass 1、そのほかのチェック対象ローカルファイルシステムに pass 2 を使います。ただし、一般的な起動時 fsck を使わない種類があるなど、ファイルシステム固有の方法は異なります。機械的に 2 を割り当てず、インストール済みのファイルシステムとディストリビューションの文書に従ってください。
6 番目のフィールドに 0 を指定すると、何が要求されますか?
復旧手段を用意して編集する
ルート、ブート、必須ネットワークのエントリが不正だと、起動が中断することがあります。編集前に次を行ってください。
- 最新のバックアップと、コンソールまたはレスキュー環境へのアクセスを確認する。
- パーミッションを保持したまま、既存ファイルをコピーする。
- ソースの識別情報を確認し、目的のマウントポイントを作成する。
- 範囲を限定した変更を 1 つ行う。
- 再起動前に検証してテストする。
誰でも読める fstab エントリへ認証情報を直接書いてはいけません。該当するマウントヘルパーが提供する、保護された認証情報の仕組みを使用してください。
重要な fstab エントリを変更する前に、レスキューアクセスを確認するのはなぜですか?
成功を思い込まずに検証する
対応している場合は、まず静的チェックを行います。
$ sudo findmnt --verify --verbose
続いて、制御された条件で新しいエントリだけをテストし、findmnt で確認します。一時的なテストならアンマウントしてください。mount -a は対象となる多数のエントリを実際に処理するため、ネットワークへ接続したり意図しないソースを接続したりすることがあります。また、マウント済みのエントリや noauto エントリを飛ばすため、無害な構文チェッカーでも完全な証明でもありません。
systemd ベースのシステムでは、fstab の編集後にマネージャーの設定を再読み込みし、生成されるマウントユニットを更新します。その後、ローカルの文書に従って依存関係と起動時の動作を確認してください。
mount -a だけでは fstab の完全な検証にならないのはなぜですか?
ラボの復旧可能なセカンダリストレージで練習するには、Linux パーティションとファイルシステムの管理 を利用してください。
レッスン完了
/etc/fstab を完了しました
これで、永続的なファイルシステムテーブルのエントリを読み、検証できるようになりました。
ソース、対象、種類、オプション、dump、pass の各フィールドを読み取る。
目的とする識別上の意味を持つ、確認済みの識別子を選ぶ。
実際のファイルシステムに合わせて、マウントとチェックの方針を選ぶ。
レスキューアクセスを確保し、範囲を限定して 1 つずつ編集する。
静的検証、対象を絞ったマウント、起動方針の確認を組み合わせる。