「Fstab」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
 
(TranslationStatus の日付を修正)
 
(6人の利用者による、間の35版が非表示)
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|genfstab}}
 
{{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>
+
# <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
  +
}}
   
  +
* {{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|
{{ic|/etc/fstab}} でパーティションやストレージデバイスを識別する方法は3つあります: カーネルの名前記述子、ラベル、UUID です。UUID やラベルにはドライブがマシンに(物理的に)接続されている順番と切り離せるという利点があります。これは、BIOS でストレージデバイスの順番を変更したり、ストレージデバイスの配線を変えるときに有用です。また、ときどき BIOS はストレージデバイスの順番を変更してしまうことがあります。詳しくは [[Persistent block device naming]] の記事を読んで下さい。
 
  +
# <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
  +
}}
   
  +
{{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}} を付けて下さい。
 
  +
# <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
  +
}}
   
[[#ファイル例|サンプル]]を見てさい。
+
{{Note|任意のフィールドにスペースが含まれる場合、[[#ファイルパスのスペース]] を見てください。}}
   
=== ラベル ===
+
=== ファイシステム UUID ===
   
  +
{{ic|lsblk -f}} を実行してパーティションの一覧を出力し、[[UUID]] 列の値の前に {{ic|1=UUID=}} を付け加えてください。あるいは、{{ic|blkid}} を実行し、UUID の値を引用符無しで使ってください:
{{Note|衝突がおこるのを避けるために、ラベルをかぶらせてはいけません。}}
 
   
  +
{{hc|/etc/fstab|2=
デバイスやパーティションにラベルをつける方法は [[Persistent block device naming#by-label]] を見て下さい。root パーティションのリネームは "ライブ" Linux ディストリビューション (Parted Magic, Ubuntu, etc) から行なって下さい。root パーティションは初めにアンマウントする必要があるからです。
 
  +
# <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
  +
}}
   
{{ic|lsblk -f}} を実行してパーティションを一覧し、前に {{ic|1=LABEL=}} を付けて下さい:
+
=== GPT パーティションラベル ===
  +
  +
{{ic|blkid}} を実行してパーティションの一覧を出力し、[[PARTLABEL]] の値を引用符無しで使ってください:
   
 
{{hc|/etc/fstab|2=
 
{{hc|/etc/fstab|2=
# <file system> <dir> <type> <options> <dump> <pass>
+
# <device> <dir> <type> <options> <dump> <fsck>
  +
PARTLABEL=EFI\040system\040partition /boot vfat defaults 0 2
 
LABEL=Arch_Linux / ext4 defaults,noatime 0 1
+
PARTLABEL=GNU/Linux / ext4 defaults 0 1
LABEL=Arch_Swap none swap defaults 0 0}}
+
PARTLABEL=Home /home ext4 defaults 0 2
  +
PARTLABEL=Swap none swap defaults 0 0
  +
}}
   
  +
{{Note|任意のフィールドにスペースが含まれる場合、[[#ファイルパスのスペース]] を見てください。}}
=== UUID ===
 
   
  +
=== GPT パーティション UUID ===
全てのパーティションとデバイスは固有の UUID を持っています。UUID はパーティションを作成したりフォーマットするときにファイルシステムユーティリティ (例: {{ic|mkfs.*}}) によって生成されます。詳しくは [[Persistent block device naming#by-uuid]] を見て下さい。
 
   
{{ic|lsblk -f}} を実行してパーティション一覧し、前に {{ic|1=UUID=}}付けさい:
+
{{ic|blkid}} を実行してパーティション一覧を出力し、[[PARTUUID]] の値引用符無しで使っください:
   
  +
{{hc|/etc/fstab|2=
{{Tip|特定のパーティションの UUID だけを表示したい場合:
 
  +
# <device> <dir> <type> <options> <dump> <fsck>
$ lsblk -no UUID /dev/sda2
 
  +
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
 
}}
 
}}
   
  +
== ヒントとテクニック ==
{{hc|/etc/fstab|2=
 
# <file system> <dir> <type> <options> <dump> <pass>
 
   
  +
=== systemd による自動マウント ===
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 のすべてのマウントオプションは {{man|5|systemd.mount}} を見てください。
== Tips and tricks ==
 
   
  +
==== ローカルパーティション ====
=== スワップの UUID ===
 
   
  +
巨大なパーティションが存在する場合、''fsck'' によってそのパーティションがチェックされている間に、そのパーティションに依存しないサービスを起動できるようにすると効率が良くなるかもしれません。パーティションの {{ic|/etc/fstab}} エントリに以下のオプションを追加することでそのように設定できます:
スワップパーティションが UUID を持っていない場合、手動で追加することが可能です。これは {{ic|lsblk -f}} コマンドでスワップの UUID が表示されないときに発生します。スワップに UUID を指定する手順は以下になります:
 
   
  +
x-systemd.automount
スワップパーティションを確認:
 
   
  +
そのパーティションに最初にアクセスしたときに fsck とマウントを行うようになり、パーティションの準備が出来るまでカーネルがそのパーティションへのファイルアクセスを全てバッファします。
# swapon -s
 
  +
この方法は、巨大な {{ic|/home}} パーティションがある場合などに適用できます。
  +
{{Note|この設定はファイルシステムのタイプを {{ic|autofs}} にします。これは [[mlocate]] によってデフォルトで無視されます。}}
   
  +
==== リモートファイルシステム ====
スワップを無効化:
 
   
  +
同じ設定はリモートファイルシステムのマウントにも適用できます。アクセスしたときにだけリモートファイルシステムをマウントしたい場合、{{ic|x-systemd.automount}} パラメータを使って下さい。さらに、{{ic|1=x-systemd.mount-timeout=}} オプションを使うことで、マウントコマンドが完了するまでの制限時間を指定できます。また、{{ic|_netdev}} オプションで systemd がネットワークに依存するマウントであることを認識してネットワークがオンラインになった後に順番を入れ替えます。
# swapoff /dev/sda7
 
   
  +
x-systemd.automount,x-systemd.mount-timeout=30,_netdev
新しく UUID を指定してスワップを再作成:
 
   
  +
==== 暗号化ファイルシステム ====
# mkswap -U random /dev/sda7
 
   
  +
キーファイルによって暗号化したファイルシステムがある場合も、{{ic|noauto}} パラメータを {{ic|/etc/crypttab}} の適当なエントリに追加することができます。設定することで ''systemd'' は起動時に暗号化デバイスを開かないようになり、実際にアクセスされたときになってから指定したキーファイルを使ってファイルシステムを開いてマウントします。デバイスが利用可能になるのを systemd が待機しないようになるので、暗号化 RAID デバイスなどを使っている場合、起動時間が数秒間短くなるかもしれません。例:
スワップを有効化:
 
   
  +
{{hc|/etc/crypttab|
# swapon /dev/sda7
 
  +
data /dev/md/MyRAIDArray /etc/cryptsetup-keys.d/data.key noauto
  +
}}
   
  +
==== 自動アンマウント ====
=== ファイルパスのスペース(空白) ===
 
   
  +
{{ic|x-systemd.idle-timeout}} フラグを使うことで一定時間アイドル状態のときにタイムアウトするのを指定できます。例:
マウントポイントにスペース(空白)が含まれている場合、エスケープ文字 {{ic|\}} と3文字の8進数コード {{ic|040}} を使ってスペースの代わりにしてください:
 
   
  +
x-systemd.automount,x-systemd.idle-timeout=1min
{{hc|/etc/fstab|2=
 
  +
UUID=47FA-4071 /home/username/Camera<font color="grey">\040</font>Pictures vfat defaults,noatime 0 0
 
  +
上記の設定の場合、1分間操作がないと systemd によってアンマウントされます。
/dev/sda7 /media/100<font color="grey">\040</font>GB<font color="grey">\040</font>(Storage) ext4 defaults,noatime,user 0 2}}
 
   
 
=== 外部デバイス ===
 
=== 外部デバイス ===
   
存在するときに外部デバイスマウントしは無視するには {{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 としてマウントすることでファイルのアクセス速度を上げることができ、再起動時には中身が自動で消失するようになります。
 
   
  +
以下の atime オプションはドライブのパフォーマンスに影響を与える可能性があります。
一般的に 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|relatime}} を使うことを意味します。{{man|8|mount}} と [[wikipedia:Stat (system call)#Criticism of atime]] を参照) や {{ic|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|strictatime}} とも一緒に使うことができ、ディスクの書き込みコストは {{ic|relatime}} と同じかそれ以下です。
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:
 
   
  +
=== root パーティションの再マウント ===
{{hc|/etc/fstab|2=
 
tmpfs /tmp tmpfs nodev,nosuid,size=2G 0 0}}
 
   
  +
何らかの理由で誤って root パーティションを読み込み専用でマウントしてしまった場合は、次のコマンドで root パーティションを再マウントしてください:
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).
 
   
  +
=== バインドマウント ===
After applying changes, you may want to verify that they took effect by looking at {{ic|/proc/mounts}} and using {{ic|findmnt}}:
 
   
  +
{{ic|bind}} オプションにより、ディレクトリをリンクさせることができます:
{{hc|$ findmnt --target /tmp|
 
TARGET SOURCE FSTYPE OPTIONS
 
/tmp tmpfs tmpfs rw,nosuid,nodev,relatime}}
 
   
  +
{{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}} を見てください。
一般的に、読み書き操作を頻繁に行なって I/O に負担をかける処理やプログラムで tmpfs フォルダを使う意味があります。アプリケーションによってはデータの一部(もしくは全て)を共有メモリにオフロードすることで大きな効果を得られるかもしれません。例えば、[[Firefox_Ramdisk|Firefox のプロファイルを RAM に配置すること]] はパフォーマンスを著しく向上させます。
 
   
  +
=== genfstab を使用して fstab を自動的に生成する ===
===== コンパイル時間の短縮 =====
 
   
  +
''genfstab'' ツールを使用して fstab ファイルを作成できます。詳細については、[[genfstab]] を参照してください。
{{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.}}
 
   
  +
=== GUI ユーティリティ ===
tmpfs フォルダをビルドディレクトリとして使って [[makepkg (日本語)|makepkg]] を実行できます ({{ic|/etc/makepkg.conf}} でも設定可能です):
 
   
  +
以下は、マウントポイントを変更する際に用いることのできるプログラムのリストです。Fstab で利用できる機能のうち一部は実装されていないかもしれませんが、最も利用される機能はすべて実装されており、作業がうんと楽になるかもしれません:
$ BUILDDIR=/tmp/makepkg makepkg
 
   
  +
* {{App|[[wikipedia:GNOME Disks|GNOME Disks]]|ストレージデバイスを管理するための GNOME ユーティリティ。|https://wiki.gnome.org/Apps/Disks|{{Pkg|gnome-disk-utility}}}}
=== FAT32 に標準ユーザーとして書き込み ===
 
  +
* {{App|KDE Partition Manager|コンピュータ上のディスク、パーティション、ファイルシステムの管理を補助するユーティリティ。|https://apps.kde.org/partitionmanager/|{{Pkg|partitionmanager}}}}
   
  +
=== ユーザーのパーミッションと所有者を変更する ===
FAT32 パーティションに書き込みを行うには、{{ic|/etc/fstab}} ファイルに修正を加える必要があります。
 
   
  +
あるドライブのマウントをすべてのユーザーに許可したい場合、以下のマウントポイントオプションを fstab エントリに追加することを検討してください。
{{hc|/etc/fstab|2=
 
/dev/sdxY /mnt/some_folder vfat user,rw,umask=000 0 0}}
 
   
  +
{{Note|これは、ファイルのパーミッション機能が無いファイルシステムに対しても用いられます。この場合、ドライブ全体の所有者とパーミッションは、そのドライブをマウントしたユーザーに設定されます。}}
{{ic|user}} フラグは全てのユーザーが (つまり root でなくても) {{ic|/dev/sdX}} パーティションをマウント・アンマウントできることを意味しています。{{ic|rw}} は読み書きの許可を与えます; {{ic|umask}} オプションは選択した権利を削除します - 例えば {{ic|1=umask=111}} は実行権限を削除します。問題は、このエントリはディレクトリからも実行権限を削除してしまうことであり、それを {{ic|1=dmask=000}} で修正しなくてはなりません。[[Umask]] を参照。
 
   
  +
* {{ic|users}} - 全てのユーザーは、(たとえ他の通常ユーザーがそのドライブをマウントしていたとしても) 対象のファイルシステムをマウント/アンマウントできるようになります。このオプションは、noexec、nosuid、nodev オプションも暗黙的に設定します (ただし、後続のオプションによって上書きされない限り。例えば、users,exec,dev,suid)。これを有効化するには {{ic|users}} をマウントオプションに追加してください。
これらのオプションがないと、全てのファイルは実行可能になります。umask や dmask オプションの代わりに {{ic|showexec}} オプションを使うことができ、全ての Windows の実行可能ファイル (com, exe, bat) を実行可能な色で表示します。
 
  +
* {{ic|user}} - 任意の通常ユーザーに対象のファイルシステムのマウントを許可します。ただし、同じユーザーしかそのファイルシステムをアンマウントできません。このオプションは、noexec、nosuid、nodev オプションも暗黙的に設定します (ただし、後続のオプションによって上書きされない限り。例えば、users,exec,dev,suid)。これを有効化するには {{ic|user}} をマウントオプションに追加してください。
   
  +
FAT や exFAT のようにファイルのパーミッションが実装されていないファイルシステムの場合は、ドライブ全体及び保存されているファイルに対してユーザーとグループを明示的に設定することができます。特定のユーザーの ID は {{ic|/etc/passwd}} で調べられます。UID は passwd エントリの3番目、GID は4番目です。
例えば、FAT32 パーティションが {{ic|/dev/sda9}} にあって、{{ic|/mnt/fat32}} にマウントしたい場合、次のようにします:
 
   
  +
* {{ic|uid}} - ドライブの所有者 ID を設定します
{{hc|/etc/fstab|2=
 
  +
* {{ic|gid}} - ドライブのグループ ID を設定します
/dev/sda9 /mnt/fat32 vfat user,rw,umask=111,dmask=000 0 0}}
 
   
  +
Ext4 や brtfs などパーミッション機能を持つファイルシステムの場合は、(ドライブをマウントしたユーザー以外の) 他のユーザーはドライブにアクセスできないかもしれません。{{ic|/path/to/drive/}} のパーみションを確認し、必要に応じてパーミッションを変更してください。
=== root パーティションの再マウント ===
 
   
  +
== 参照 ==
何らかの理由で誤って root パーティションを読み込み専用でマウントしてしまった場合は、次のコマンドで root パーティションを再マウントしてください:
 
   
  +
* [https://docs.kernel.org/admin-guide/devices.html ブロックデバイスを含むデバイスリスト]
# mount -o remount,rw /
 
  +
* [https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html Filesystem Hierarchy Standard]
 
  +
* [https://www.askapache.com/optimize/super-speed-secrets/ TMPFS を使ってキャッシュとサイト速度を30倍に高速化]
== 参照 ==
 
   
  +
{{TranslationStatus|Fstab|2024-02-22|800943}}
*[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]
 
*[http://www.askapache.com/web-hosting/super-speed-secrets.html 30x Faster Web-Site Speed] (Detailed tmpfs)
 

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