web-dev-qa-db-ja.com

マウントのatimeオプションが期待どおりにファイルのatimeを常に更新しないのはなぜですか?

特定のファイルへの読み取りアクセスを検出する必要があったため、通常の方法でファイルシステムの atime 属性を更新する必要がありました。

デフォルトのマウントオプション

デフォルトの状態では、atimeオプションを使用しなかったにもかかわらず、ファイルシステムはnoatimeを期待どおりに更新しませんでした。

$ cat /etc/fstab | grep '/home '
# /home was on /dev/sda7 during installation
UUID=d7e67903-f24d-45a7-be90-6a134c9c1ae9 /home         ext4    defaults      0     2

$ mount | grep '/home '
/dev/sda7 on /home type ext4 (rw)

$ cat /etc/mtab | grep '/home '
/dev/sda7 /home ext4 rw 0 0

ファイルのatimeが更新されるのはときどきでした。後で、ファイルシステムが新しい relatime オプションでマウントされていることに気付きました。

$ cat /proc/mounts | grep '/home '
/dev/sda7 /home ext4 rw,relatime,user_xattr,barrier=1,data=ordered 0 0

明らかな解決策は機能しません

したがって、relatimeオプションはUbuntu 12.04のデフォルトのようです。解決策は簡単に思えた-デフォルトではないatimeオプションを明示的に述べてください:

$ Sudo mount -o remount,atime /home

実際のmountオプションは、atimeオプションを使用しない場合とまったく同じように見えたことに驚きました。

$ mount | grep '/home '
/dev/sda7 on /home type ext4 (rw)

$ cat /etc/mtab | grep '/home '
/dev/sda7 /home ext4 rw 0 0

$ cat /proc/mounts | grep '/home '
/dev/sda7 /home ext4 rw,relatime,user_xattr,barrier=1,data=ordered 0 0

実際、システムはatimeオプションなしのシステムとまったく同じ動作をしていました

ご質問

何が起こっている? atimeオプションを単純に使用できないのはなぜですか?通常のatime機能を取得するにはどうすればよいですか?

5
pabouk

実際にあります  Linuxのatimeの5つのmount関連オプション:

Linuxカーネル2.6.30以降、デフォルトのオプションはrelatimeです。元のatime機能を使用する場合は、strictatimeオプションを使用する必要があります。提示されたケースでは、次のようになります。

Sudo mount -o remount,strictatime /home

ソース

8
pabouk