「Fstab」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
 
 
(7人の利用者による、間の47版が非表示)
2行目: 2行目:
 
[[Category:ファイルシステム]]
 
[[Category:ファイルシステム]]
 
[[Category:ブートプロセス]]
 
[[Category:ブートプロセス]]
  +
[[de:Fstab]]
 
[[en:Fstab]]
 
[[en:Fstab]]
 
[[es:Fstab]]
 
[[es:Fstab]]
  +
[[fr:Fstab]]
 
[[it:Fstab]]
 
[[it:Fstab]]
[[ro:Fstab]]
+
[[pt:Fstab]]
 
[[ru:Fstab]]
 
[[ru:Fstab]]
[[zh-CN:Fstab]]
+
[[zh-hans:Fstab]]
  +
{{Related articles start}}
[[zh-TW:Fstab]]
 
  +
{{Related|永続的なブロックデバイスの命名}}
{{Related articles start (日本語)}}
 
  +
{{Related|ファイルシステム}}
{{Related3|Persistent block device naming|永続的なブロックデバイスの命名}}
 
  +
{{Related|tmpfs}}
{{Related2|NTFS-3G|NTFS の書き込みサポート}}
 
  +
{{Related|スワップ}}
{{Related4|Firefox Ramdisk}}
 
  +
{{Related|genfstab}}
{{Related3|Boot debugging|ブートデバッグ}}
 
{{Related|udev}}
 
 
{{Related articles end}}
 
{{Related articles end}}
   
[[Wikipedia:Fstab|/etc/fstab]] ファイルはディスクパーティションや様々なブロックデバイス、リモートファイルをどうやってファイルシステムにマウントするかを記述します。
+
{{man|5|fstab}} ファイルはディスクパーティションや様々なブロックデバイス、リモートファイルシステムをどうやってファイルシステムにマウントするかを記述します。
   
ファイルシステムは一行毎に記述されます。書かれている定義は、起動時やシステムマネージャの設定がリロードされたときに [[systemd (日本語)|systemd]] の mount ユニットに動的に変換されます。デフォルトの設定はマウントを必要とするサービスが起動する前にファイルシステムの fsck とマウントを自動的に実行します。例えば、[[NFS (日本語)|NFS]] や [[Samba (日本語)|Samba]] などのリモートファイルシステムはネットワークが立ち上がった後に systemd によって自動的にマウントされます。そのため、{{ic|/etc/fstab}} に指定するローカル・リモートファイルシステムのマウントに設定は必要ありません。詳しくは {{ic|man 5 systemd.mount}} を見て下さい。
+
ファイルシステムは一行毎に記述されます。書かれている定義は、起動時やシステムマネージャの設定がリロードされたときに [[systemd]] の mount ユニットに動的に変換されます。デフォルトの設定マウントを必要とするサービスが起動する前にファイルシステムの [[fsck]] とマウントを自動的に実行します。例えば、[[NFS]] や [[Samba]] などのリモートファイルシステムはネットワークが立ち上がった後に systemd によって自動的にマウントされます。そのため、{{ic|/etc/fstab}} に指定するローカル・リモートファイルシステムのマウントに設定は必要ありません。詳しくは {{man|5|systemd.mount}} を見て下さい。
   
 
{{ic|mount}} コマンドはディレクトリやデバイスがひとつだけ指定された場合、他のパラメータの値を取得するために fstab を使います。このとき、fstab に記述されたマウントオプションも使われます。
 
{{ic|mount}} コマンドはディレクトリやデバイスがひとつだけ指定された場合、他のパラメータの値を取得するために fstab を使います。このとき、fstab に記述されたマウントオプションも使われます。
   
== ファイル例 ==
+
== 使用法 ==
   
シンプ {{ic|/etc/fstab}} はカーネル名前記述子を使います:
+
以下は、ファイシステムの UUID を使用した {{ic|/etc/fstab}} の例です:
   
{{hc|/etc/fstab|
+
{{hc|/etc/fstab|2=
# <file system> <dir> <type> <options> <dump> <pass>
+
<span style="text-wrap: nowrap; white-space: pre; word-break: keep-all;"># <device> <dir> <type> <options> <dump> <fsck>
  +
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 / ext4 defaults 0 1
  +
UUID=CBB6-24F2 /boot vfat defaults,nodev,nosuid,noexec,fmask=0177,dmask=0077 0 2
  +
UUID=f9fe0b69-a280-415d-a03a-a32752370dee none swap defaults 0 0
  +
UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4 defaults 0 2
  +
</span>}}
   
  +
* {{ic|<device>}} には、マウントされるべきブロック特殊デバイスやリモートファイルシステムを記述します。[[#ファイルシステムの識別]] を見てください。
/dev/sda1 / ext4 defaults,noatime 0 1
 
  +
* {{ic|<dir>}} には、[[マウント]]ディレクトリを記述します。
/dev/sda2 none swap defaults 0 0
 
  +
* {{ic|<type>}} [[ファイルシステム]]の種類。
/dev/sda3 /home ext4 defaults,noatime 0 2}}
 
  +
* {{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|<fsck>}} は、起動時にチェックするファイルシステムの順番を設定します。{{man|8|fsck}} を見てください。ルートファイルシステムには {{ic|1}} を設定するべきです。他のパーティションには {{ic|2}} を設定するか、チェックを無効化する {{ic|0}} を設定するべきです。
   
  +
{{Tip|
== フィールドの定義 ==
 
  +
* タイプ {{ic|auto}} は、使用されているファイルシステムの種類をマウントコマンドに推測させます。このオプションは、[[光学ディスクドライブ|光学メディア]] (CD/DVD/Blu-ray) の場合に便利です。
  +
* ルートファイルシステムが [[btrfs]] か [[XFS]] の場合、fsck の順番は {{ic|1}} ではなく {{ic|0}} に設定するべきです。{{man|8|fsck.btrfs}} と {{man|8|fsck.xfs}} を見てください。
  +
}}
   
  +
スタートアップ時や、{{ic|noauto}} オプションが指定されていないデバイスに対して {{man|8|mount}} コマンドを {{ic|-a}} フラグ付きで実行した時に、{{ic|/etc/fstab}} 内で指定されたすべてのデバイスは自動的にマウントされます。リストにあるが存在しないデバイスは、{{ic|nofail}} オプションが使用されている場合を除き、エラーとなります。
{{ic|/etc/fstab}} ファイルには以下のフィールドが含まれ、スペースかタブで区切ります:
 
   
  +
詳細は {{man|5|fstab|DESCRIPTION}} を見てください。
<file system> <dir> <type> <options> <dump> <pass>
 
   
  +
== ファイルシステムの識別 ==
* '''<file system>''' - マウントされるパーティションやストレージデバイス。
 
* '''<dir>''' - <file system> がマウントされるマウントポイント。
 
* '''<type>''' - マウントされるパーティションやストレージデバイスのファイルシステムタイプ。さまざまなファイルシステムがサポートされています: {{ic|ext2}}, {{ic|ext3}}, {{ic|ext4}}, {{ic|btrfs}}, {{ic|reiserfs}}, {{ic|xfs}}, {{ic|jfs}}, {{ic|smbfs}}, {{ic|iso9660}}, {{ic|vfat}}, {{ic|ntfs}}, {{ic|swap}}, {{ic|auto}}。{{ic|auto}} タイプはどのファイルシステムタイプが使われているかマウントコマンドに推測させます。これはディスクメディア (CD/DVD) に役立ちます。
 
* '''<options>''' - 使用されるファイルシステムのマウントオプション。[http://linux.die.net/man/8/mount マウントオプション]にはファイルシステム固有のものもあることに気をつけて下さい。最も一般的なオプションは:
 
   
  +
{{ic|/etc/fstab}} でファイルシステムを識別する方法がいくつか存在します: カーネルの名前記述子、ファイルシステムのラベルや UUID、GPT パーティションのラベルや UUID です。カーネルの名前記述子は使用すべきではありません。ラベルよりも UUID や PARTUUID を優先して使用すべきです。詳細は [[永続的なブロックデバイスの命名]] を見てください。この記事を読み進める前に、その記事を先に読むことをおすすめします。
:* {{ic|auto}} - 起動時、または {{ic|mount -a}} コマンドが実行されたときに自動でマウントします。
 
:* {{ic|noauto}} - 自動ではマウントしません。
 
:* {{ic|exec}} - ファイルシステム上のバイナリの実行を許可します。
 
:* {{ic|noexec}} - ファイルシステム上のバイナリの実行を禁止します。
 
:* {{ic|ro}} - ファイルシステムを読み込み専用でマウント。
 
:* {{ic|rw}} - ファイルシステムを読み書き可能でマウント。
 
:* {{ic|user}} - 全てのユーザーにファイルシステムのマウントを許可します。上書きしないかぎり、自動で {{ic|noexec}}, {{ic|nosuid}}, {{ic|nodev}} も有効になります。
 
:* {{ic|users}} - ユーザーグループに入っている全てのユーザーにファイルシステムのマウントを許可します。
 
:* {{ic|nouser}} - root だけにファイルシステムのマウントを許可します。
 
:* {{ic|owner}} - デバイスの所有者にマウントを許可します。
 
:* {{ic|sync}} - I/O は同期されます。
 
:* {{ic|async}} - I/O は非同期で行われます。
 
:* {{ic|dev}} - ファイルシステム上の特別なデバイスを解釈します。
 
:* {{ic|nodev}} - ファイルシステム上の特別なデバイスを解釈しない。
 
:* {{ic|suid}} - suid や sgid ビットの操作を許可します。ほとんどの場合、一時的な権限で特別な作業を行うためにユーザーがバイナリ実行可能ファイルを実行できるようにするため使われます。
 
:* {{ic|nosuid}} - suid や sgid ビットの操作を禁止します。
 
:* {{ic|noatime}} - ファイルシステムの inode アクセス日時を更新しません。パフォーマンスの向上に役立ちます ([[#atime オプション]] を見て下さい)。
 
:* {{ic|nodiratime}} - ファイルシステムのディレクトリの inode アクセス日時を更新しません。パフォーマンスの向上に役立ちます ([[#atime オプション]] を見て下さい)。
 
:* {{ic|relatime}} - 変更日時にあわせて inode アクセス日時を更新します。以前のアクセス日時が現在の変更日時よりも前のときだけアクセス日時が更新されます (noatime に似ていますが、変更されたあとファイルが読み込まれたか知る必要がある mutt などのアプリケーションを破壊しません)。パフォーマンスの向上に役立ちます ([[#atime オプション]]を見て下さい)。
 
:* {{ic|discard}} - ブロックがフリーになったときにブロックデバイスに [[SSD (日本語)#TRIM|TRIM]] コマンドを実行します。ファイルシステムが [[SSD (日本語)|SSD]] 上にあるときは使うことが推奨されています。
 
:* {{ic|flush}} - データを頻繁にフラッシュする {{ic|vfat}} のオプション。全てのデータが書き込まれるまではコピーダイアログやプログレスバーは止まったままになります。
 
:* {{ic|nofail}} - 存在するときはデバイスをマウントし、存在しないときは無視します。起動時にリムーバルメディアのエラーが報告されるのを防止します。
 
:* {{ic|defaults}} - 使われるファイルシステムのデフォルトのマウントオプション。{{ic|ext4}} のデフォルトのオプションは: {{ic|rw}}, {{ic|suid}}, {{ic|dev}}, {{ic|exec}}, {{ic|auto}}, {{ic|nouser}}, {{ic|async}}。
 
   
  +
このセクションでは、ファイルシステムをマウントするいくつかの方法を例を通して説明します。以下の例で使用されるコマンド {{ic|lsblk -f}} と {{ic|blkid}} の出力は、[[永続的なブロックデバイスの命名]] で見られます。
* '''<dump>''' - バックアップを作る時を決定するために dump ユーティリティによって使われます。Dump はエントリをチェックしその値を使ってファイルシステムがバックアップされるべきかどうか決定します。指定できるエントリは0か1です。0の場合、dumpはファイルシステムを無視します; 1の場合、dump はバックアップを作成します。ほとんどのユーザーは dump をインストールしないので、<dump> エントリには0を入れて下さい。
 
   
  +
=== カーネルの名前記述子 ===
* '''<pass>''' - ファイルシステムをチェックする順番を決めるために [[fsck]] によって使われます。指定できるエントリは0か1、もしくは2です。root ファイルシステムには一番優先度の高い1を設定してください ([[btrfs (日本語)|btrfs]] の場合は、このフィールドは0にするべきです) - その他のファイルシステムには2を入れて下さい。0のファイルシステムは fsck ユーティリティによってチェックされません。
 
   
  +
{{ic|lsblk -f}} を実行してパーティションの一覧を出力し、''NAME'' 列の値の前に {{ic|/dev/}} を付け加えてください。
== ファイルシステムの識別 ==
 
   
  +
{{hc|/etc/fstab|2=
{{ic|/etc/fstab}} でパーティションやストレージデバイスを識別する方法は3つあります: カーネルの名前記述子、ラベル、UUID です。UUID やラベルにはドライブがマシンに(物理的に)接続されている順番と切り離せるという利点があります。これは、BIOS でストレージデバイスの順番を変更したり、ストレージデバイスの配線を変えるときに有用です。また、ときどき BIOS はストレージデバイスの順番を変更してしまうことがあります。詳しくは [[Persistent block device naming]] の記事を読んで下さい。
 
  +
<span style="text-wrap: nowrap; white-space: pre; word-break: keep-all;"># <device <dir> <type> <options> <dump> <fsck>
  +
/dev/sda2 / ext4 defaults 0 1
  +
/dev/sda1 /boot vfat defaults,nodev,nosuid,noexec,fmask=0177,dmask=0077 0 2
  +
/dev/sda3 /home ext4 defaults 0 2
  +
/dev/sda4 none swap defaults 0 0
  +
</span>}}
   
  +
{{Warning|[[デバイスファイル#ブロックデバイスの名前|ブロックデバイスのカーネル名記述子]] は [[永続的なブロックデバイスの命名|永続的]] ではなく、ブートごとに変更される可能性があるため、設定ファイル ({{ic|/etc/fstab を含む}}) で使用しないでください。}}
パーティションについて基本的な情報を一覧するには、次を実行:
 
   
  +
=== ファイルシステムラベル ===
{{hc|$ lsblk -f|
 
NAME FSTYPE LABEL UUID MOUNTPOINT
 
sda
 
├─sda1 ext4 Arch_Linux 978e3e81-8048-4ae1-8a06-aa727458e8ff /
 
├─sda2 ntfs Windows 6C1093E61093B594
 
└─sda3 ext4 Storage f838b24e-3a66-4d02-86f4-a2e73e454336 /media/Storage
 
sdb
 
├─sdb1 ntfs Games 9E68F00568EFD9D3
 
└─sdb2 ext4 Backup 14d50a6c-e083-42f2-b9c4-bc8bae38d274 /media/Backup
 
sdc
 
└─sdc1 vfat Camera 47FA-4071 /media/Camera}}
 
   
  +
{{ic|lsblk -f}} を実行してパーティションの一覧を出力し、[[LABEL]] 列の値の前に {{ic|1=LABEL=}} を付け加えてください。あるいは、{{ic|blkid}} を実行し、LABEL の値を引用符無しで使ってください:
=== カーネルの名前 ===
 
   
  +
{{hc|/etc/fstab|2=
{{ic|lsblk -f}} を実行してパーティションを一覧し、前に {{ic|/dev}} を付けて下さい。
 
  +
<span style="text-wrap: nowrap; white-space: pre; word-break: keep-all;"># <device> <dir> <type> <options> <dump> <fsck>
  +
LABEL=System / ext4 defaults 0 1
  +
LABEL=ESP /boot vfat defaults,nodev,nosuid,noexec,fmask=0177,dmask=0077 0 2
  +
LABEL=Data /home ext4 defaults 0 2
  +
LABEL=Swap none swap defaults 0 0
  +
</span>}}
   
[[#ファイル例|サンプル]]を見てさい。
+
{{Note|任意のフィールドにスペースが含まれる場合、[[#ファイルパスのスペース]] を見てください。}}
   
=== ラベル ===
+
=== ファイシステム UUID ===
   
  +
{{ic|lsblk -f}} を実行してパーティションの一覧を出力し、[[UUID]] 列の値の前に {{ic|1=UUID=}} を付け加えてください。あるいは、{{ic|blkid}} を実行し、UUID の値を引用符無しで使ってください:
{{Note|衝突がおこるのを避けるために、ラベルをかぶらせてはいけません。}}
 
  +
  +
{{hc|/etc/fstab|2=
  +
<span style="text-wrap: nowrap; white-space: pre; word-break: keep-all;"># <device> <dir> <type> <options> <dump> <fsck>
  +
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 / ext4 defaults 0 1
  +
UUID=CBB6-24F2 /boot vfat defaults,nodev,nosuid,noexec,fmask=0177,dmask=0077 0 2
  +
UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4 defaults 0 2
  +
UUID=f9fe0b69-a280-415d-a03a-a32752370dee none swap defaults 0 0
  +
</span>}}
   
  +
=== GPT パーティションラベル ===
デバイスやパーティションにラベルをつける方法は [[Persistent block device naming#by-label]] を見て下さい。root パーティションのリネームは "ライブ" Linux ディストリビューション (Parted Magic, Ubuntu, etc) から行なって下さい。root パーティションは初めにアンマウントする必要があるからです。
 
   
{{ic|lsblk -f}} を実行してパーティション一覧し、前に {{ic|1=LABEL=}}付けさい:
+
{{ic|blkid}} を実行してパーティション一覧を出力し、[[PARTLABEL]] の値引用符無しで使っください:
   
 
{{hc|/etc/fstab|2=
 
{{hc|/etc/fstab|2=
# <file system> <dir> <type> <options> <dump> <pass>
+
<span style="text-wrap: nowrap; white-space: pre; word-break: keep-all;"># <device> <dir> <type> <options> <dump> <fsck>
  +
PARTLABEL=GNU/Linux / ext4 defaults 0 1
 
  +
PARTLABEL=EFI\040system\040partition /boot vfat defaults,nodev,nosuid,noexec,fmask=0177,dmask=0077 0 2
LABEL=Arch_Linux / ext4 defaults,noatime 0 1
 
LABEL=Arch_Swap none swap defaults 0 0}}
+
PARTLABEL=Home /home ext4 defaults 0 2
  +
PARTLABEL=Swap none swap defaults 0 0
  +
</span>}}
   
  +
{{Note|任意のフィールドにスペースが含まれる場合、[[#ファイルパスのスペース]] を見てください。}}
=== UUID ===
 
   
  +
=== GPT パーティション UUID ===
全てのパーティションとデバイスは固有の UUID を持っています。UUID はパーティションを作成したりフォーマットするときにファイルシステムユーティリティ (例: {{ic|mkfs.*}}) によって生成されます。詳しくは [[Persistent block device naming#by-uuid]] を見て下さい。
 
   
{{ic|lsblk -f}} を実行してパーティション一覧し、前に {{ic|1=UUID=}}付けさい:
+
{{ic|blkid}} を実行してパーティション一覧を出力し、[[PARTUUID]] の値引用符無しで使っください:
 
{{Tip|特定のパーティションの UUID だけを表示したい場合:
 
$ lsblk -no UUID /dev/sda2
 
}}
 
   
 
{{hc|/etc/fstab|2=
 
{{hc|/etc/fstab|2=
# <file system> <dir> <type> <options> <dump> <pass>
+
<span style="text-wrap: nowrap; white-space: pre; word-break: keep-all;"># <device> <dir> <type> <options> <dump> <fsck>
  +
PARTUUID=98a81274-10f7-40db-872a-03df048df366 / ext4 defaults 0 1
  +
PARTUUID=d0d0d110-0a71-4ed6-936a-304969ea36af /boot vfat defaults,nodev,nosuid,noexec,fmask=0177,dmask=0077 0 2
  +
PARTUUID=7280201c-fc5d-40f2-a9b2-466611d3d49e /home ext4 defaults 0 2
  +
PARTUUID=039b6c1c-7553-4455-9537-1befbc9fbc5b none swap defaults 0 0
  +
</span>}}
   
  +
== ヒントとテクニック ==
UUID=24f28fc6-717e-4bcd-a5f7-32b959024e26 / ext4 defaults,noatime 0 1
 
UUID=03ec5dd3-45c0-4f95-a363-61ff321a09ff /home ext4 defaults,noatime 0 2
 
UUID=4209c845-f495-4c43-8a03-5363dd433153 none swap defaults 0 0}}
 
   
  +
=== systemd による自動マウント ===
== Tips and tricks ==
 
   
  +
systemd のすべてのマウントオプションは {{man|5|systemd.mount}} を見てください。
=== スワップの UUID ===
 
   
  +
==== ローカルパーティション ====
スワップパーティションが UUID を持っていない場合、手動で追加することが可能です。これは {{ic|lsblk -f}} コマンドでスワップの UUID が表示されないときに発生します。スワップに UUID を指定する手順は以下になります:
 
   
  +
巨大なパーティションが存在する場合、''fsck'' によってそのパーティションがチェックされている間に、そのパーティションに依存しないサービスを起動できるようにすると効率が良くなるかもしれません。パーティションの {{ic|/etc/fstab}} エントリに以下のオプションを追加することでそのように設定できます:
スワップパーティションを確認:
 
   
  +
x-systemd.automount
# swapon -s
 
   
  +
そのパーティションに最初にアクセスしたときに fsck とマウントを行うようになり、パーティションの準備ができるまでカーネルがそのパーティションへのファイルアクセスを全てバッファします。
スワップを無効化:
 
  +
この方法は、巨大な {{ic|/home}} パーティションがある場合などに適用できます。
  +
{{Note|この設定はファイルシステムのタイプを {{ic|autofs}} にします。これは [[mlocate]] によってデフォルトで無視されます。}}
   
  +
==== リモートファイルシステム ====
# swapoff /dev/sda7
 
   
  +
同じ設定はリモートファイルシステムのマウントにも適用できます。アクセスしたときにだけリモートファイルシステムをマウントしたい場合、{{ic|x-systemd.automount}} パラメータを使って下さい。さらに、{{ic|1=x-systemd.mount-timeout=}} オプションを使うことで、マウントコマンドが完了するまでの制限時間を指定できます。また、{{ic|_netdev}} オプションで systemd がネットワークに依存するマウントであることを認識してネットワークがオンラインになった後に順番を入れ替えます。
新しく UUID を指定してスワップを再作成:
 
   
  +
x-systemd.automount,x-systemd.mount-timeout=30,_netdev
# mkswap -U random /dev/sda7
 
   
  +
==== 暗号化ファイルシステム ====
スワップを有効化:
 
   
  +
キーファイルによって暗号化したファイルシステムがある場合も、{{ic|noauto}} パラメータを {{ic|/etc/crypttab}} の適当なエントリに追加することができます。設定することで ''systemd'' は起動時に暗号化デバイスを開かないようになり、実際にアクセスされたときになってから指定したキーファイルを使ってファイルシステムを開いてマウントします。デバイスが利用可能になるのを systemd が待機しないようになるので、暗号化 RAID デバイスなどを使っている場合、起動時間が数秒間短くなるかもしれません。例:
# swapon /dev/sda7
 
   
  +
{{hc|/etc/crypttab|
=== ファイルパスのスペース(空白) ===
 
  +
data /dev/md/MyRAIDArray /etc/cryptsetup-keys.d/data.key noauto
  +
}}
   
  +
==== 自動アンマウント ====
マウントポイントにスペース(空白)が含まれている場合、エスケープ文字 {{ic|\}} と3文字の8進数コード {{ic|040}} を使ってスペースの代わりにしてください:
 
   
  +
{{ic|x-systemd.idle-timeout}} フラグを使うことで一定時間アイドル状態のときにタイムアウトするのを指定できます。例:
{{hc|/etc/fstab|2=
 
  +
UUID=47FA-4071 /home/username/Camera<font color="grey">\040</font>Pictures vfat defaults,noatime 0 0
 
  +
x-systemd.automount,x-systemd.idle-timeout=1min
/dev/sda7 /media/100<font color="grey">\040</font>GB<font color="grey">\040</font>(Storage) ext4 defaults,noatime,user 0 2}}
 
  +
  +
上記の設定の場合、1分間操作がないと systemd によってアンマウントされます。
   
 
=== 外部デバイス ===
 
=== 外部デバイス ===
   
存在するときに外部デバイスマウントしは無視するには {{ic|nofail}} オプションが必要です。このオプションは起動時にエラーが報告されるのを防止します。
+
外部デバイスが存在する時はマウントし、存在しな場合は無視したい場合、{{ic|nofail}} オプションが必要です。これにより、起動時にエラーが発生するのを防ぐことができます。例えば:
   
{{hc|/etc/fstab|
+
{{hc|/etc/fstab|2=
/dev/sdg1 /media/backup jfs defaults,nofail 0 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 は無限に待つことになります。
=== atime オプション ===
 
   
  +
=== ファイルパスのスペース ===
{{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}} を使うのがベストだと思われます。
 
   
  +
{{ic|fstab}} ではスペースがフィールドの区切り文字として使用されているため、フィールド (''PARTLABEL''、''LABEL''、マウントポイント) にスペースが含まれている場合、これらのスペースをエスケープ文字 {{ic|\}} と3桁の8進数 {{ic|040}} に置き換えなければなりません:
{{Note|{{ic|noatime}} は {{ic|nodiratime}} を含んでいます。両方を指定する必要はありません。[http://lwn.net/Articles/244941/ ]}}
 
   
  +
{{hc|/etc/fstab|2=
=== tmpfs ===
 
  +
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 オプション ===
[[Wikipedia:Tmpfs|tmpfs]] は、メモリの使用量によって、メモリやスワップパーティション上に作られる一時ファイルシステムです。ディレクトリを tmpfs としてマウントすることでファイルのアクセス速度を上げることができ、再起動時には中身が自動で消失するようになります。
 
   
  +
以下は、ドライブのパフォーマンスに影響を与える可能性のあるアクセス時間オプションです。
一般的に tmpfs が使われるディレクトリは [http://www.pathname.com/fhs/2.2/fhs-3.15.html /tmp], [http://www.pathname.com/fhs/2.2/fhs-5.9.html /var/lock], [http://www.pathname.com/fhs/2.2/fhs-5.13.html /var/run] です。tmpfs を [http://www.pathname.com/fhs/2.2/fhs-5.15.html /var/tmp] で使ってはいけません。このフォルダは再起動後も保存される一時ファイルのためにあります。Arch では tmpfs の {{ic|/run}} ディレクトリを使っています。また、互換性のためにシンボリックリンクとして {{ic|/var/run}} と {{ic|/var/lock}} が存在します。デフォルトの {{ic|/etc/fstab}} の {{ic|/tmp}} でも tmpfs は使われています。
 
   
  +
* {{ic|strictatime}} オプションは、ファイルがアクセスされるたびにファイルのアクセス時間を更新します。これは、Linux がサーバーで使用される場合に特に有効です。デスクトップでの使用にはあまり価値がありません。{{ic|strictatime}} オプションの欠点は、ページキャッシュからファイルを読み取る(ドライブではなくメモリから読み取る)場合でも、書き込みが発生することです。
{{Note|[[systemd (日本語)|systemd]] を使っている場合、tmpfs ディレクトリ内の一時ファイルは [[Systemd (日本語)#一時ファイル|tmpfiles.d]] を使って起動時に再作成することができます。}}
 
  +
* {{ic|noatime}} オプションは、ファイルを読み取るたびにファイルアクセス時間をドライブに書き込むことを完全に無効にします。これは、最後に変更されてからファイルが読み取られたかどうかを知る必要があるアプリケーションを除き、ほぼすべてのアプリケーションでうまく機能します。このオプションが有効になっている場合、ファイルへの書き込み時間情報は、ファイルが書き込まれるたびに引き続き更新されます。
  +
* {{ic|nodiratime}} オプションは、ディレクトリに対してのみファイルアクセス時間の書き込みを無効にし、他のファイルは引き続きアクセス時間が書き込まれます。{{Note|{{ic|noatime}} は {{ic|nodiratime}} を含みます。[https://lwn.net/Articles/244941/ 両方を指定する必要はありません。]}}
  +
*{{ic|relatime}} は、以前のアクセス時間が現在の変更または変更時間よりも前の場合にのみアクセス時間を更新します。さらに、Linux 2.6.30以降、以前のアクセス時間が24時間以上前の場合、アクセス時間は常に更新されます。このオプションは、{{ic|defaults}} オプション、{{ic|atime}} オプション(カーネルのデフォルトである {{ic|relatime}} を使用することを意味します。{{man|8|mount}} および [[wikipedia:Stat (system call)#Criticism of atime]] を参照)またはオプションがまったく指定されていない場合に使用されます。
   
  +
[[Mutt]] や、最後に変更されてからファイルが読み取られたかどうかを知る必要がある他のアプリケーションを使用する場合、{{ic|noatime}} オプションは使用しないでください。{{ic|relatime}} オプションを使用することは許容され、パフォーマンスの向上も提供します。
デフォルトでは、tmpfs パーティションの最大容量は総 RAM の半分に設定されますが、カスタマイズすることが可能です。実際のメモリ・スワップの消費はあなたがどれだけ使うかによることに注意してください、tmpfs パーティションは実際に必要になるまではメモリを消費しません。
 
   
  +
カーネル4.0以降、別の関連オプションがあります:
tmpfs を {{ic|/tmp}} で使うには、次の行を {{ic|/etc/fstab}} に追加してください:
 
   
  +
* {{ic|lazytime}} は、inode タイムスタンプ(アクセス、変更、作成時間)の変更をメモリ内でのみ保持することにより、ディスクへの書き込みを減らします。オンディスクタイムスタンプは、(1)ファイルタイムスタンプに関係のない変更のためにファイルinodeを更新する必要がある場合、(2)ディスクへの同期が発生した場合、(3)削除されていない inode がメモリから削除された場合、または(4)メモリ内コピーが最後にディスクに書き込まれてから24時間以上経過した場合にのみ更新されます。
{{hc|/etc/fstab|
 
  +
: {{Warning|システムがクラッシュした場合、ディスク上のアクセス時間や最終変更日時は最大で24時間ずれる可能性があります。}}
tmpfs /tmp tmpfs nodev,nosuid 0 0}}
 
   
  +
{{ic|lazytime}} オプションは、前述の {{ic|*atime}} オプションと "組み合わせて" 機能し、代替として機能しないことに注意してください。つまり、デフォルトでは {{ic|relatime}} ですが、プレーンな {{ic|relatime}} オプションと同じかそれ以下のディスク書き込みコストで {{ic|strictatime}} にすることもできます。
You may or may not want to specify the size here, but you should leave the {{ic|mode}} option alone in these cases to ensure that they have the correct permissions (1777). In the example above, {{ic|/tmp}} will be set to use up to half of your total RAM. To explicitly set a maximum size, use the {{ic|size}} mount option:
 
   
  +
=== ルートパーティションの再マウント ===
{{hc|/etc/fstab|2=
 
tmpfs /tmp tmpfs nodev,nosuid,size=2G 0 0}}
 
   
  +
何らかの理由で誤って ルートパーティションを読み込み専用でマウントしてしまった場合は、次のコマンドで ルートパーティションを再マウントしてください:
Here is a more advanced example showing how to add tmpfs mounts for users. This is useful for websites, mysql tmp files, {{ic|~/.vim/}}, and more. It's important to try and get the ideal mount options for what you are trying to accomplish. The goal is to have as secure settings as possible to prevent abuse. Limiting the size, and specifying uid and gid + mode is very secure. For more information on this subject, follow the links listed in the [[#See also]] section.
 
   
  +
# mount -o remount,rw /
{{hc|/etc/fstab|2=
 
tmpfs /www/cache tmpfs rw,size=1G,nr_inodes=5k,noexec,nodev,nosuid,uid=648,gid=648,mode=1700 0 0}}
 
   
  +
=== GPT パーティションの自動マウント ===
See the {{ic|mount}} command man page for more information. One useful mount option in the man page is the {{ic|default}} option. At least understand that.
 
   
  +
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 パーティションの自動マウント]] を見てください。
Reboot for the changes to take effect. Note that although it may be tempting to simply run {{ic|mount -a}} to make the changes effective immediately, this will make any files currently residing in these directories inaccessible (this is especially problematic for running programs with lockfiles, for example). However, if all of them are empty, it should be safe to run {{ic|mount -a}} instead of rebooting (or mount them individually).
 
   
  +
ルートボリュームのカスタムマウントオプションを指定するには、{{ic|/dev/gpt-auto-root}} をデバイス名として使用します:
After applying changes, you may want to verify that they took effect by looking at {{ic|/proc/mounts}} and using {{ic|findmnt}}:
 
   
  +
{{hc|/etc/fstab|2=
{{hc|$ findmnt --target /tmp|
 
  +
/dev/gpt-auto-root / ext4 defaults,noatime 0 1
TARGET SOURCE FSTYPE OPTIONS
 
  +
}}
/tmp tmpfs tmpfs rw,nosuid,nodev,relatime}}
 
   
==== 使用方法 ====
+
=== バインドマウント ===
   
  +
{{ic|bind}} オプションにより、ディレクトリをリンクさせることができます:
一般的に、読み書き操作を頻繁に行なって I/O に負担をかける処理やプログラムで tmpfs フォルダを使う意味があります。アプリケーションによってはデータの一部(もしくは全て)を共有メモリにオフロードすることで大きな効果を得られるかもしれません。例えば、[[Firefox_Ramdisk|Firefox のプロファイルを RAM に配置すること]] はパフォーマンスを著しく向上させます。
 
   
  +
{{hc|/etc/fstab|2=
===== コンパイル時間の短縮 =====
 
  +
# <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}} を見てください。
{{Note|The tmpfs folder ({{ic|/tmp}}, in this case) needs to be mounted without {{ic|noexec}}, else it will prevent build scripts or utilities from being executed. Also, as stated [[#tmpfs|above]], the default size is half of the available RAM. You may run out of space.}}
 
   
  +
=== genfstab を使用して fstab を自動的に生成する ===
tmpfs フォルダをビルドディレクトリとして使って [[makepkg (日本語)|makepkg]] を実行できます ({{ic|/etc/makepkg.conf}} でも設定可能です):
 
   
  +
''genfstab'' ツールを使用して fstab ファイルを作成できます。詳細については、[[genfstab]] を参照してください。
$ BUILDDIR=/tmp/makepkg makepkg
 
   
=== FAT32 に標準ユーザーとして書き込み ===
+
=== GUI ユーティリティ ===
   
  +
以下は、マウントポイントを変更する際に用いることのできるプログラムのリストです。Fstab で利用できる機能のうち一部は実装されていないかもしれませんが、最も利用される機能はすべて実装されており、作業がうんと楽になるかもしれません:
FAT32 パーティションに書き込みを行うには、{{ic|/etc/fstab}} ファイルに修正を加える必要があります。
 
   
  +
* {{App|[[wikipedia:GNOME Disks|GNOME Disks]]|ストレージデバイスを管理するための GNOME ユーティリティ。|https://apps.gnome.org/DiskUtility/|{{Pkg|gnome-disk-utility}}}}
{{hc|/etc/fstab|2=
 
  +
* {{App|KDE Partition Manager|コンピュータ上のディスク、パーティション、ファイルシステムの管理を補助するユーティリティ。|https://apps.kde.org/partitionmanager/|{{Pkg|partitionmanager}}}}
/dev/sdxY /mnt/some_folder vfat user,rw,umask=000 0 0}}
 
   
  +
=== ユーザーのパーミッションと所有者を変更する ===
{{ic|user}} フラグは全てのユーザーが (つまり root でなくても) {{ic|/dev/sdX}} パーティションをマウント・アンマウントできることを意味しています。{{ic|rw}} は読み書きの許可を与えます; {{ic|umask}} オプションは選択した権利を削除します - 例えば {{ic|1=umask=111}} は実行権限を削除します。問題は、このエントリはディレクトリからも実行権限を削除してしまうことであり、それを {{ic|1=dmask=000}} で修正しなくてはなりません。[[Umask]] を参照。
 
   
  +
あるドライブのマウントをすべてのユーザーに許可したい場合、以下のマウントポイントオプションを fstab エントリに追加することを検討してください。
これらのオプションがないと、全てのファイルは実行可能になります。umask や dmask オプションの代わりに {{ic|showexec}} オプションを使うことができ、全ての Windows の実行可能ファイル (com, exe, bat) を実行可能な色で表示します。
 
   
  +
{{Note|これは、ファイルのパーミッション機能が無いファイルシステムに対しても用いられます。この場合、ドライブ全体の所有者とパーミッションは、そのドライブをマウントしたユーザーに設定されます。}}
例えば、FAT32 パーティションが {{ic|/dev/sda9}} にあって、{{ic|/mnt/fat32}} にマウントしたい場合、次のようにします:
 
   
  +
* {{ic|users}} - 全てのユーザーは、(たとえ他の通常ユーザーがそのドライブをマウントしていたとしても) 対象のファイルシステムをマウント/アンマウントできるようになります。このオプションは、noexec、nosuid、nodev オプションも暗黙的に設定します (ただし、後続のオプションによって上書きされない限り。例えば、users,exec,dev,suid)。これを有効化するには {{ic|users}} をマウントオプションに追加してください。
{{hc|/etc/fstab|2=
 
  +
* {{ic|user}} - 任意の通常ユーザーに対象のファイルシステムのマウントを許可します。ただし、同じユーザーしかそのファイルシステムをアンマウントできません。このオプションは、noexec、nosuid、nodev オプションも暗黙的に設定します (ただし、後続のオプションによって上書きされない限り。例えば、users,exec,dev,suid)。これを有効化するには {{ic|user}} をマウントオプションに追加してください。
/dev/sda9 /mnt/fat32 vfat user,rw,umask=111,dmask=000 0 0}}
 
   
  +
FAT や exFAT のようにファイルのパーミッションが実装されていないファイルシステムの場合は、ドライブ全体及び保存されているファイルに対してユーザーとグループを明示的に設定することができます。特定のユーザーの ID は {{ic|/etc/passwd}} で調べられます。UID は passwd エントリの3番目、GID は4番目です。
=== root パーティションの再マウント ===
 
   
  +
* {{ic|uid}} - ドライブの所有者 ID を設定します
何らかの理由で誤って root パーティションを読み込み専用でマウントしてしまった場合は、次のコマンドで root パーティションを再マウントしてください:
 
  +
* {{ic|gid}} - ドライブのグループ ID を設定します
   
  +
Ext4 や brtfs などパーミッション機能を持つファイルシステムの場合は、(ドライブをマウントしたユーザー以外の) 他のユーザーはドライブにアクセスできないかもしれません。{{ic|/path/to/drive/}} のパーみションを確認し、必要に応じてパーミッションを変更してください。
# mount -o remount,rw /
 
   
 
== 参照 ==
 
== 参照 ==
   
  +
* [https://docs.kernel.org/admin-guide/devices.html ブロックデバイスを含むデバイスリスト]
*[http://www.kernel.org/pub/linux/docs/lanana/device-list/devices-2.6.txt Full device listing including block device]
 
*[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]
*[http://www.askapache.com/web-hosting/super-speed-secrets.html 30x Faster Web-Site Speed] (Detailed tmpfs)
+
* [https://www.askapache.com/optimize/super-speed-secrets/ TMPFS を使ってキャッシュとサイト速度を30倍に高速化]
  +
  +
{{TranslationStatus|Fstab|2024-05-29|809165}}

2025年3月6日 (木) 06:32時点における最新版

関連記事

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=CBB6-24F2                            /boot vfat defaults,nodev,nosuid,noexec,fmask=0177,dmask=0077 0      2
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/sda2 /     ext4   defaults                                           0      1
/dev/sda1 /boot vfat   defaults,nodev,nosuid,noexec,fmask=0177,dmask=0077 0      2
/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=System /     ext4   defaults                                           0      1
LABEL=ESP    /boot vfat   defaults,nodev,nosuid,noexec,fmask=0177,dmask=0077 0      2
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=0a3407de-014b-458b-b5c1-848e92a327a3 /     ext4 defaults                                           0      1
UUID=CBB6-24F2                            /boot vfat defaults,nodev,nosuid,noexec,fmask=0177,dmask=0077 0      2
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=GNU/Linux                  /     ext4 defaults                                           0      1
PARTLABEL=EFI\040system\040partition /boot vfat defaults,nodev,nosuid,noexec,fmask=0177,dmask=0077 0      2
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=98a81274-10f7-40db-872a-03df048df366 /     ext4 defaults                                           0      1
PARTUUID=d0d0d110-0a71-4ed6-936a-304969ea36af /boot vfat defaults,nodev,nosuid,noexec,fmask=0177,dmask=0077 0      2
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 オプション

以下は、ドライブのパフォーマンスに影響を与える可能性のあるアクセス時間オプションです。

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

Mutt や、最後に変更されてからファイルが読み取られたかどうかを知る必要がある他のアプリケーションを使用する場合、noatime オプションは使用しないでください。relatime オプションを使用することは許容され、パフォーマンスの向上も提供します。

カーネル4.0以降、別の関連オプションがあります:

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

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

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

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

# mount -o remount,rw /

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

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

ルートボリュームのカスタムマウントオプションを指定するには、/dev/gpt-auto-root をデバイス名として使用します:

/etc/fstab
/dev/gpt-auto-root  /  ext4  defaults,noatime  0  1

バインドマウント

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://apps.gnome.org/DiskUtility/ || 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-05-29 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。