Как мне сделать noatime mounts по умолчанию?

8

Я делаю производную от Ubuntu и хочу сделать noatime опцией монтирования по умолчанию для всех файловых систем (вместо relaytime, которое по умолчанию в Ubuntu).

Кажется, есть булевский default_relatimeпараметр ядра для переключения между значениями по умолчанию к atime или relaytime (также доступны путем записи в / proc / sys / kernel / default_relatime), но я не могу найти эквивалент для noatime, и я не знаю, как включить это в дистрибутиве по умолчанию.

Как настроить запись данных для мгновенного запуска? предполагает, что есть способ добавить параметр noatime mount через udev, но я понятия не имею, будет ли это работать для внутренних носителей и как это сделать.

Какой наименее инвазивный способ сделать ядро ​​по умолчанию noatime?

Текущее значение по умолчанию можно просмотреть с помощью «cat / proc / mounts», поскольку оно показывает даже неявные параметры монтирования; не верь "горе".

Да, я прочитал Стоит ли настраивать Ext4 с noatime? и я все еще хочу сделать это.

Shnatsel
источник
3
Relatime - это опция по умолчанию в ядре, а не в самой Ubuntu. Вы должны будете изменить ядро ​​или добавить опции /etc/fstab.
организовать

Ответы:

4

В ядре была опция конфигурации для использования ATIME или RELATIME; не знаю, если это также включало некоторые опции для NOATIME. В любом случае, это ушло сейчас.

Я также изучил util-linux, чтобы узнать, имеет ли команда mount настраиваемые значения по умолчанию или может быть изменена, но это не так.

Однако, похоже, что вы можете исправить ядро, чтобы изменить поведение по умолчанию. Изменить ./fs/namespace.c, вокруг строк 2334:

long do_mount(...)
...
    /* Default to relatime unless overriden */
    if (!(flags & MS_NOATIME))
            mnt_flags |= MNT_RELATIME;
...

Поменяйте местами это:

long do_mount(...)
...
    /* Default to noatime unless overriden */
    if (!(flags & MS_RELATIME))
            mnt_flags |= MNT_NOATIME;
...

И это должно сделать это.

Брайс
источник
1
Решение Second @ Bryce - похоже, это единственный способ сделать это. Конечно, это означает , что прокатка своего собственных обновлений ядра с этим патчем - как инвазивное это до вас :)
иш
Это действительно инвазивное IMHO, потому что требует поддержки пользовательских сборок ядра и приведет к чертовски большой головной боли с безопасной загрузкой. Тем не менее, +1, потому что это выполнимо.
Шнацель
askubuntu.com/questions/61448/… предполагает, что правила udev могут добавлять параметры монтирования, может это сработает? Я
обновлю
Это строки 2315+ в Linux 3.2, см. Lxr.free-electrons.com/source/fs/namespace.c?v=3.2#L2315 if (flags & MS_NOATIME) mnt_flags |= MNT_NOATIME; в строке 2326, меня это немного беспокоит, думаю, мне тоже придется это перевернуть. Спасибо за вашу помощь!
Шнацель