Wie mache ich Noatime-Mounts standardmäßig?

8

Ich mache ein Ubuntu-Derivat und möchte noatime zur Standard-Mount-Option für alle Dateisysteme machen (anstelle von relatime, die in Ubuntu standardmäßig verwendet wird).

Es scheint einen booleschen default_relatimeKernel-Parameter zum Umschalten zwischen Standardeinstellung auf atime oder relatime zu geben (auch verfügbar durch Schreiben in / proc / sys / kernel / default_relatime), aber ich kann kein Äquivalent für noatime finden und weiß nicht, wie Aktivieren Sie dies standardmäßig in einer Distribution .

Wie konfiguriere ich die Aufzeichnung von Daten, um sie sofort zu pendrive? schlägt vor, dass es eine Möglichkeit gibt, noatime mount-Parameter über udev hinzuzufügen, aber ich habe keine Ahnung, ob dies für interne Medien funktioniert und wie es geht.

Was ist der am wenigsten invasive Weg, um den Kernel auf Noatime zu setzen?

Der aktuelle Standard kann mit "cat / proc / mounts" angezeigt werden, da sogar implizite Mount-Parameter angezeigt werden. Vertraue nicht "mount".

Ja, ich habe gelesen. Lohnt es sich, Ext4 mit Noatime abzustimmen? und ich will es immer noch tun.

Shnatsel
quelle
3
Relatime ist die Standardoption im Kernel, nicht in Ubuntu. Sie müssten den Kernel ändern oder Optionen hinzufügen/etc/fstab .
arrangieren

Antworten:

4

Der Kernel hatte früher eine Konfigurationsoption für die Verwendung von ATIME oder RELATIME. Keine Ahnung, ob dies auch eine Option für NOATIME beinhaltete. Auf jeden Fall ist das jetzt weg.

Ich habe auch util-linux studiert, um festzustellen, ob der Befehl mount konfigurierbare Standardeinstellungen hatte oder geändert werden konnte, aber dies schien nicht der Fall zu sein.

Es sieht jedoch so aus, als könnten Sie den Kernel patchen, um das Standardverhalten zu ändern. Ändern Sie ./fs/namespace.c um die Zeilen 2334:

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

Tauschen Sie das aus:

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

Und das sollte es tun.

Bryce
quelle
1
Die Lösung von Second @ Bryce - dies scheint der einzige Weg zu sein, dies zu tun. Das bedeutet natürlich, dass Sie Ihre eigenen Kernel-Updates mit diesem Patch rollen müssen - wie invasiv das ist, liegt bei Ihnen :)
ish
Das ist meiner Meinung nach wirklich invasiv, da es die Wartung benutzerdefinierter Kernel-Builds erfordert und beim sicheren Booten verdammt viel Kopfschmerzen verursacht. Trotzdem +1, weil dies praktikabel ist.
Shnatsel
askubuntu.com/questions/61448/… schlägt vor, dass udev-Regeln Mount-Parameter anhängen können. Vielleicht funktioniert das? Ich werde den Körper jetzt mit diesem Link aktualisieren ...
Shnatsel
Dies sind die Zeilen 2315+ in Linux 3.2, siehe lxr.free-electrons.com/source/fs/namespace.c?v=3.2#L2315 if (flags & MS_NOATIME) mnt_flags |= MNT_NOATIME; in Zeile 2326 stört mich irgendwie, ich denke, ich muss das auch umdrehen. Danke für Ihre Hilfe!
Shnatsel