¿Cómo hago que los montajes de noatime sean predeterminados?

8

Estoy haciendo un derivado de Ubuntu, y quiero hacer de noatime la opción de montaje predeterminada para todos los sistemas de archivos (en lugar de relatime, que es el predeterminado en Ubuntu).

Parece que hay un default_relatimeparámetro de núcleo booleano para cambiar entre el valor predeterminado a atime o relatime (también disponible escribiendo a / proc / sys / kernel / default_relatime), pero no puedo encontrar un equivalente para noatime y no sé cómo habilita eso en una distribución por defecto.

¿Cómo configurar para grabar datos para pendrive instantáneamente? sugiere que hay una manera de agregar el parámetro de montaje noatime a través de udev, pero no tengo idea si eso funcionará para medios internos y cómo hacerlo.

¿Cuál es la forma menos invasiva de hacer que el kernel sea predeterminado a noatime?

El valor predeterminado actual se puede ver usando "cat / proc / mounts" porque muestra incluso parámetros de montaje implícitos; no confíes en "monte".

Sí, he leído ¿Vale la pena sintonizar Ext4 con noatime? y todavía quiero hacerlo

Shnatsel
fuente
3
Relatime es la opción predeterminada en el núcleo, no en Ubuntu en sí. Tendría que modificar el núcleo o agregar opciones a /etc/fstab.
organizar

Respuestas:

4

El núcleo solía tener una opción de configuración para usar ATIME o RELATIME; No sé si eso también incluía alguna opción para NOATIME. En cualquier caso, se ha ido ahora.

También estudié util-linux, para ver si el comando de montaje tenía valores predeterminados configurables o podía modificarse, pero no parecía ser el caso.

Sin embargo, parece que puede parchear el núcleo para cambiar el comportamiento predeterminado. Modifique ./fs/namespace.c, alrededor de las líneas 2334:

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

Cambia eso:

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

Y eso debería hacerlo.

Bryce
fuente
1
La solución de Second @ Bryce: esta parece ser la única forma de hacerlo. Por supuesto, eso significa que rodar sus propias actualizaciones del kernel con este parche - qué tan invasivo que es depende de usted :)
ish
Eso es realmente invasivo en mi humilde opinión porque requiere el mantenimiento de compilaciones de kernel personalizadas y dará como resultado un gran dolor de cabeza con el arranque seguro. Aún así, +1 porque esto es viable.
Shnatsel
askubuntu.com/questions/61448/… sugiere que las reglas de udev pueden agregar parámetros de montaje, ¿tal vez eso funcionará? Actualizaré el cuerpo con este enlace ahora ...
Shnatsel
Estas son las líneas 2315+ en Linux 3.2, ver lxr.free-electrons.com/source/fs/namespace.c?v=3.2#L2315 if (flags & MS_NOATIME) mnt_flags |= MNT_NOATIME; en la línea 2326 me molesta un poco, supongo que tendré que cambiar eso también. ¡Gracias por tu ayuda!
Shnatsel