Comment puis-je faire des montages noatime par défaut?

8

Je fais un dérivé d'Ubuntu, et je veux faire de noatime l'option de montage par défaut pour tous les systèmes de fichiers (au lieu de relatime qui est par défaut dans Ubuntu).

Il semble y avoir un default_relatimeparamètre de noyau booléen pour basculer entre la valeur par défaut à atime ou relatime (également disponible en écrivant dans / proc / sys / kernel / default_relatime), mais je ne trouve pas d'équivalent pour noatime et je ne sais pas comment activez cela dans une distribution par défaut.

Comment configurer pour enregistrer des données de façon instantanée? suggère qu'il existe un moyen d'ajouter un paramètre de montage noatime via udev, mais je ne sais pas si cela fonctionnera pour les médias internes et comment le faire.

Quelle est la manière la moins invasive de faire par défaut du noyau à noatime?

La valeur par défaut actuelle peut être visualisée à l'aide de "cat / proc / mounts" car elle affiche même des paramètres de montage implicites; ne faites pas confiance à "mount".

Oui, j'ai lu Est-ce que ça vaut la peine de régler Ext4 avec noatime? et je veux toujours le faire.

Shnatsel
la source
3
Relatime est l'option par défaut dans le noyau, pas dans Ubuntu lui-même. Vous devrez modifier le noyau ou ajouter des options à /etc/fstab.
organiser

Réponses:

4

Le noyau avait une option de configuration pour utiliser ATIME ou RELATIME; ne sais pas si cela incluait également une option pour NOATIME. En tout cas, c'est parti maintenant.

J'ai également étudié util-linux, pour voir si la commande mount avait des valeurs par défaut configurables ou pouvait être modifiée, mais cela ne semblait pas être le cas.

Cependant, il semble que vous puissiez patcher le noyau pour changer le comportement par défaut. Modifiez ./fs/namespace.c, autour des lignes 2334:

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

Échangez cela autour:

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

Et cela devrait le faire.

Bryce
la source
1
Deuxième solution de Bryce - cela semble être la seule façon de le faire. Bien sûr, cela signifie rouler vos propres mises à jour du noyau avec ce correctif - à quel point cela vous appartient :)
ish
C'est vraiment envahissant à mon humble avis, car il nécessite le maintien de builds de noyau personnalisés et entraînera un sacré mal de tête avec un démarrage sécurisé. Toujours +1, car cela est réalisable.
Shnatsel
askubuntu.com/questions/61448/… suggère que les règles udev peuvent ajouter des paramètres de montage, peut-être que cela fonctionnera? Je vais mettre à jour le corps avec ce lien maintenant ...
Shnatsel
Ce sont les lignes 2315+ dans Linux 3.2, voir lxr.free-electrons.com/source/fs/namespace.c?v=3.2#L2315 if (flags & MS_NOATIME) mnt_flags |= MNT_NOATIME; à la ligne 2326 me dérange un peu, je suppose que je vais devoir inverser cela aussi. Merci de votre aide!
Shnatsel