「Fstab」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(TranslationStatus の日付を修正)
 
(2人の利用者による、間の12版が非表示)
6行目: 6行目:
 
[[es:Fstab]]
 
[[es:Fstab]]
 
[[fr:Fstab]]
 
[[fr:Fstab]]
  +
[[it:Fstab]]
 
[[pt:Fstab]]
 
[[pt:Fstab]]
 
[[ru:Fstab]]
 
[[ru:Fstab]]
14行目: 15行目:
 
{{Related|tmpfs}}
 
{{Related|tmpfs}}
 
{{Related|スワップ}}
 
{{Related|スワップ}}
  +
{{Related|genfstab}}
  +
{{Related|genfstab}}
 
{{Related articles end}}
 
{{Related articles end}}
   
28行目: 31行目:
 
{{hc|/etc/fstab|2=
 
{{hc|/etc/fstab|2=
 
# <device> <dir> <type> <options> <dump> <fsck>
 
# <device> <dir> <type> <options> <dump> <fsck>
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 / ext4 noatime 0 1
+
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 / ext4 defaults 0 1
 
UUID=f9fe0b69-a280-415d-a03a-a32752370dee none swap defaults 0 0
 
UUID=f9fe0b69-a280-415d-a03a-a32752370dee none swap defaults 0 0
UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4 noatime 0 2
+
UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4 defaults 0 2
 
}}
 
}}
   
36行目: 39行目:
 
* {{ic|<dir>}} には、[[マウント]]ディレクトリを記述します。
 
* {{ic|<dir>}} には、[[マウント]]ディレクトリを記述します。
 
* {{ic|<type>}} [[ファイルシステム]]の種類。
 
* {{ic|<type>}} [[ファイルシステム]]の種類。
* {{ic|<options>}} 関連するマウントオプション。{{man|8|mount|FILESYSTEM-INDEPENDENT_MOUNT_OPTIONS}} と {{man|5|ext4|MOUNT_OPTIONS}} を見てください。
+
* {{ic|<options>}} 関連するマウントオプション。{{man|8|mount|FILESYSTEM-INDEPENDENT MOUNT OPTIONS}} と {{man|5|ext4|Mount options for ext4}} を見てください。
 
* {{ic|<dump>}} は {{man|8|dump|url=https://linux.die.net/man/8/dump}} ユーティリティによってチェックされます。このフィールドは通常 {{ic|0}} にセットします。{{ic|0}} はチェックを無効化します。
 
* {{ic|<dump>}} は {{man|8|dump|url=https://linux.die.net/man/8/dump}} ユーティリティによってチェックされます。このフィールドは通常 {{ic|0}} にセットします。{{ic|0}} はチェックを無効化します。
 
* {{ic|<fsck>}} は、起動時にチェックするファイルシステムの順番を設定します。{{man|8|fsck}} を見てください。ルートファイルシステムには {{ic|1}} を設定するべきです。他のパーティションには {{ic|2}} を設定するか、チェックを無効化する {{ic|0}} を設定するべきです。
 
* {{ic|<fsck>}} は、起動時にチェックするファイルシステムの順番を設定します。{{man|8|fsck}} を見てください。ルートファイルシステムには {{ic|1}} を設定するべきです。他のパーティションには {{ic|2}} を設定するか、チェックを無効化する {{ic|0}} を設定するべきです。
54行目: 57行目:
   
 
このセクションでは、ファイルシステムをマウントするいくつかの方法を例を通して説明します。以下の例で使用されるコマンド {{ic|lsblk -f}} と {{ic|blkid}} の出力は、[[永続的なブロックデバイスの命名]] で見られます。
 
このセクションでは、ファイルシステムをマウントするいくつかの方法を例を通して説明します。以下の例で使用されるコマンド {{ic|lsblk -f}} と {{ic|blkid}} の出力は、[[永続的なブロックデバイスの命名]] で見られます。
 
[[デバイスファイル#ブロックデバイスの名前|カーネルの名前記述子]]を使うには、fstab の最初の列で {{ic|/dev/sd''xy''}} を使ってください。
 
   
 
=== カーネルの名前記述子 ===
 
=== カーネルの名前記述子 ===
69行目: 70行目:
 
}}
 
}}
   
{{Warning|カーネル記述子は[[永続的なブロックデバイスの命名|永続的]]ではなく、起動するたびに変化する可能性があります。なのでこれを設定ファイルで使用すべきはありません。}}
+
{{Warning|[[デバイスファイル#ブロックデバイスの名前|ブロックデバイスのカーネル名記述子]] [[永続的なブロックデバイスの命名|永続的]] ではなく、ブートごとに変更される可能性があるため、設定ファイル ({{ic|/etc/fstab を含む}}) で使用しないください。}}
   
 
=== ファイルシステムラベル ===
 
=== ファイルシステムラベル ===
127行目: 128行目:
 
=== systemd による自動マウント ===
 
=== systemd による自動マウント ===
   
詳細は {{man|5|systemd.automount}} にあります
+
systemd のすべてのマウントオプションは {{man|5|systemd.mount}} を見てください
   
 
==== ローカルパーティション ====
 
==== ローカルパーティション ====
   
巨大な {{ic|/home}} パーティションが存在する場合、''fsck'' によって {{ic|/home}} がチェックされている間に、{{ic|/home}} を使わないサービスを起動できるようにすると良かもしれません。{{ic|/home}} パーティションの {{ic|/etc/fstab}} エントリに以下のオプションを追加することでそのように設定できます:
+
巨大なパーティションが存在する場合、''fsck'' によってそのパーティションがチェックされている間に、そのパーティションに依存しないサービスを起動できるようにすると効率がくなるかもしれません。パーティションの {{ic|/etc/fstab}} エントリに以下のオプションを追加することでそのように設定できます:
   
noauto,x-systemd.automount
+
x-systemd.automount
   
{{ic|/home}} に最初にアクセスしたときに fsck とマウントを行うようになり、パーティションの準備が出来るまでカーネルが {{ic|/home}} へのファイルアクセスを全てバッファします。
+
そのパーティションに最初にアクセスしたときに fsck とマウントを行うようになり、パーティションの準備が出来るまでカーネルがそのパーティションへのファイルアクセスを全てバッファします。
  +
この方法は、巨大な {{ic|/home}} パーティションがある場合などに適用できます。
 
{{Note|この設定を使うと {{ic|/home}} ファイルシステムのタイプ {{ic|autofs}} になり、デフォルトで [[mlocate]] から無視されるようになります。{{ic|/home}} の自動マウントによる高速化はせいぜい1〜2秒がいいとこなので、環境によっては、この設定はあまり意味がないかもしれません。}}
+
{{Note|この設定ファイルシステムのタイプ {{ic|autofs}} にします。これは [[mlocate]] によってデフォルトで無視されます。}}
   
 
==== リモートファイルシステム ====
 
==== リモートファイルシステム ====
   
同じ設定はリモートファイルシステムのマウントにも適用できます。アクセスしたときにだけリモートファイルシステムをマウントしたい場合、{{ic|noauto,x-systemd.automount}} パラメータを使って下さい。さらに、{{ic|1=x-systemd.device-timeout=}} オプションを使うことでネッワークに接続きないときタイムアウトを指定できます。また、{{ic|_netdev}} オプションで systemd がネットワークに依存するマウントであることを認識してネットワークがオンラインになった後に順番を入れ替えます。
+
同じ設定はリモートファイルシステムのマウントにも適用できます。アクセスしたときにだけリモートファイルシステムをマウントしたい場合、{{ic|x-systemd.automount}} パラメータを使って下さい。さらに、{{ic|1=x-systemd.mount-timeout=}} オプションを使うことで、マウンコマンドが完了するまでの制限時間を指定できます。また、{{ic|_netdev}} オプションで systemd がネットワークに依存するマウントであることを認識してネットワークがオンラインになった後に順番を入れ替えます。
   
noauto,x-systemd.automount,x-systemd.device-timeout=30,_netdev
+
x-systemd.automount,x-systemd.mount-timeout=30,_netdev
 
{{Note|1={{ic|automount}} と一緒に {{ic|exec}} フラグを使う場合、{{ic|user}} フラグを削除するようにしてください。詳しくは [https://bugzilla.redhat.com/show_bug.cgi?id=769636 Fedora Bug Report] を参照。}}
 
   
 
==== 暗号化ファイルシステム ====
 
==== 暗号化ファイルシステム ====
152行目: 151行目:
   
 
{{hc|/etc/crypttab|
 
{{hc|/etc/crypttab|
data /dev/md0 /root/key noauto}}
+
data /dev/md/MyRAIDArray /etc/cryptsetup-keys.d/data.key noauto
  +
}}
   
==== 自動マウント解除 ====
+
==== 自動アンマウント ====
   
 
{{ic|x-systemd.idle-timeout}} フラグを使うことで一定時間アイドル状態のときにタイムアウトするのを指定できます。例:
 
{{ic|x-systemd.idle-timeout}} フラグを使うことで一定時間アイドル状態のときにタイムアウトするのを指定できます。例:
   
noauto,x-systemd.automount,x-systemd.idle-timeout=1min
+
x-systemd.automount,x-systemd.idle-timeout=1min
   
 
上記の設定の場合、1分間操作がないと systemd によってアンマウントされます。
 
上記の設定の場合、1分間操作がないと systemd によってアンマウントされます。
   
=== スワップの UUID ===
+
=== 外部デバイス ===
   
  +
外部デバイスが存在する時はマウントし、存在しない場合は無視したい場合、{{ic|nofail}} オプションが必要です。これにより、起動時にエラーが発生するのを防ぐことができます。例えば:
スワップパーティションが UUID を持っていない場合、手動で追加することが可能です。これは {{ic|lsblk -f}} コマンドでスワップの UUID が表示されないときに発生します。スワップに UUID を指定する手順は以下になります:
 
   
  +
{{hc|/etc/fstab|2=
スワップパーティションを確認:
 
  +
LABEL=MyExternalDrive /media/backup jfs nofail,x-systemd.device-timeout=5 0 2
  +
}}
   
  +
{{ic|nofail}} オプションは {{ic|x-systemd.device-timeout}} オプションと組み合わせて使うのが最も効果的です。デフォルトのデバイスタイムアウトは 90 秒であるのが理由で、タイムアウトを再設定しなかった場合、{{ic|nofail}} だけが指定されている切断済みの外部デバイスのせいで起動時間が 90 秒長くなってしまいます。タイムアウトを 0 にはしないでください。0 は無限に待つことになります。
# swapon -s
 
   
  +
=== ファイルパスのスペース ===
スワップを無効化:
 
   
  +
{{ic|fstab}} ではスペースがフィールドの区切り文字として使用されているため、フィールド (''PARTLABEL''、''LABEL''、マウントポイント) にスペースが含まれている場合、これらのスペースをエスケープ文字 {{ic|\}} と3桁の8進数 {{ic|040}} に置き換えなければなりません:
# swapoff /dev/sda7
 
   
  +
{{hc|/etc/fstab|2=
新しく UUID を指定してスワップを再作成:
 
  +
UUID=47FA-4071 /home/username/Camera<span style="color:grey;">\040</span>Pictures vfat defaults 0 0
  +
LABEL=Storage<span style="color:grey;">\040</span>drive /media/100<span style="color:grey;">\040</span>GB<span style="color:grey;">\040</span>(Storage) ext4 defaults,user 0 2
  +
}}
   
  +
=== atime オプション ===
# mkswap -U random /dev/sda7
 
   
  +
以下の atime オプションはドライブのパフォーマンスに影響を与える可能性があります。
スワップを有効化:
 
   
  +
* {{ic|strictatime}} オプションは、ファイルにアクセスするたびにアクセス日時を更新します。サーバーとして Linux を使っている場合には意味がありますが、デスクトップ用途ではあまり有意義ではありません。{{ic|strictatime}} オプションの欠点として、たとえ (ドライブではなくメモリから読み込む) ページキャッシュからファイルを読み込んだ場合でも、ディスクに書き込みが発生してしまいます。
# swapon /dev/sda7
 
  +
* {{ic|noatime}} オプションは、ファイルを読み込むたびにドライブにファイルのアクセス日時を書き込むのを完全に無効化します。このオプションは、ファイルが最後に変更されてから読まれたかどうかを確認する必要のあるアプリケーションを除いて、ほとんどのアプリケーションでうまく機能します。このオプションを有効にしても、書き込み日時の情報は継続して更新され続けます。
  +
* {{ic|nodiratime}} オプションはファイルアクセス日時の書き込みをディレクトリでだけ無効化し、その他のファイルではアクセス日時の書き込みが行われます。{{Note|{{ic|noatime}} は {{ic|nodiratime}} も含んでいます。[https://lwn.net/Articles/244941/ 両方を指定する必要はありません]。}}
  +
* {{ic|relatime}} は、前回のアクセス日時が現在の変更日時よりも古い場合にのみ、アクセス日時を更新します。加えて、Linux 2.6.30 以降、前回のアクセス日時が 24 時間より古い場合は、アクセス日時は常に更新されます。{{ic|defaults}} オプション (カーネルのデフォルト、つまり {{ic|relatime}} を使うことを意味します。{{man|8|mount}} と [[wikipedia:Stat (system call)#Criticism of atime]] を参照) や {{ic|atime}} オプションが指定された場合、または何のオプションも指定されなかった場合、このオプションが使用されます。
   
  +
最後にファイルが変更されてからファイルが読み込まれたかどうかを知る必要のあるアプリケーション ([[Mutt]] など) を使う場合、{{ic|noatime}} オプションを使用するべきではありません。{{ic|relatime}} オプションは許容範囲内で、パフォーマンスも改善することができます。
=== ファイルパスのスペース(空白) ===
 
   
  +
カーネル 4.0 以降、もう一つの関連するオプションが追加されました:
マウントポイントにスペース(空白)が含まれている場合、エスケープ文字 {{ic|\}} と3文字の8進数コード {{ic|040}} を使ってスペースの代わりにしてください:
 
   
  +
* {{ic|lazytime}} は inode タイムスタンプ (アクセス・変更・作成日時) の変更をメモリ上に保存することでディスクへの書き込みを減らします。ディスク上のタイムスタンプが更新されるのは次の場合に限られます。(1) ファイルのタイムスタンプとは関係ない変更によってファイルの inode を更新する必要があるとき。(2) ディスクへの同期が発生したとき。(3) 削除されていない inode がメモリから追い出されたとき。(4) メモリ上のコピーがディスクに最後に書き込まれてから24時間以上経ったとき。
{{hc|/etc/fstab|2=
 
  +
: {{Warning|システムがクラッシュした場合、ディスク上のアクセス時間や最終変更日時は最大で24時間ずれる可能性があります。}}
UUID=47FA-4071 /home/username/Camera<font color="grey">\040</font>Pictures vfat defaults,noatime 0 0
 
/dev/sda7 /media/100<font color="grey">\040</font>GB<font color="grey">\040</font>(Storage) ext4 defaults,noatime,user 0 2}}
 
   
  +
{{ic|lazytime}} オプションは前述の {{ic|*atime}} オプションと '''組み合わせて''' 使うものであり、代替のものではないことに注意してください。それはデフォルトで {{ic|relatime}} ですが、{{ic|strictatime}} とも一緒に使うことができ、ディスクの書き込みコストは {{ic|relatime}} と同じかそれ以下です。
=== 外部デバイス ===
 
   
  +
=== root パーティションの再マウント ===
存在するときに外部デバイスをマウントして、無い時は無視するには {{ic|nofail}} オプションが必要です。このオプションは起動時にエラーが報告されるのを防止します。
 
   
  +
何らかの理由で誤って root パーティションを読み込み専用でマウントしてしまった場合は、次のコマンドで root パーティションを再マウントしてください:
{{hc|/etc/fstab|2=
 
/dev/sdg1 /media/backup jfs defaults,nofail,x-systemd.device-timeout=1 0 2}}
 
   
  +
# mount -o remount,rw /
systemd 219 から、{{ic|nofail}} オプションを使う時は {{ic|x-systemd.device-timeout}} オプションも使用することが推奨されます。デフォルトのデバイスタイムアウトが90秒になったため、{{ic|nofail}} しか指定しない場合、外部デバイスを切断したときに起動が90秒伸びることになるからです。上記のようにタイムアウトを再設定して上げて下さい。タイムアウトを0に設定してはいけません。永遠にタイムアウトしなくなります。
 
   
  +
=== GPT パーティションの自動マウント ===
また、外部デバイスを扱うのに他の systemd ユニットをロードする必要がある場合 (例えばネットワークで共有する場合など)、{{ic|1=x-systemd.requires=x}} と {{ic|x-systemd.automount}} を組み合わせて使うことで、ユニットが起動してから自動マウントさせることができます。例:
 
   
  +
UEFI/GPT を使用している場合、[https://uapi-group.org/specifications/specs/discoverable_partitions_specification/ Discoverable Partitions Specification] に従ってパーティショニングすることで、特定のパーティションを {{ic|/etc/fstab}} から省略することができ、{{man|8|systemd-gpt-auto-generator}} を使ってそのパーティションをマウントすることができます。[[systemd#GPT パーティションの自動マウント]] を見てください。
{{hc|/etc/fstab|2=
 
/host/share /net/share cifs noauto,nofail,x-systemd.automount,x-systemd.requires=network-online.target,x-systemd.device-timeout=10,workgroup=workgroup,credentials=/foo/credentials 0 0}}
 
   
  +
=== バインドマウント ===
また、[[NetworkManager#NetworkManager Wait Online を有効にする|NetworkManager-wait-online]] や [[Systemd-networkd#起動時にマウントサービスが失敗する|systemd-networkd-wait-online]] を有効化する方法もあります。
 
   
  +
{{ic|bind}} オプションにより、ディレクトリをリンクさせることができます:
=== atime オプション ===
 
   
  +
{{hc|/etc/fstab|2=
{{ic|noatime}}, {{ic|nodiratime}}, {{ic|relatime}} を使用するとドライブのパフォーマンスが改善します。Linux は読み込まれるたびに記録する(ドライブに書き込む) {{ic|atime}} をデフォルトで使っています。これは Linux をサーバーに使っている時は理にかなっていますが、デスクトップとして利用する場合はそれほど意味がありません。{{ic|atime}} オプションの最悪な点は、ページキャッシュからファイルを読み込む(ドライブではなくメモリから読み込む)ときでさえ書き込みを行ってしまうことです!{{ic|noatime}} オプションはファイルを読み込むたびにドライブにファイルのアクセス日時を書き込むのを完全に無効にします。これはほとんど全てのアプリケーションでうまくいきますが、そのような情報が必要な [[Mutt]] などの例外がわずかに存在します。mutt のために、{{ic|relatime}} オプションを使うほうがいいでしょう。{{ic|relatime}} オプションはファイルが変更されたときだけファイルアクセス日時の書き込みを有効にします ({{ic|noatime}} はアクセス日時が変更日時より古い場合でもアクセス日時を変更しません)。{{ic|nodiratime}} オプションはファイルアクセス日時の書き込みをディレクトリでだけ無効化し、その他のファイルではアクセス日時の書き込みが行われます。[[Mutt]] などのプログラムを動作させるために妥協として {{ic|relatime}} を使うのがベストだと思われます。
 
  +
# <device> <dir> <type> <options> <dump> <fsck>
  +
UUID=94649E22649E06E0 /media/user/OS/ ntfs defaults,rw,errors=remount-ro 0 0
  +
/media/user/OS/Users/user/Music/ /home/user/Music/ none defaults,bind 0 0
  +
/media/user/OS/Users/user/Pictures/ /home/user/Pictures/ none defaults,bind 0 0
  +
/media/user/OS/Users/user/Videos/ /home/user/Videos/ none defaults,bind 0 0
  +
/media/user/OS/Users/user/Downloads/ /home/user/Downloads/ none defaults,bind 0 0
  +
/media/user/OS/Users/user/Documents/ /home/user/Documents/ none defaults,bind 0 0
  +
/media/user/OS/Users/user/projects/ /home/user/projects/windows/ none defaults,bind 0 0
  +
}}
   
  +
詳細は {{man|8|mount|Bind mount operation}} を見てください。
逆に {{ic|strictatime}} オプションはファイルにアクセスするたびにアクセス日時を更新します。サーバーとして Linux を使っている場合には意味がありますが、デスクトップ用途ではあまり有意義ではありません。{{ic|strictatime}} オプションの欠点として、たとえ (ドライブではなくメモリから読み込む) ページキャッシュからファイルを読み込んだ場合でも、ディスクに書き込みが発生してしまいます。
 
   
  +
=== genfstab を使用して fstab を自動的に生成する ===
{{Note|{{ic|noatime}} は {{ic|nodiratime}} を含んでいます。両方を指定する必要はありません。[https://lwn.net/Articles/244941/ ]}}
 
   
  +
''genfstab'' ツールを使用して fstab ファイルを作成できます。詳細については、[[genfstab]] を参照してください。
カーネル 4.0 から {{ic|lazytime}} という新しいオプションが追加されました。{{ic|lazytime}} は inode タイムスタンプ (アクセス・変更・作成日時) の変更をメモリ上に保存することでディスクへの書き込みを減らします。ディスク上のタイムスタンプが更新されるのは次の場合に限られます。(1) ファイルのタイムスタンプとは関係ない変更によってファイルの inode を更新する必要があるとき。(2) ディスクへの同期が発生したとき。(3) 削除されていない inode がメモリから追い出されたとき。(4) メモリ上のコピーがディスクに最後に書き込まれてから24時間以上経ったとき。
 
{{Warning|システムがクラッシュした場合、ディスク上のアクセス時間や最終変更日時は最大で24時間ずれる可能性があります。}}
 
   
  +
=== GUI ユーティリティ ===
{{ic|lazytime}} オプションは前述の {{ic|*atime}} オプションと一緒に使うことが可能です。
 
   
  +
以下は、マウントポイントを変更する際に用いることのできるプログラムのリストです。Fstab で利用できる機能のうち一部は実装されていないかもしれませんが、最も利用される機能はすべて実装されており、作業がうんと楽になるかもしれません:
=== FAT32 に標準ユーザーとして書き込み ===
 
   
  +
* {{App|[[wikipedia:GNOME Disks|GNOME Disks]]|ストレージデバイスを管理するための GNOME ユーティリティ。|https://wiki.gnome.org/Apps/Disks|{{Pkg|gnome-disk-utility}}}}
[[FAT#FAT32 に標準ユーザーとして書き込み]]を参照してください。
 
  +
* {{App|KDE Partition Manager|コンピュータ上のディスク、パーティション、ファイルシステムの管理を補助するユーティリティ。|https://apps.kde.org/partitionmanager/|{{Pkg|partitionmanager}}}}
   
=== root パーティションの再マウント ===
+
=== ユーザーのパーミッションと所有者を変更する ===
   
何らか理由で誤って root パーティションを読み込み専用でマウントてしまった場合マンドで root パーティションを再マウントしてください:
+
あるドライブのマウントをすべのユーザーに許可した場合、以下のマトポイントオプションを fstab エントリに追加することを検討してください
   
  +
{{Note|これは、ファイルのパーミッション機能が無いファイルシステムに対しても用いられます。この場合、ドライブ全体の所有者とパーミッションは、そのドライブをマウントしたユーザーに設定されます。}}
# mount -o remount,rw /
 
   
  +
* {{ic|users}} - 全てのユーザーは、(たとえ他の通常ユーザーがそのドライブをマウントしていたとしても) 対象のファイルシステムをマウント/アンマウントできるようになります。このオプションは、noexec、nosuid、nodev オプションも暗黙的に設定します (ただし、後続のオプションによって上書きされない限り。例えば、users,exec,dev,suid)。これを有効化するには {{ic|users}} をマウントオプションに追加してください。
=== バインドマウント ===
 
  +
* {{ic|user}} - 任意の通常ユーザーに対象のファイルシステムのマウントを許可します。ただし、同じユーザーしかそのファイルシステムをアンマウントできません。このオプションは、noexec、nosuid、nodev オプションも暗黙的に設定します (ただし、後続のオプションによって上書きされない限り。例えば、users,exec,dev,suid)。これを有効化するには {{ic|user}} をマウントオプションに追加してください。
   
  +
FAT や exFAT のようにファイルのパーミッションが実装されていないファイルシステムの場合は、ドライブ全体及び保存されているファイルに対してユーザーとグループを明示的に設定することができます。特定のユーザーの ID は {{ic|/etc/passwd}} で調べられます。UID は passwd エントリの3番目、GID は4番目です。
{{Note|ディレクトリを別の場所にバインドしていることはプログラムからはわからないため、{{ic|rm -r *}} のようなコマンドを実行してしまうと元の場所のファイルも消去されてしまいます。そのため、通常はソフトリンクを使うことが推奨されます。Btrfs 上のディレクトリにアクセスする必要がありソフトリンクは使えない場合、[[Btrfs#サブボリューム|サブボリューム]]機能でマウントオプションのようにケーパビリティを拡張できます。}}
 
   
  +
* {{ic|uid}} - ドライブの所有者 ID を設定します
権限がないために特定のディレクトリにプログラムやユーザーがアクセスできない場合、プログラムがアクセスできる場所にディレクトリをバインドマウントすることでアクセスさせることができます。プログラムがあるディレクトリ ''bar'' にはアクセスできるがディレクトリ ''foo'' にはアクセスできないとき、{{ic|/etc/fstab}} にエントリを追加することで特にパーミッションを弄らないでもアクセス権限を与えられます:
 
  +
* {{ic|gid}} - ドライブのグループ ID を設定します
{{hc|/etc/fstab|2=
 
  +
/<path to foo> /<path to bar> none bind 0 0}}
 
  +
Ext4 や brtfs などパーミッション機能を持つファイルシステムの場合は、(ドライブをマウントしたユーザー以外の) 他のユーザーはドライブにアクセスできないかもしれません。{{ic|/path/to/drive/}} のパーみションを確認し、必要に応じてパーミッションを変更してください。
   
 
== 参照 ==
 
== 参照 ==
   
*[https://www.kernel.org/pub/linux/docs/lanana/device-list/devices-2.6.txt ブロックデバイスを含むデバイスリスト]
+
* [https://docs.kernel.org/admin-guide/devices.html ブロックデバイスを含むデバイスリスト]
*[http://www.pathname.com/fhs/2.2/index.html Filesystem Hierarchy Standard]
+
* [https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html Filesystem Hierarchy Standard]
* [https://www.askapache.com/optimize/super-speed-secrets/ tmpfs を使ってキャッシュとサイト速度を30倍に高速化]
+
* [https://www.askapache.com/optimize/super-speed-secrets/ TMPFS を使ってキャッシュとサイト速度を30倍に高速化]
  +
* [[Samba#マウントエントリ|Samba 共有を /etc/fstab に追加]]
 
  +
{{TranslationStatus|Fstab|2024-02-22|800943}}

2024年2月22日 (木) 19:22時点における最新版

関連記事

fstab(5) ファイルは、ディスクパーティションや様々なブロックデバイス、リモートファイルシステムをどうやってファイルシステムにマウントするかを記述します。

ファイルシステムは一行毎に記述されます。書かれている定義は、起動時やシステムマネージャの設定がリロードされたときに systemd の mount ユニットに動的に変換されます。デフォルトの設定では、マウントを必要とするサービスが起動する前にファイルシステムの fsck とマウントを自動的に実行します。例えば、NFSSamba などのリモートファイルシステムはネットワークが立ち上がった後に systemd によって自動的にマウントされます。そのため、/etc/fstab に指定するローカル・リモートファイルシステムのマウントに設定は必要ありません。詳しくは systemd.mount(5) を見て下さい。

mount コマンドはディレクトリやデバイスがひとつだけ指定された場合、他のパラメータの値を取得するために fstab を使います。このとき、fstab に記述されたマウントオプションも使われます。

使用法

以下は、ファイルシステムの UUID を使用した /etc/fstab の例です:

/etc/fstab
# <device>                                <dir> <type> <options> <dump> <fsck>
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 /     ext4   defaults  0      1
UUID=f9fe0b69-a280-415d-a03a-a32752370dee none  swap   defaults  0      0
UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4   defaults  0      2
  • <device> には、マウントされるべきブロック特殊デバイスやリモートファイルシステムを記述します。#ファイルシステムの識別 を見てください。
  • <dir> には、マウントディレクトリを記述します。
  • <type> ファイルシステムの種類。
  • <options> 関連するマウントオプション。mount(8) § FILESYSTEM-INDEPENDENT MOUNT OPTIONSext4(5) § Mount options for ext4 を見てください。
  • <dump>dump(8) ユーティリティによってチェックされます。このフィールドは通常 0 にセットします。0 はチェックを無効化します。
  • <fsck> は、起動時にチェックするファイルシステムの順番を設定します。fsck(8) を見てください。ルートファイルシステムには 1 を設定するべきです。他のパーティションには 2 を設定するか、チェックを無効化する 0 を設定するべきです。
ヒント:
  • タイプ auto は、使用されているファイルシステムの種類をマウントコマンドに推測させます。このオプションは、光学メディア (CD/DVD/Blu-ray) の場合に便利です。
  • ルートファイルシステムが btrfsXFS の場合、fsck の順番は 1 ではなく 0 に設定するべきです。fsck.btrfs(8)fsck.xfs(8) を見てください。

スタートアップ時や、noauto オプションが指定されていないデバイスに対して mount(8) コマンドを -a フラグ付きで実行した時に、/etc/fstab 内で指定されたすべてのデバイスは自動的にマウントされます。リストにあるが存在しないデバイスは、nofail オプションが使用されている場合を除き、エラーとなります。

詳細は fstab(5) § DESCRIPTION を見てください。

ファイルシステムの識別

/etc/fstab でファイルシステムを識別する方法がいくつか存在します: カーネルの名前記述子、ファイルシステムのラベルや UUID、GPT パーティションのラベルや UUID です。カーネルの名前記述子は使用すべきではありません。ラベルよりも UUID や PARTUUID を優先して使用すべきです。詳細は 永続的なブロックデバイスの命名 を見てください。この記事を読み進める前に、その記事を先に読むことをおすすめします。

このセクションでは、ファイルシステムをマウントするいくつかの方法を例を通して説明します。以下の例で使用されるコマンド lsblk -fblkid の出力は、永続的なブロックデバイスの命名 で見られます。

カーネルの名前記述子

lsblk -f を実行してパーティションの一覧を出力し、NAME 列の値の前に /dev/ を付け加えてください。

/etc/fstab
# <device>        <dir>        <type>        <options>        <dump> <fsck>
/dev/sda1         /boot        vfat          defaults         0      2
/dev/sda2         /            ext4          defaults         0      1
/dev/sda3         /home        ext4          defaults         0      2
/dev/sda4         none         swap          defaults         0      0
警告: ブロックデバイスのカーネル名記述子永続的 ではなく、ブートごとに変更される可能性があるため、設定ファイル (/etc/fstab を含む) で使用しないでください。

ファイルシステムラベル

lsblk -f を実行してパーティションの一覧を出力し、LABEL 列の値の前に LABEL= を付け加えてください。あるいは、blkid を実行し、LABEL の値を引用符無しで使ってください:

/etc/fstab
# <device>        <dir>        <type>        <options>        <dump> <fsck>
LABEL=ESP         /boot        vfat          defaults         0      2
LABEL=System      /            ext4          defaults         0      1
LABEL=Data        /home        ext4          defaults         0      2
LABEL=Swap        none         swap          defaults         0      0
ノート: 任意のフィールドにスペースが含まれる場合、#ファイルパスのスペース を見てください。

ファイルシステム UUID

lsblk -f を実行してパーティションの一覧を出力し、UUID 列の値の前に UUID= を付け加えてください。あるいは、blkid を実行し、UUID の値を引用符無しで使ってください:

/etc/fstab
# <device>                                <dir> <type> <options> <dump> <fsck>
UUID=CBB6-24F2                            /boot vfat   defaults  0      2
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 /     ext4   defaults  0      1
UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4   defaults  0      2
UUID=f9fe0b69-a280-415d-a03a-a32752370dee none  swap   defaults  0      0

GPT パーティションラベル

blkid を実行してパーティションの一覧を出力し、PARTLABEL の値を引用符無しで使ってください:

/etc/fstab
# <device>                           <dir> <type> <options> <dump> <fsck>
PARTLABEL=EFI\040system\040partition /boot vfat   defaults  0      2
PARTLABEL=GNU/Linux                  /     ext4   defaults  0      1
PARTLABEL=Home                       /home ext4   defaults  0      2
PARTLABEL=Swap                       none  swap   defaults  0      0
ノート: 任意のフィールドにスペースが含まれる場合、#ファイルパスのスペース を見てください。

GPT パーティション UUID

blkid を実行してパーティションの一覧を出力し、PARTUUID の値を引用符無しで使ってください:

/etc/fstab
# <device>                                    <dir> <type> <options> <dump> <fsck>
PARTUUID=d0d0d110-0a71-4ed6-936a-304969ea36af /boot vfat   defaults  0      2
PARTUUID=98a81274-10f7-40db-872a-03df048df366 /     ext4   defaults  0      1
PARTUUID=7280201c-fc5d-40f2-a9b2-466611d3d49e /home ext4   defaults  0      2
PARTUUID=039b6c1c-7553-4455-9537-1befbc9fbc5b none  swap   defaults  0      0

ヒントとテクニック

systemd による自動マウント

systemd のすべてのマウントオプションは systemd.mount(5) を見てください。

ローカルパーティション

巨大なパーティションが存在する場合、fsck によってそのパーティションがチェックされている間に、そのパーティションに依存しないサービスを起動できるようにすると効率が良くなるかもしれません。パーティションの /etc/fstab エントリに以下のオプションを追加することでそのように設定できます:

x-systemd.automount

そのパーティションに最初にアクセスしたときに fsck とマウントを行うようになり、パーティションの準備が出来るまでカーネルがそのパーティションへのファイルアクセスを全てバッファします。 この方法は、巨大な /home パーティションがある場合などに適用できます。

ノート: この設定はファイルシステムのタイプを autofs にします。これは mlocate によってデフォルトで無視されます。

リモートファイルシステム

同じ設定はリモートファイルシステムのマウントにも適用できます。アクセスしたときにだけリモートファイルシステムをマウントしたい場合、x-systemd.automount パラメータを使って下さい。さらに、x-systemd.mount-timeout= オプションを使うことで、マウントコマンドが完了するまでの制限時間を指定できます。また、_netdev オプションで systemd がネットワークに依存するマウントであることを認識してネットワークがオンラインになった後に順番を入れ替えます。

x-systemd.automount,x-systemd.mount-timeout=30,_netdev

暗号化ファイルシステム

キーファイルによって暗号化したファイルシステムがある場合も、noauto パラメータを /etc/crypttab の適当なエントリに追加することができます。設定することで systemd は起動時に暗号化デバイスを開かないようになり、実際にアクセスされたときになってから指定したキーファイルを使ってファイルシステムを開いてマウントします。デバイスが利用可能になるのを systemd が待機しないようになるので、暗号化 RAID デバイスなどを使っている場合、起動時間が数秒間短くなるかもしれません。例:

/etc/crypttab
data /dev/md/MyRAIDArray /etc/cryptsetup-keys.d/data.key noauto

自動アンマウント

x-systemd.idle-timeout フラグを使うことで一定時間アイドル状態のときにタイムアウトするのを指定できます。例:

x-systemd.automount,x-systemd.idle-timeout=1min

上記の設定の場合、1分間操作がないと systemd によってアンマウントされます。

外部デバイス

外部デバイスが存在する時はマウントし、存在しない場合は無視したい場合、nofail オプションが必要です。これにより、起動時にエラーが発生するのを防ぐことができます。例えば:

/etc/fstab
LABEL=MyExternalDrive /media/backup    jfs    nofail,x-systemd.device-timeout=5    0  2

nofail オプションは x-systemd.device-timeout オプションと組み合わせて使うのが最も効果的です。デフォルトのデバイスタイムアウトは 90 秒であるのが理由で、タイムアウトを再設定しなかった場合、nofail だけが指定されている切断済みの外部デバイスのせいで起動時間が 90 秒長くなってしまいます。タイムアウトを 0 にはしないでください。0 は無限に待つことになります。

ファイルパスのスペース

fstab ではスペースがフィールドの区切り文字として使用されているため、フィールド (PARTLABELLABEL、マウントポイント) にスペースが含まれている場合、これらのスペースをエスケープ文字 \ と3桁の8進数 040 に置き換えなければなりません:

/etc/fstab
UUID=47FA-4071         /home/username/Camera\040Pictures   vfat  defaults      0  0
LABEL=Storage\040drive /media/100\040GB\040(Storage)       ext4  defaults,user 0  2

atime オプション

以下の atime オプションはドライブのパフォーマンスに影響を与える可能性があります。

  • strictatime オプションは、ファイルにアクセスするたびにアクセス日時を更新します。サーバーとして Linux を使っている場合には意味がありますが、デスクトップ用途ではあまり有意義ではありません。strictatime オプションの欠点として、たとえ (ドライブではなくメモリから読み込む) ページキャッシュからファイルを読み込んだ場合でも、ディスクに書き込みが発生してしまいます。
  • noatime オプションは、ファイルを読み込むたびにドライブにファイルのアクセス日時を書き込むのを完全に無効化します。このオプションは、ファイルが最後に変更されてから読まれたかどうかを確認する必要のあるアプリケーションを除いて、ほとんどのアプリケーションでうまく機能します。このオプションを有効にしても、書き込み日時の情報は継続して更新され続けます。
  • nodiratime オプションはファイルアクセス日時の書き込みをディレクトリでだけ無効化し、その他のファイルではアクセス日時の書き込みが行われます。
    ノート: noatimenodiratime も含んでいます。両方を指定する必要はありません
  • relatime は、前回のアクセス日時が現在の変更日時よりも古い場合にのみ、アクセス日時を更新します。加えて、Linux 2.6.30 以降、前回のアクセス日時が 24 時間より古い場合は、アクセス日時は常に更新されます。defaults オプション (カーネルのデフォルト、つまり relatime を使うことを意味します。mount(8)wikipedia:Stat (system call)#Criticism of atime を参照) や atime オプションが指定された場合、または何のオプションも指定されなかった場合、このオプションが使用されます。

最後にファイルが変更されてからファイルが読み込まれたかどうかを知る必要のあるアプリケーション (Mutt など) を使う場合、noatime オプションを使用するべきではありません。relatime オプションは許容範囲内で、パフォーマンスも改善することができます。

カーネル 4.0 以降、もう一つの関連するオプションが追加されました:

  • lazytime は inode タイムスタンプ (アクセス・変更・作成日時) の変更をメモリ上に保存することでディスクへの書き込みを減らします。ディスク上のタイムスタンプが更新されるのは次の場合に限られます。(1) ファイルのタイムスタンプとは関係ない変更によってファイルの inode を更新する必要があるとき。(2) ディスクへの同期が発生したとき。(3) 削除されていない inode がメモリから追い出されたとき。(4) メモリ上のコピーがディスクに最後に書き込まれてから24時間以上経ったとき。
警告: システムがクラッシュした場合、ディスク上のアクセス時間や最終変更日時は最大で24時間ずれる可能性があります。

lazytime オプションは前述の *atime オプションと 組み合わせて 使うものであり、代替のものではないことに注意してください。それはデフォルトで relatime ですが、strictatime とも一緒に使うことができ、ディスクの書き込みコストは relatime と同じかそれ以下です。

root パーティションの再マウント

何らかの理由で誤って root パーティションを読み込み専用でマウントしてしまった場合は、次のコマンドで root パーティションを再マウントしてください:

# mount -o remount,rw /

GPT パーティションの自動マウント

UEFI/GPT を使用している場合、Discoverable Partitions Specification に従ってパーティショニングすることで、特定のパーティションを /etc/fstab から省略することができ、systemd-gpt-auto-generator(8) を使ってそのパーティションをマウントすることができます。systemd#GPT パーティションの自動マウント を見てください。

バインドマウント

bind オプションにより、ディレクトリをリンクさせることができます:

/etc/fstab
# <device>                             <dir>                         <type> <options>     <dump> <fsck>
UUID=94649E22649E06E0                  /media/user/OS/               ntfs    defaults,rw,errors=remount-ro  0  0
/media/user/OS/Users/user/Music/       /home/user/Music/             none    defaults,bind 0   0
/media/user/OS/Users/user/Pictures/    /home/user/Pictures/          none    defaults,bind 0   0
/media/user/OS/Users/user/Videos/      /home/user/Videos/            none    defaults,bind 0   0
/media/user/OS/Users/user/Downloads/   /home/user/Downloads/         none    defaults,bind 0   0
/media/user/OS/Users/user/Documents/   /home/user/Documents/         none    defaults,bind 0   0
/media/user/OS/Users/user/projects/    /home/user/projects/windows/  none    defaults,bind 0   0

詳細は mount(8) § Bind mount operation を見てください。

genfstab を使用して fstab を自動的に生成する

genfstab ツールを使用して fstab ファイルを作成できます。詳細については、genfstab を参照してください。

GUI ユーティリティ

以下は、マウントポイントを変更する際に用いることのできるプログラムのリストです。Fstab で利用できる機能のうち一部は実装されていないかもしれませんが、最も利用される機能はすべて実装されており、作業がうんと楽になるかもしれません:

  • GNOME Disks — ストレージデバイスを管理するための GNOME ユーティリティ。
https://wiki.gnome.org/Apps/Disks || gnome-disk-utility
  • KDE Partition Manager — コンピュータ上のディスク、パーティション、ファイルシステムの管理を補助するユーティリティ。
https://apps.kde.org/partitionmanager/ || partitionmanager

ユーザーのパーミッションと所有者を変更する

あるドライブのマウントをすべてのユーザーに許可したい場合、以下のマウントポイントオプションを fstab エントリに追加することを検討してください。

ノート: これは、ファイルのパーミッション機能が無いファイルシステムに対しても用いられます。この場合、ドライブ全体の所有者とパーミッションは、そのドライブをマウントしたユーザーに設定されます。
  • users - 全てのユーザーは、(たとえ他の通常ユーザーがそのドライブをマウントしていたとしても) 対象のファイルシステムをマウント/アンマウントできるようになります。このオプションは、noexec、nosuid、nodev オプションも暗黙的に設定します (ただし、後続のオプションによって上書きされない限り。例えば、users,exec,dev,suid)。これを有効化するには users をマウントオプションに追加してください。
  • user - 任意の通常ユーザーに対象のファイルシステムのマウントを許可します。ただし、同じユーザーしかそのファイルシステムをアンマウントできません。このオプションは、noexec、nosuid、nodev オプションも暗黙的に設定します (ただし、後続のオプションによって上書きされない限り。例えば、users,exec,dev,suid)。これを有効化するには user をマウントオプションに追加してください。

FAT や exFAT のようにファイルのパーミッションが実装されていないファイルシステムの場合は、ドライブ全体及び保存されているファイルに対してユーザーとグループを明示的に設定することができます。特定のユーザーの ID は /etc/passwd で調べられます。UID は passwd エントリの3番目、GID は4番目です。

  • uid - ドライブの所有者 ID を設定します
  • gid - ドライブのグループ ID を設定します

Ext4 や brtfs などパーミッション機能を持つファイルシステムの場合は、(ドライブをマウントしたユーザー以外の) 他のユーザーはドライブにアクセスできないかもしれません。/path/to/drive/ のパーみションを確認し、必要に応じてパーミッションを変更してください。

参照

翻訳ステータス: このページは en:Fstab の翻訳バージョンです。最後の翻訳日は 2024-02-22 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。