fstab (日本語)

From ArchWiki
Revision as of 07:00, 2 April 2013 by Kusakata (Talk | contribs) (Created page with "{{Lowercase title}} Category:File systems (日本語) Category:Boot process (日本語) en:Fstab es:Fstab it:Fstab ro:Fstab ru:Fstab [[zh-CN:Fstab]...")

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary end

/etc/fstab ファイルには固定的なファイルシステムの情報を記述します。ストレージデバイスやパーティションがどのようにマウントされてシステム全体に組み込まれるかが定義されます。特定のデバイやパーティションをマウントするとき、mount コマンドによって fstab が読み込まれ、どのオプションを使用するか決定します。

ファイル例

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

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

tmpfs                  /tmp          tmpfs     nodev,nosuid          0      0

/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, 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 オプションを見て下さい)。
  • flush - The vfat option to flush data more often, thus making copy dialogs or progress bars to stay up until all data is written.
  • 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を設定してください - その他のファイルシステムには2を入れて下さい。0のファイルシステムは fsck ユーティリティによってチェックされません。

ファイルシステムの識別

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

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

$ 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 を付けて下さい。

サンプルを見て下さい。

ラベル

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

デバイスやパーティションにラベルをつける方法はこの記事を見て下さい。gparted をインストールして使うこともできますが、root パーティションのラベリングは "ライブ" Linux ディストリビューション (Parted Magic, Ubuntu, etc) から行なって下さい。root パーティションは初めにアンマウントする必要があるからです。

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

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

tmpfs                  /tmp          tmpfs     nodev,nosuid          0      0
 
LABEL=Arch_Linux       /             ext4      defaults,noatime      0      1
LABEL=Arch_Swap        none          swap      defaults              0      0

UUID

全てのパーティションとデバイスは固有の UUID を持っています。UUID はパーティションを作成したりフォーマットするときにファイルシステムユーティリティ (例: mkfs.*) によって生成されます。

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

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

tmpfs                                      /tmp      tmpfs     nodev,nosuid          0      0

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

Tips and tricks

デバイスの自動マウント

起動時にディスクデバイスを自動マウントするには、以下を行なって下さい:

lsblk -f コマンドを使って全てのディスクデバイスを一覧。

デバイスの UUID をコピーして /etc/fstab に入力、デバイスの新しい行を作成する。

例:

$ 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
/etc/fstab
# <file system>	<dir>	<type>	<options>	<dump>	<pass>
tmpfs		/tmp	tmpfs	nodev,nosuid	0	0
...

f838b24e-3a66-4d02-86f4-a2e73e454336 /media/Storage ext4 defaults 0 0

...

注意: 詳しくは fstab の man ページを見て下さい!

スワップの 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

外部デバイス

External devices that are to be mounted when present but ignored if absent may require the nofail option. This prevents errors being reported at boot.

/etc/fstab
/dev/sdg1        /media/backup    jfs    defaults,nofail    0  2

atime オプション

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

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

tmpfs

tmpfs is a temporary filesystem that resides in memory and/or your swap partition(s), depending on how much you fill it up. Mounting directories as tmpfs can be an effective way of speeding up accesses to their files, or to ensure that their contents are automatically cleared upon reboot.

Some directories where tmpfs is commonly used are /tmp, /var/lock and /var/run. Do NOT use it on /var/tmp, because that folder is meant for temporary files that are preserved across reboots. Arch uses a tmpfs /run directory, with /var/run and /var/lock simply existing as symlinks for compatibility. It is also used for /tmp in the default /etc/fstab.

Note: When using systemd, temporary files in tmpfs directories can be recreated at boot by using tmpfiles.d.

By default, a tmpfs partition has its maximum size set to half your total RAM, but this can be customized. Note that the actual memory/swap consumption depends on how much you fill it up, as tmpfs partitions do not consume any memory until it is actually needed.

To use tmpfs for /tmp, add this line to /etc/fstab:

/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 mode option alone in these cases to ensure that they have the correct permissions (1777). In the example above, /tmp will be set to use up to half of your total RAM. To explicitly set a maximum size, use the size mount option:

/etc/fstab
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, ~/.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. More info.

/etc/fstab
tmpfs   /www/cache    tmpfs  rw,size=1G,nr_inodes=5k,noexec,nodev,nosuid,uid=648,gid=648,mode=1700   0  0

See the mount command man page for more information. One useful mount option in the man page is the default option. At least understand that.

Reboot for the changes to take effect. Note that although it may be tempting to simply run 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 mount -a instead of rebooting (or mount them individually).

After applying changes, you may want to verify that they took effect by looking at /proc/mounts and using findmnt:

$ findmnt --target /tmp
TARGET SOURCE FSTYPE OPTIONS
/tmp   tmpfs  tmpfs  rw,nosuid,nodev,relatime

使用方法

Generally, I/O intensive tasks and programs that run frequent read/write operations can benefit from using a tmpfs folder. Some applications can even receive a substantial gain by offloading some (or all) of their data onto the shared memory. For example, relocating the Firefox profile into RAM shows a significant improvement in performance.

コンパイル時間の短縮
Note: The tmpfs folder (/tmp, in this case) needs to be mounted without noexec, else it will prevent build scripts or utilities from being executed. Also, as stated above, the default size is half of the available RAM. You may run out of space.

You can run makepkg with a tmpfs folder for the build directory (which is also a setting in /etc/makepkg.conf):

$ BUILDDIR=/tmp/makepkg makepkg

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

To write on a FAT32 partition, you must make a few changes to your /etc/fstab file.

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

The user flag means that any user (even non-root) can mount and unmount the partition /dev/sdX. rw gives read-write access; umask option removes selected rights - for example umask=111 remove executable rights. The problem is that this entry removes executable rights from directories too, so we must correct it by dmask=000. See also Umask.

Without these options, all files will be executable. You can use the option showexec instead of the umask and dmask options, which shows all Windows executables (com, exe, bat) in executable colours.

For example, if your FAT32 partition is on /dev/sda9, and you wish to mount it to /mnt/fat32, then you would use:

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

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

If for some reason the root partition has been improperly mounted read only, remount the root partition with the following command:

# mount -o remount,rw /;   #Remount the root partition with read-write access

参照