Почему опция монтирования 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
функциональность?
1 ответ
На самом деле есть четыре пять atime
связанные варианты mount
в Linux:
noatime
-atime
Атрибут (как файлов, так и каталогов) обновляется только во время доступа для записи.nodiratime
-atime
из каталогов обновляется только во время доступа записи, может быть объединен с релеем времени.relatime
/atime
-atime
кажется теперь псевдонимrelatime
, Эта опция вызываетatime
атрибут для обновления, только если предыдущийatime
старше чемmtime
или жеctime
или предыдущийatime
старше 24 часов.strictatime
- Это раньше называлосьatime
и как таковой был вариант по умолчанию. Это вызываетatime
атрибут для обновления при каждом доступе к файлу. (доступ к данным файла, а не только к метаданным / атрибутам)lazytime
- В Linux 4.10 добавлена новая опция: только время обновления (atime, mtime, ctime) для версии inode в оперативной памяти. Данные на диске обновляются лениво (см.man 8 mount
для деталей).
Начиная с ядра Linux 2.6.30, по умолчанию relatime
, Если вы хотите иметь оригинал atime
функциональность вы должны использовать strictatime
вариант. В представленном случае это будет:
sudo mount -o remount,strictatime /home
источники
stat()
-atime
решение проблем/etc/fstab
- общие параметры для всех файловых систем- Давным-давно