「Fstab」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
 
(文字列「http://www.kernel.org/」を「https://www.kernel.org/」に置換)
(2人の利用者による、間の10版が非表示)
4行目: 4行目:
 
[[en:Fstab]]
 
[[en:Fstab]]
 
[[es:Fstab]]
 
[[es:Fstab]]
  +
[[hu:Fstab]]
 
[[it:Fstab]]
 
[[it:Fstab]]
 
[[ro:Fstab]]
 
[[ro:Fstab]]
 
[[ru:Fstab]]
 
[[ru:Fstab]]
[[zh-CN:Fstab]]
+
[[zh-hans:Fstab]]
[[zh-TW:Fstab]]
+
[[zh-hant:Fstab]]
{{Related articles start (日本語)}}
+
{{Related articles start}}
{{Related3|Persistent block device naming|永続的なブロックデバイスの命名}}
+
{{Related|永続的なブロックデバイスの命名}}
  +
{{Related|ファイルシステム}}
{{Related2|NTFS-3G|NTFS の書き込みサポート}}
 
  +
{{Related|マウント}}
{{Related4|Firefox Ramdisk}}
 
  +
{{Related|tmpfs}}
{{Related3|Boot debugging|ブートデバッグ}}
 
{{Related|udev}}
+
{{Related|スワップ}}
 
{{Related articles end}}
 
{{Related articles end}}
   
 
[[Wikipedia:Fstab|/etc/fstab]] ファイルはディスクパーティションや様々なブロックデバイス、リモートファイルをどうやってファイルシステムにマウントするかを記述します。
 
[[Wikipedia:Fstab|/etc/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 に記述されたマウントオプションも使われます。
43行目: 44行目:
 
* '''<dir>''' - <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) に役立ちます。
 
* '''<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 マウントオプション]にはファイルシステム固有のものもあることに気をつけて下さい。最も一般的なオプションは:
+
* '''<options>''' - 使用されるファイルシステムのマウントオプション。[https://linux.die.net/man/8/mount マウントオプション]にはファイルシステム固有のものもあることに気をつけて下さい。最も一般的なオプションは:
   
 
:* {{ic|auto}} - 起動時、または {{ic|mount -a}} コマンドが実行されたときに自動でマウントします。
 
:* {{ic|auto}} - 起動時、または {{ic|mount -a}} コマンドが実行されたときに自動でマウントします。
64行目: 65行目:
 
:* {{ic|nodiratime}} - ファイルシステムのディレクトリの inode アクセス日時を更新しません。パフォーマンスの向上に役立ちます ([[#atime オプション]] を見て下さい)。
 
:* {{ic|nodiratime}} - ファイルシステムのディレクトリの inode アクセス日時を更新しません。パフォーマンスの向上に役立ちます ([[#atime オプション]] を見て下さい)。
 
:* {{ic|relatime}} - 変更日時にあわせて inode アクセス日時を更新します。以前のアクセス日時が現在の変更日時よりも前のときだけアクセス日時が更新されます (noatime に似ていますが、変更されたあとファイルが読み込まれたか知る必要がある mutt などのアプリケーションを破壊しません)。パフォーマンスの向上に役立ちます ([[#atime オプション]]を見て下さい)。
 
:* {{ic|relatime}} - 変更日時にあわせて inode アクセス日時を更新します。以前のアクセス日時が現在の変更日時よりも前のときだけアクセス日時が更新されます (noatime に似ていますが、変更されたあとファイルが読み込まれたか知る必要がある mutt などのアプリケーションを破壊しません)。パフォーマンスの向上に役立ちます ([[#atime オプション]]を見て下さい)。
:* {{ic|discard}} - ブロックがフリーになったときにブロックデバイスに [[SSD (日本語)#TRIM|TRIM]] コマンドを実行します。ファイルシステムが [[SSD (日本語)|SSD]] 上にあるときは使うことが推奨されています。
+
:* {{ic|discard}} - ブロックがフリーになったときにブロックデバイスに [[SSD#TRIM|TRIM]] コマンドを実行します。ファイルシステムが [[SSD]] 上にあるときは使うことが推奨されています。
 
:* {{ic|flush}} - データを頻繁にフラッシュする {{ic|vfat}} のオプション。全てのデータが書き込まれるまではコピーダイアログやプログレスバーは止まったままになります。
 
:* {{ic|flush}} - データを頻繁にフラッシュする {{ic|vfat}} のオプション。全てのデータが書き込まれるまではコピーダイアログやプログレスバーは止まったままになります。
:* {{ic|nofail}} - 存在するときはデバイスをマウントし、存在しないときは無視します。起動時にリムーバルメディアのエラーが報告されるのを防止します。
+
:* {{ic|nofail}} - 存在するときはデバイスをマウントし、存在しないときは無視します。起動時にリムーバルメディアのエラーが報告されるのを防止します。
 
:* {{ic|defaults}} - 使われるファイルシステムのデフォルトのマウントオプション。{{ic|ext4}} のデフォルトのオプションは: {{ic|rw}}, {{ic|suid}}, {{ic|dev}}, {{ic|exec}}, {{ic|auto}}, {{ic|nouser}}, {{ic|async}}。
 
:* {{ic|defaults}} - 使われるファイルシステムのデフォルトのマウントオプション。{{ic|ext4}} のデフォルトのオプションは: {{ic|rw}}, {{ic|suid}}, {{ic|dev}}, {{ic|exec}}, {{ic|auto}}, {{ic|nouser}}, {{ic|async}}。
   
 
* '''<dump>''' - バックアップを作る時を決定するために dump ユーティリティによって使われます。Dump はエントリをチェックしその値を使ってファイルシステムがバックアップされるべきかどうか決定します。指定できるエントリは0か1です。0の場合、dumpはファイルシステムを無視します; 1の場合、dump はバックアップを作成します。ほとんどのユーザーは dump をインストールしないので、<dump> エントリには0を入れて下さい。
 
* '''<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 ユーティリティによってチェックされません。
+
* '''<pass>''' - ファイルシステムをチェックする順番を決めるために [[fsck]] によって使われます。指定できるエントリは0か1、もしくは2です。root ファイルシステムには一番優先度の高い1を設定してください ([[btrfs]] の場合は、このフィールドは0にするべきです) - その他のファイルシステムには2を入れて下さい。0のファイルシステムは fsck ユーティリティによってチェックされません。
   
 
== ファイルシステムの識別 ==
 
== ファイルシステムの識別 ==
   
{{ic|/etc/fstab}} でパーティションやストレージデバイスを識別する方法は3つあります: カーネルの名前記述子、ラベル、UUID です。UUID やラベルにはドライブがマシンに(物理的に)接続されている順番と切り離せるという利点があります。これは、BIOS でストレージデバイスの順番を変更したり、ストレージデバイスの配線を変えるときに有用です。また、ときどき BIOS はストレージデバイスの順番を変更してしまうことがあります。詳しくは [[Persistent block device naming]] の記事を読んで下さい。
+
{{ic|/etc/fstab}} でパーティションやストレージデバイスを識別する方法は3つあります: カーネルの名前記述子、ラベル、UUID です。UUID やラベルにはドライブがマシンに(物理的に)接続されている順番と切り離せるという利点があります。これは、BIOS でストレージデバイスの順番を変更したり、ストレージデバイスの配線を変えるときに有用です。また、ときどき BIOS はストレージデバイスの順番を変更してしまうことがあります。詳しくは[[永続的なブロックデバイスの命名]]の記事を読んで下さい。
   
 
パーティションについて基本的な情報を一覧するには、次を実行:
 
パーティションについて基本的な情報を一覧するには、次を実行:
101行目: 102行目:
 
{{Note|衝突がおこるのを避けるために、ラベルをかぶらせてはいけません。}}
 
{{Note|衝突がおこるのを避けるために、ラベルをかぶらせてはいけません。}}
   
デバイスやパーティションにラベルをつける方法は [[Persistent block device naming#by-label]] を見て下さい。root パーティションのリネームは "ライブ" Linux ディストリビューション (Parted Magic, Ubuntu, etc) から行なって下さい。root パーティションは初めにアンマウントする必要があるからです。
+
デバイスやパーティションにラベルをつける方法は [[永続的なブロックデバイスの命名#by-label]] を見て下さい。root パーティションのリネームは "ライブ" Linux ディストリビューション (Parted Magic, Ubuntu, etc) から行なって下さい。root パーティションは初めにアンマウントする必要があるからです。
   
 
{{ic|lsblk -f}} を実行してパーティションを一覧し、前に {{ic|1=LABEL=}} を付けて下さい:
 
{{ic|lsblk -f}} を実行してパーティションを一覧し、前に {{ic|1=LABEL=}} を付けて下さい:
113行目: 114行目:
 
=== UUID ===
 
=== UUID ===
   
全てのパーティションとデバイスは固有の UUID を持っています。UUID はパーティションを作成したりフォーマットするときにファイルシステムユーティリティ (例: {{ic|mkfs.*}}) によって生成されます。詳しくは [[Persistent block device naming#by-uuid]] を見て下さい。
+
全てのパーティションとデバイスは固有の UUID を持っています。UUID はパーティションを作成したりフォーマットするときにファイルシステムユーティリティ (例: {{ic|mkfs.*}}) によって生成されます。詳しくは [[永続的なブロックデバイスの命名#by-uuid]] を見て下さい。
   
 
{{ic|lsblk -f}} を実行してパーティションを一覧し、前に {{ic|1=UUID=}} を付けて下さい:
 
{{ic|lsblk -f}} を実行してパーティションを一覧し、前に {{ic|1=UUID=}} を付けて下さい:
   
{{Tip|特定のパーティションの UUID だけを表示したい場合:
+
{{Tip|特定のパーティションの UUID だけを表示したい場合: {{ic|$ lsblk -no UUID /dev/sda2}}。
$ lsblk -no UUID /dev/sda2
 
 
}}
 
}}
   
128行目: 128行目:
 
UUID=4209c845-f495-4c43-8a03-5363dd433153 none swap defaults 0 0}}
 
UUID=4209c845-f495-4c43-8a03-5363dd433153 none swap defaults 0 0}}
   
== Tips and tricks ==
+
=== GPT ラベル ===
  +
{{ic|blkid}} を実行してパーティションを確認し、''PARTLABEL'' の値を使って下さい (クォートは要りません):
  +
  +
{{hc|/etc/fstab|<nowiki>
  +
# <file system> <dir> <type> <options> <dump> <pass>
  +
PARTLABEL=EFI\040SYSTEM\040PARTITION /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 2
  +
PARTLABEL=GNU/LINUX / ext4 rw,relatime,discard,data=ordered 0 1
  +
PARTLABEL=HOME /home ext4 rw,relatime,discard,data=ordered 0 2
  +
PARTLABEL=SWAP none swap defaults 0 0
  +
</nowiki>}}
  +
  +
{{Note|フィールドに空白が含まれている場合、[[#ファイルパスのスペース(空白)]]を参照。}}
  +
  +
=== GPT UUID ===
  +
  +
{{ic|blkid}} を実行してパーティションを確認し、''PARTUUID'' の値を使って下さい (クォートは要りません):
  +
  +
{{hc|/etc/fstab|<nowiki>
  +
# <file system> <dir> <type> <options> <dump> <pass>
  +
PARTUUID=d0d0d110-0a71-4ed6-936a-304969ea36af /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 2
  +
PARTUUID=98a81274-10f7-40db-872a-03df048df366 / ext4 rw,relatime,discard,data=ordered 0 1
  +
PARTUUID=7280201c-fc5d-40f2-a9b2-466611d3d49e /home ext4 rw,relatime,discard,data=ordered 0 2
  +
PARTUUID=039b6c1c-7553-4455-9537-1befbc9fbc5b none swap defaults 0 0
  +
</nowiki>}}
  +
  +
== ヒントとテクニック ==
  +
  +
=== systemd による自動マウント ===
  +
  +
巨大な {{ic|/home}} パーティションが存在する場合、''fsck'' によって {{ic|/home}} がチェックされている間に、{{ic|/home}} を使わないサービスを起動できるようにすると良いかもしれません。{{ic|/home}} パーティションの {{ic|/etc/fstab}} エントリに以下のオプションを追加することでそのように設定できます:
  +
  +
noauto,x-systemd.automount
  +
  +
{{ic|/home}} に最初にアクセスしたときに fsck とマウントを行うようになり、パーティションの準備が出来るまでカーネルが {{ic|/home}} へのファイルアクセスを全てバッファします。
  +
  +
{{Note|この設定を使うと {{ic|/home}} ファイルシステムのタイプが {{ic|autofs}} になり、デフォルトで [[mlocate]] から無視されるようになります。{{ic|/home}} の自動マウントによる高速化はせいぜい1〜2秒がいいとこなので、環境によっては、この設定はあまり意味がないかもしれません。}}
  +
  +
同じ設定はリモートファイルシステムのマウントにも適用できます。アクセスしたときにだけリモートファイルシステムをマウントしたい場合、{{ic|noauto,x-systemd.automount}} パラメータを使って下さい。さらに、{{ic|1=x-systemd.device-timeout=#}} オプションを使うことでネットワークに接続できないときのタイムアウトを指定できます。
  +
  +
{{Note|1={{ic|automount}} と一緒に {{ic|exec}} フラグを使う場合、{{ic|user}} フラグを削除するようにしてください。詳しくは [https://bugzilla.redhat.com/show_bug.cgi?id=769636 Fedora Bug Report] を参照。}}
  +
  +
キーファイルによって暗号化したファイルシステムがある場合も、{{ic|noauto}} パラメータを {{ic|/etc/crypttab}} の適当なエントリに追加することができます。設定することで ''systemd'' は起動時に暗号化デバイスを開かないようになり、実際にアクセスされたときになってから指定したキーファイルを使ってファイルシステムを開いてマウントします。デバイスが利用可能になるのを systemd が待機しないようになるので、暗号化 RAID デバイスなどを使っている場合、起動時間が数秒間短くなるかもしれません。例:
  +
  +
{{hc|/etc/crypttab|
  +
data /dev/md0 /root/key noauto}}
  +
  +
{{ic|x-systemd.idle-timeout}} フラグを使うことで一定時間アイドル状態のときにタイムアウトするのを指定できます。例:
  +
  +
noauto,x-systemd.automount,x-systemd.idle-timeout=1min
  +
  +
上記の設定の場合、1分間操作がないと systemd によってアンマウントされます。
   
 
=== スワップの UUID ===
 
=== スワップの UUID ===
162行目: 212行目:
 
存在するときに外部デバイスをマウントして、無い時は無視するには {{ic|nofail}} オプションが必要です。このオプションは起動時にエラーが報告されるのを防止します。
 
存在するときに外部デバイスをマウントして、無い時は無視するには {{ic|nofail}} オプションが必要です。このオプションは起動時にエラーが報告されるのを防止します。
   
{{hc|/etc/fstab|
+
{{hc|/etc/fstab|2=
/dev/sdg1 /media/backup jfs defaults,nofail 0 2}}
+
/dev/sdg1 /media/backup jfs defaults,nofail,x-systemd.device-timeout=1 0 2}}
 
=== 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}} を使うのがベストだと思われます。
 
 
{{Note|{{ic|noatime}} は {{ic|nodiratime}} を含んでいます。両方を指定する必要はありません。[http://lwn.net/Articles/244941/ ]}}
 
 
=== tmpfs ===
 
   
  +
systemd 219 から、{{ic|nofail}} オプションを使う時は {{ic|x-systemd.device-timeout}} オプションも使用することが推奨されます。デフォルトのデバイスタイムアウトが90秒になったため、{{ic|nofail}} しか指定しない場合、外部デバイスを切断したときに起動が90秒伸びることになるからです。上記のようにタイムアウトを再設定して上げて下さい。タイムアウトを0に設定してはいけません。永遠にタイムアウトしなくなります。
[[Wikipedia:Tmpfs|tmpfs]] は、メモリの使用量によって、メモリやスワップパーティション上に作られる一時ファイルシステムです。ディレクトリを tmpfs としてマウントすることでファイルのアクセス速度を上げることができ、再起動時には中身が自動で消失するようになります。
 
   
  +
また、外部デバイスを扱うのに他の systemd ユニットをロードする必要がある場合 (例えばネットワークで共有する場合など)、{{ic|1=x-systemd.requires=x}} と {{ic|x-systemd.automount}} を組み合わせて使うことで、ユニットが起動してから自動マウントさせることができます。例:
一般的に 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 は使われています。
 
 
{{Note|[[systemd (日本語)|systemd]] を使っている場合、tmpfs ディレクトリ内の一時ファイルは [[Systemd (日本語)#一時ファイル|tmpfiles.d]] を使って起動時に再作成することができます。}}
 
 
デフォルトでは、tmpfs パーティションの最大容量は総 RAM の半分に設定されますが、カスタマイズすることが可能です。実際のメモリ・スワップの消費はあなたがどれだけ使うかによることに注意してください、tmpfs パーティションは実際に必要になるまではメモリを消費しません。
 
 
tmpfs を {{ic|/tmp}} で使うには、次の行を {{ic|/etc/fstab}} に追加してください:
 
 
{{hc|/etc/fstab|
 
tmpfs /tmp tmpfs nodev,nosuid 0 0}}
 
 
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=
 
{{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}}
tmpfs /tmp tmpfs nodev,nosuid,size=2G 0 0}}
 
   
  +
=== atime オプション ===
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.
 
   
  +
{{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}} を使うのがベストだと思われます。
{{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}}
 
   
  +
逆に {{ic|strictatime}} オプションはファイルにアクセスするたびにアクセス日時を更新します。サーバーとして Linux を使っている場合には意味がありますが、デスクトップ用途ではあまり有意義ではありません。{{ic|strictatime}} オプションの欠点として、たとえ (ドライブではなくメモリから読み込む) ページキャッシュからファイルを読み込んだ場合でも、ディスクに書き込みが発生してしまいます。
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.
 
   
  +
{{Note|{{ic|noatime}} は {{ic|nodiratime}} を含んでいます。両方を指定する必要はありません。[https://lwn.net/Articles/244941/ ]}}
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).
 
   
  +
カーネル 4.0 から {{ic|lazytime}} という新しいオプションが追加されました。{{ic|lazytime}} は inode タイムスタンプ (アクセス・変更・作成日時) の変更をメモリ上に保存することでディスクへの書き込みを減らします。ディスク上のタイムスタンプが更新されるのは次の場合に限られます。(1) ファイルのタイムスタンプとは関係ない変更によってファイルの inode を更新する必要があるとき。(2) ディスクへの同期が発生したとき。(3) 削除されていない inode がメモリから追い出されたとき。(4) メモリ上のコピーがディスクに最後に書き込まれてから24時間以上経ったとき。
After applying changes, you may want to verify that they took effect by looking at {{ic|/proc/mounts}} and using {{ic|findmnt}}:
 
  +
{{Warning|システムがクラッシュした場合、ディスク上のアクセス時間や最終変更日時は最大で24時間ずれる可能性があります。}}
   
  +
{{ic|lazytime}} オプションは前述の {{ic|*atime}} オプションと一緒に使うことが可能です。
{{hc|$ findmnt --target /tmp|
 
TARGET SOURCE FSTYPE OPTIONS
 
/tmp tmpfs tmpfs rw,nosuid,nodev,relatime}}
 
 
==== 使用方法 ====
 
 
一般的に、読み書き操作を頻繁に行なって I/O に負担をかける処理やプログラムで tmpfs フォルダを使う意味があります。アプリケーションによってはデータの一部(もしくは全て)を共有メモリにオフロードすることで大きな効果を得られるかもしれません。例えば、[[Firefox_Ramdisk|Firefox のプロファイルを RAM に配置すること]] はパフォーマンスを著しく向上させます。
 
 
===== コンパイル時間の短縮 =====
 
 
{{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.}}
 
 
tmpfs フォルダをビルドディレクトリとして使って [[makepkg (日本語)|makepkg]] を実行できます ({{ic|/etc/makepkg.conf}} でも設定可能です):
 
 
$ BUILDDIR=/tmp/makepkg makepkg
 
   
 
=== FAT32 に標準ユーザーとして書き込み ===
 
=== FAT32 に標準ユーザーとして書き込み ===
239行目: 256行目:
   
 
# mount -o remount,rw /
 
# mount -o remount,rw /
  +
  +
=== バインドマウント ===
  +
  +
{{Note|ディレクトリを別の場所にバインドしていることはプログラムからはわからないため、{{ic|rm -r *}} のようなコマンドを実行してしまうと元の場所のファイルも消去されてしまいます。そのため、通常はソフトリンクを使うことが推奨されます。Btrfs 上のディレクトリにアクセスする必要がありソフトリンクは使えない場合、[[Btrfs#サブボリューム|サブボリューム]]機能でマウントオプションのようにケーパビリティを拡張できます。}}
  +
  +
権限がないために特定のディレクトリにプログラムやユーザーがアクセスできない場合、プログラムがアクセスできる場所にディレクトリをバインドマウントすることでアクセスさせることができます。プログラムがあるディレクトリ ''bar'' にはアクセスできるがディレクトリ ''foo'' にはアクセスできないとき、{{ic|/etc/fstab}} にエントリを追加することで特にパーミッションを弄らないでもアクセス権限を与えられます:
  +
{{hc|/etc/fstab|2=
  +
/<path to foo> /<path to bar> none bind 0 0}}
   
 
== 参照 ==
 
== 参照 ==
   
*[http://www.kernel.org/pub/linux/docs/lanana/device-list/devices-2.6.txt Full device listing including block device]
+
*[https://www.kernel.org/pub/linux/docs/lanana/device-list/devices-2.6.txt ブロックデバイスを含むデバイスリスト]
 
*[http://www.pathname.com/fhs/2.2/index.html Filesystem Hierarchy Standard]
 
*[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)
+
*[http://www.askapache.com/web-hosting/super-speed-secrets.html 30x Faster Web-Site Speed] (tmpfs の詳細)

2018年2月7日 (水) 00:24時点における版

関連記事

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

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

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

ファイル例

シンプルな /etc/fstab はカーネルの名前記述子を使います:

/etc/fstab
# <file system>        <dir>         <type>    <options>             <dump> <pass>

/dev/sda1              /             ext4      defaults,noatime      0      1
/dev/sda2              none          swap      defaults              0      0
/dev/sda3              /home         ext4      defaults,noatime      0      2

フィールドの定義

/etc/fstab ファイルには以下のフィールドが含まれ、スペースかタブで区切ります:

 <file system>        <dir>         <type>    <options>             <dump> <pass>
  • <file system> - マウントされるパーティションやストレージデバイス。
  • <dir> - <file system> がマウントされるマウントポイント。
  • <type> - マウントされるパーティションやストレージデバイスのファイルシステムタイプ。さまざまなファイルシステムがサポートされています: ext2, ext3, ext4, btrfs, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap, autoauto タイプはどのファイルシステムタイプが使われているかマウントコマンドに推測させます。これはディスクメディア (CD/DVD) に役立ちます。
  • <options> - 使用されるファイルシステムのマウントオプション。マウントオプションにはファイルシステム固有のものもあることに気をつけて下さい。最も一般的なオプションは:
  • auto - 起動時、または mount -a コマンドが実行されたときに自動でマウントします。
  • noauto - 自動ではマウントしません。
  • exec - ファイルシステム上のバイナリの実行を許可します。
  • noexec - ファイルシステム上のバイナリの実行を禁止します。
  • ro - ファイルシステムを読み込み専用でマウント。
  • rw - ファイルシステムを読み書き可能でマウント。
  • user - 全てのユーザーにファイルシステムのマウントを許可します。上書きしないかぎり、自動で noexec, nosuid, nodev も有効になります。
  • users - ユーザーグループに入っている全てのユーザーにファイルシステムのマウントを許可します。
  • nouser - root だけにファイルシステムのマウントを許可します。
  • owner - デバイスの所有者にマウントを許可します。
  • sync - I/O は同期されます。
  • async - I/O は非同期で行われます。
  • dev - ファイルシステム上の特別なデバイスを解釈します。
  • nodev - ファイルシステム上の特別なデバイスを解釈しない。
  • suid - suid や sgid ビットの操作を許可します。ほとんどの場合、一時的な権限で特別な作業を行うためにユーザーがバイナリ実行可能ファイルを実行できるようにするため使われます。
  • nosuid - suid や sgid ビットの操作を禁止します。
  • noatime - ファイルシステムの inode アクセス日時を更新しません。パフォーマンスの向上に役立ちます (#atime オプション を見て下さい)。
  • nodiratime - ファイルシステムのディレクトリの inode アクセス日時を更新しません。パフォーマンスの向上に役立ちます (#atime オプション を見て下さい)。
  • relatime - 変更日時にあわせて inode アクセス日時を更新します。以前のアクセス日時が現在の変更日時よりも前のときだけアクセス日時が更新されます (noatime に似ていますが、変更されたあとファイルが読み込まれたか知る必要がある mutt などのアプリケーションを破壊しません)。パフォーマンスの向上に役立ちます (#atime オプションを見て下さい)。
  • discard - ブロックがフリーになったときにブロックデバイスに TRIM コマンドを実行します。ファイルシステムが SSD 上にあるときは使うことが推奨されています。
  • flush - データを頻繁にフラッシュする vfat のオプション。全てのデータが書き込まれるまではコピーダイアログやプログレスバーは止まったままになります。
  • nofail - 存在するときはデバイスをマウントし、存在しないときは無視します。起動時にリムーバブルメディアのエラーが報告されるのを防止します。
  • defaults - 使われるファイルシステムのデフォルトのマウントオプション。ext4 のデフォルトのオプションは: rw, suid, dev, exec, auto, nouser, async
  • <dump> - バックアップを作る時を決定するために dump ユーティリティによって使われます。Dump はエントリをチェックしその値を使ってファイルシステムがバックアップされるべきかどうか決定します。指定できるエントリは0か1です。0の場合、dumpはファイルシステムを無視します; 1の場合、dump はバックアップを作成します。ほとんどのユーザーは dump をインストールしないので、<dump> エントリには0を入れて下さい。
  • <pass> - ファイルシステムをチェックする順番を決めるために fsck によって使われます。指定できるエントリは0か1、もしくは2です。root ファイルシステムには一番優先度の高い1を設定してください (btrfs の場合は、このフィールドは0にするべきです) - その他のファイルシステムには2を入れて下さい。0のファイルシステムは fsck ユーティリティによってチェックされません。

ファイルシステムの識別

/etc/fstab でパーティションやストレージデバイスを識別する方法は3つあります: カーネルの名前記述子、ラベル、UUID です。UUID やラベルにはドライブがマシンに(物理的に)接続されている順番と切り離せるという利点があります。これは、BIOS でストレージデバイスの順番を変更したり、ストレージデバイスの配線を変えるときに有用です。また、ときどき BIOS はストレージデバイスの順番を変更してしまうことがあります。詳しくは永続的なブロックデバイスの命名の記事を読んで下さい。

パーティションについて基本的な情報を一覧するには、次を実行:

$ 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

カーネルの名前

lsblk -f を実行してパーティションを一覧し、前に /dev を付けて下さい。

サンプルを見て下さい。

ラベル

ノート: 衝突がおこるのを避けるために、ラベルをかぶらせてはいけません。

デバイスやパーティションにラベルをつける方法は 永続的なブロックデバイスの命名#by-label を見て下さい。root パーティションのリネームは "ライブ" Linux ディストリビューション (Parted Magic, Ubuntu, etc) から行なって下さい。root パーティションは初めにアンマウントする必要があるからです。

lsblk -f を実行してパーティションを一覧し、前に LABEL= を付けて下さい:

/etc/fstab
# <file system>        <dir>         <type>    <options>             <dump> <pass>
 
LABEL=Arch_Linux       /             ext4      defaults,noatime      0      1
LABEL=Arch_Swap        none          swap      defaults              0      0

UUID

全てのパーティションとデバイスは固有の UUID を持っています。UUID はパーティションを作成したりフォーマットするときにファイルシステムユーティリティ (例: mkfs.*) によって生成されます。詳しくは 永続的なブロックデバイスの命名#by-uuid を見て下さい。

lsblk -f を実行してパーティションを一覧し、前に UUID= を付けて下さい:

ヒント: 特定のパーティションの UUID だけを表示したい場合: $ lsblk -no UUID /dev/sda2
/etc/fstab
# <file system>                            <dir>     <type>    <options>             <dump> <pass>

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

GPT ラベル

blkid を実行してパーティションを確認し、PARTLABEL の値を使って下さい (クォートは要りません):

/etc/fstab
# <file system>                      <dir> <type> <options>                                                                                            <dump> <pass>
PARTLABEL=EFI\040SYSTEM\040PARTITION /boot vfat   rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0      2
PARTLABEL=GNU/LINUX                  /     ext4   rw,relatime,discard,data=ordered                                                                     0      1
PARTLABEL=HOME                       /home ext4   rw,relatime,discard,data=ordered                                                                     0      2
PARTLABEL=SWAP                       none  swap   defaults                                                                                             0      0
ノート: フィールドに空白が含まれている場合、#ファイルパスのスペース(空白)を参照。

GPT UUID

blkid を実行してパーティションを確認し、PARTUUID の値を使って下さい (クォートは要りません):

/etc/fstab
# <file system>                               <dir> <type> <options>                                                                                            <dump> <pass>
PARTUUID=d0d0d110-0a71-4ed6-936a-304969ea36af /boot vfat   rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0      2
PARTUUID=98a81274-10f7-40db-872a-03df048df366 /     ext4   rw,relatime,discard,data=ordered                                                                     0      1
PARTUUID=7280201c-fc5d-40f2-a9b2-466611d3d49e /home ext4   rw,relatime,discard,data=ordered                                                                     0      2
PARTUUID=039b6c1c-7553-4455-9537-1befbc9fbc5b none  swap   defaults                                                                                             0      0

ヒントとテクニック

systemd による自動マウント

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

noauto,x-systemd.automount

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

ノート: この設定を使うと /home ファイルシステムのタイプが autofs になり、デフォルトで mlocate から無視されるようになります。/home の自動マウントによる高速化はせいぜい1〜2秒がいいとこなので、環境によっては、この設定はあまり意味がないかもしれません。

同じ設定はリモートファイルシステムのマウントにも適用できます。アクセスしたときにだけリモートファイルシステムをマウントしたい場合、noauto,x-systemd.automount パラメータを使って下さい。さらに、x-systemd.device-timeout=# オプションを使うことでネットワークに接続できないときのタイムアウトを指定できます。

ノート: automount と一緒に exec フラグを使う場合、user フラグを削除するようにしてください。詳しくは Fedora Bug Report を参照。

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

/etc/crypttab
data /dev/md0 /root/key noauto

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

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

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

スワップの UUID

スワップパーティションが UUID を持っていない場合、手動で追加することが可能です。これは lsblk -f コマンドでスワップの UUID が表示されないときに発生します。スワップに UUID を指定する手順は以下になります:

スワップパーティションを確認:

# swapon -s

スワップを無効化:

# swapoff /dev/sda7

新しく UUID を指定してスワップを再作成:

# mkswap -U random /dev/sda7

スワップを有効化:

# swapon /dev/sda7

ファイルパスのスペース(空白)

マウントポイントにスペース(空白)が含まれている場合、エスケープ文字 \ と3文字の8進数コード 040 を使ってスペースの代わりにしてください:

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

外部デバイス

存在するときに外部デバイスをマウントして、無い時は無視するには nofail オプションが必要です。このオプションは起動時にエラーが報告されるのを防止します。

/etc/fstab
/dev/sdg1        /media/backup    jfs    defaults,nofail,x-systemd.device-timeout=1    0  2

systemd 219 から、nofail オプションを使う時は x-systemd.device-timeout オプションも使用することが推奨されます。デフォルトのデバイスタイムアウトが90秒になったため、nofail しか指定しない場合、外部デバイスを切断したときに起動が90秒伸びることになるからです。上記のようにタイムアウトを再設定して上げて下さい。タイムアウトを0に設定してはいけません。永遠にタイムアウトしなくなります。

また、外部デバイスを扱うのに他の systemd ユニットをロードする必要がある場合 (例えばネットワークで共有する場合など)、x-systemd.requires=xx-systemd.automount を組み合わせて使うことで、ユニットが起動してから自動マウントさせることができます。例:

/etc/fstab
/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

atime オプション

noatime, nodiratime, relatime を使用するとドライブのパフォーマンスが改善します。Linux は読み込まれるたびに記録する(ドライブに書き込む) atime をデフォルトで使っています。これは Linux をサーバーに使っている時は理にかなっていますが、デスクトップとして利用する場合はそれほど意味がありません。atime オプションの最悪な点は、ページキャッシュからファイルを読み込む(ドライブではなくメモリから読み込む)ときでさえ書き込みを行ってしまうことです!noatime オプションはファイルを読み込むたびにドライブにファイルのアクセス日時を書き込むのを完全に無効にします。これはほとんど全てのアプリケーションでうまくいきますが、そのような情報が必要な Mutt などの例外がわずかに存在します。mutt のために、relatime オプションを使うほうがいいでしょう。relatime オプションはファイルが変更されたときだけファイルアクセス日時の書き込みを有効にします (noatime はアクセス日時が変更日時より古い場合でもアクセス日時を変更しません)。nodiratime オプションはファイルアクセス日時の書き込みをディレクトリでだけ無効化し、その他のファイルではアクセス日時の書き込みが行われます。Mutt などのプログラムを動作させるために妥協として relatime を使うのがベストだと思われます。

逆に strictatime オプションはファイルにアクセスするたびにアクセス日時を更新します。サーバーとして Linux を使っている場合には意味がありますが、デスクトップ用途ではあまり有意義ではありません。strictatime オプションの欠点として、たとえ (ドライブではなくメモリから読み込む) ページキャッシュからファイルを読み込んだ場合でも、ディスクに書き込みが発生してしまいます。

ノート: noatimenodiratime を含んでいます。両方を指定する必要はありません。[1]

カーネル 4.0 から lazytime という新しいオプションが追加されました。lazytime は inode タイムスタンプ (アクセス・変更・作成日時) の変更をメモリ上に保存することでディスクへの書き込みを減らします。ディスク上のタイムスタンプが更新されるのは次の場合に限られます。(1) ファイルのタイムスタンプとは関係ない変更によってファイルの inode を更新する必要があるとき。(2) ディスクへの同期が発生したとき。(3) 削除されていない inode がメモリから追い出されたとき。(4) メモリ上のコピーがディスクに最後に書き込まれてから24時間以上経ったとき。

警告: システムがクラッシュした場合、ディスク上のアクセス時間や最終変更日時は最大で24時間ずれる可能性があります。

lazytime オプションは前述の *atime オプションと一緒に使うことが可能です。

FAT32 に標準ユーザーとして書き込み

FAT32 パーティションに書き込みを行うには、/etc/fstab ファイルに修正を加える必要があります。

/etc/fstab
/dev/sdxY    /mnt/some_folder  vfat   user,rw,umask=000              0  0

user フラグは全てのユーザーが (つまり root でなくても) /dev/sdX パーティションをマウント・アンマウントできることを意味しています。rw は読み書きの許可を与えます; umask オプションは選択した権利を削除します - 例えば umask=111 は実行権限を削除します。問題は、このエントリはディレクトリからも実行権限を削除してしまうことであり、それを dmask=000 で修正しなくてはなりません。Umask を参照。

これらのオプションがないと、全てのファイルは実行可能になります。umask や dmask オプションの代わりに showexec オプションを使うことができ、全ての Windows の実行可能ファイル (com, exe, bat) を実行可能な色で表示します。

例えば、FAT32 パーティションが /dev/sda9 にあって、/mnt/fat32 にマウントしたい場合、次のようにします:

/etc/fstab
/dev/sda9    /mnt/fat32        vfat   user,rw,umask=111,dmask=000    0  0

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

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

# mount -o remount,rw /

バインドマウント

ノート: ディレクトリを別の場所にバインドしていることはプログラムからはわからないため、rm -r * のようなコマンドを実行してしまうと元の場所のファイルも消去されてしまいます。そのため、通常はソフトリンクを使うことが推奨されます。Btrfs 上のディレクトリにアクセスする必要がありソフトリンクは使えない場合、サブボリューム機能でマウントオプションのようにケーパビリティを拡張できます。

権限がないために特定のディレクトリにプログラムやユーザーがアクセスできない場合、プログラムがアクセスできる場所にディレクトリをバインドマウントすることでアクセスさせることができます。プログラムがあるディレクトリ bar にはアクセスできるがディレクトリ foo にはアクセスできないとき、/etc/fstab にエントリを追加することで特にパーミッションを弄らないでもアクセス権限を与えられます:

/etc/fstab
/<path to foo>         /<path to bar>     none     bind     0 0

参照