Chaque fois que je mets à niveau Linux sur mon ordinateur personnel, j'ai une liste de tâches que j'effectue habituellement. Ils sont devenus des habitudes au fil des ans :je sauvegarde mes fichiers, efface le système, réinstalle à partir de zéro, restaure mes fichiers, puis réinstalle mes applications supplémentaires préférées. Je fais aussi quelques ajustements du système. Je fais certaines de ces modifications depuis si longtemps que je me suis récemment demandé si j'avais encore besoin de les faire.
Un ajustement est atime
, qui est l'un des trois horodatages sur chaque fichier sous Linux (plus à ce sujet plus tard). Plus précisément, je me suis demandé s'il valait toujours la peine de désactiver atime
dans les systèmes Linux plus récents. Depuis atime
est mis à jour à chaque accès au fichier, j'ai cru comprendre que cela avait un impact significatif sur les performances du système.
J'ai récemment mis à jour mon ordinateur vers Fedora 32 et désactivé atime
sur mon système mis à niveau par habitude. Mais en avais-je encore besoin ? J'ai décidé d'approfondir la question. Voici ce que j'ai trouvé.
Un peu sur les horodatages de fichiers
Pour comprendre noatime
, vous devez prendre du recul et comprendre certaines choses sur les systèmes de fichiers Linux et comment le noyau applique les horodatages aux fichiers et répertoires. Vous connaissez probablement déjà la date de dernière modification des fichiers et des répertoires ; vous pouvez le voir dans un ls -l
liste de répertoires (longue) ou si vous regardez les détails du fichier dans un gestionnaire de fichiers. Mais dans les coulisses, le noyau Linux suit plusieurs horodatages sur les fichiers et les répertoires :
- Lorsque le fichier a été modifié pour la dernière fois (
mtime
) - Lorsque le fichier a été modifié pour la dernière fois (
ctime
) - Lorsque le fichier a été consulté pour la dernière fois (
atime
)
Vous pouvez utiliser la stat
commande pour voir ces détails pour un fichier ou un répertoire. Voici un exemple de /etc/fstab
fichier sur un de mes serveurs de test :
$ stat fstab
File: fstab
Size: 261 Blocks: 8 IO Block: 4096 regular file
Device: b303h/45827d Inode: 2097285 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:etc_t:s0
Access: 2019-04-25 21:10:18.083325111 -0500
Modify: 2019-05-16 10:46:47.427686706 -0500
Change: 2019-05-16 10:46:47.434686674 -0500
Birth: 2019-04-25 21:03:11.840496275 -0500
À partir de la sortie, vous pouvez voir que ce fichier a été créé le 25 avril 2019, lorsque j'ai installé le système. Mon /etc/fstab
le fichier a été modifié pour la dernière fois le 16 mai 2019 et tous les autres attributs ont été modifiés à peu près au même moment.
Si je copie /etc/fstab
à un nouveau fichier, les dates changent, indiquant qu'il s'agit d'un nouveau fichier :
$ sudo cp fstab fstab.bak
$ stat fstab.bak
File: fstab.bak
Size: 261 Blocks: 8 IO Block: 4096 regular file
Device: b303h/45827d Inode: 2105664 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:53:58.443659981 -0500
Birth: 2020-05-12 17:53:58.442659986 -0500
Mais si je renomme simplement le fichier sans changer son contenu, Linux ne met à jour que l'heure de modification du fichier :
$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
File: fstab.tmp
Size: 261 Blocks: 8 IO Block: 4096 regular file
Device: b303h/45827d Inode: 2105664 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:54:24.576508232 -0500
Birth: 2020-05-12 17:53:58.442659986 -0500
Ces horodatages sont très utiles pour certains programmes Unix. Par exemple, biff est un programme qui vous avertit lorsque vous avez un nouveau message électronique. Vous ne voyez pas beaucoup de gens utiliser biff ces jours-ci, mais à l'époque où les boîtes aux lettres étaient locales sur votre système, biff était assez courant.
Plus de ressources Linux
- Aide-mémoire des commandes Linux
- Aide-mémoire des commandes Linux avancées
- Cours en ligne gratuit :Présentation technique de RHEL
- Aide-mémoire sur le réseau Linux
- Aide-mémoire SELinux
- Aide-mémoire sur les commandes courantes de Linux
- Que sont les conteneurs Linux ?
- Nos derniers articles Linux
Comment un programme sait-il si vous avez de nouveaux messages dans votre boîte de réception ? Biff compare l'heure de la dernière modification (lorsque le fichier de la boîte de réception a été mis à jour avec un nouvel e-mail) et l'heure du dernier accès (la dernière fois que vous avez lu votre e-mail). Si Modifié est plus récent que Accédé, alors biff sait qu'un e-mail est arrivé depuis votre dernière lecture d'e-mail et vous en informe. Le client de messagerie Mutt fait quelque chose de similaire pour vous alerter lorsque de nouveaux messages arrivent.
Cette heure de dernier accès est également utile si vous devez effectuer des statistiques sur le système de fichiers et ajuster les performances. Sur les grands systèmes Linux, les administrateurs peuvent avoir besoin de savoir à quoi ils accèdent afin de pouvoir régler le système de fichiers de manière appropriée.
Mais la plupart des programmes modernes n'ont plus besoin de l'heure du dernier accès, il y a donc eu des arguments pour ne pas l'utiliser. En 2007, Linus Torvalds et plusieurs autres développeurs du noyau ont discuté de atime
et ses problèmes de performance. Le développeur du noyau Linux Ingo Molnár a fait cette observation à propos de atime
et le système de fichiers ext3 :
C'est un peu bizarre que chaque poste de travail et serveur Linux soit affecté par un ralentissement notable des performances d'E/S en raison des mises à jour constantes d'atime, alors qu'il n'y a que deux vrais utilisateurs :tmpwatch [qui peut être configuré pour utiliser ctime donc ce n'est pas un gros problème] et quelques outils de sauvegarde. (Ok, et notifier par courrier aussi, je suppose.) Sur des dizaines de milliers d'applications.
Mais les gens utilisent encore certains programmes qui en ont besoin et suppriment atime
casserait ces programmes utilisateur. Et la règle dans le développement du noyau Linux est de ne pas casser l'espace utilisateur.
Le compromis relatime
Les distributions Linux incluent de nombreuses applications logicielles et les utilisateurs peuvent télécharger et installer d'autres programmes en fonction de leurs besoins particuliers. C'est le principal avantage d'un système d'exploitation open source ! Mais cela rend les choses plus difficiles pour régler les performances de votre système de fichiers. Avez-vous besoin de atime
, ou sa suppression va-t-elle casser quelque chose sur votre système ?
En guise de compromis, les développeurs du noyau Linux ont implémenté une nouvelle méthode :relatime
est une mesure de performance légèrement différente qui vise à équilibrer les performances avec la compatibilité. Le mount
la page de manuel dit ceci à propos de relatime
:
L'heure d'accès n'est mise à jour que si l'heure d'accès précédente était antérieure à l'heure de modification ou de changement actuelle. … Depuis Linux 2.6.30, le noyau adopte par défaut le comportement fourni par cette option (sauf si noatime a été spécifié) … De plus, depuis Linux 2.6.30, l'heure du dernier accès au fichier est toujours mise à jour si elle date de plus d'un jour.
En bref :les systèmes Linux modernes (depuis Linux 2.6.30, sorti en 2009) utilisent déjà relatime
, ce qui devrait vous donner une amélioration très rapide des performances. Cela signifie que vous n'avez pas besoin de modifier votre /etc/fstab
fichier et peut s'appuyer sur le relatime
noyau par défaut.
Améliorer les performances du système avec noatime
Mais si vous cherchez à modifier votre système pour obtenir des performances maximales, désactivez atime
est toujours une option valable en 2020.
Ce réglage des performances n'est peut-être pas très perceptible sur les disques modernes très rapides (comme NVME ou un SSD rapide), mais il y a quand même un petit coup de pouce.
Si vous savez que vous n'utilisez pas de logiciel nécessitant atime
, vous pouvez alors obtenir une légère amélioration des performances en définissant noatime
dans votre /etc/fstab
dossier. Cela indique au noyau de ne pas suivre l'heure du dernier accès, évitant ce petit impact sur les performances pour mettre à jour en permanence atime
dans le système de fichiers. Ajouter noatime
en option sur vos systèmes de fichiers Linux, généralement après l'entrée par défaut :
/dev/mapper/fedora_localhost--live-root / ext4 defaults,noatime,x-systemd.device-timeout=0 1 1
UUID=be37c451-915e-4355-95c4-654729cf662a /boot ext4 defaults,noatime 1 2
UUID=C594-12B1 /boot/efi vfat umask=0077,shortname=winnt 0 2
/dev/mapper/fedora_localhost--live-home /home ext4 defaults,noatime,x-systemd.device-timeout=0 1 2
/dev/mapper/fedora_localhost--live-swap none swap defaults,x-systemd.device-timeout=0 0 0
Cela prendra effet au prochain redémarrage.