特定のファイルへの読み取りアクセスを検出する必要があったため、通常の方法でファイルシステムの 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
機能を取得するにはどうすればよいですか?
実際にあります 四 Linuxのatime
の5つのmount
関連オプション:
noatime
ファイルとディレクトリの両方の)atime
属性は、書き込みアクセス中にのみ更新されます。nodiratime
-ディレクトリのatime
は書き込みアクセス中にのみ更新され、relatimeと組み合わせることができます。relatime
/atime
-atime
はrelatime
のエイリアスのようです。このオプションにより、前のatime
がatime
またはmtime
より古いか、または前のctime
が24時間以上経過している場合にのみ、atime
属性が更新されます。strictatime
-以前はatime
と呼ばれていたため、デフォルトのオプションでした。これにより、atime
属性がすべてのファイルアクセスで更新されます。 (メタデータ/属性だけでなく、ファイルデータへのアクセス)lazytime
-Linux 4.10は新しいオプションを追加しました:ファイルiノードのメモリ内バージョンの更新時間(atime、mtime、ctime)のみ。ディスク上のデータは遅れて更新されます(詳細については---(man 8 mount
を参照)。Linuxカーネル2.6.30以降、デフォルトのオプションはrelatime
です。元のatime
機能を使用する場合は、strictatime
オプションを使用する必要があります。提示されたケースでは、次のようになります。
Sudo mount -o remount,strictatime /home