L'actualisation de atime impacte les performances du système. Que se passe-t-il et que faire à ce sujet ? Lisez l'article.

Chaque fois que je mets à jour Linux sur mon ordinateur personnel, je dois résoudre certaines tâches. Au fil des ans, cela est devenu une habitude : je fais des sauvegardes de mes fichiers, j'efface le système, j'installe tout à zéro, je récupère mes fichiers, puis je réinstalle mes applications préférées. Je personnalise également les paramètres du système. Parfois, cela prend trop de temps. Récemment, je me suis demandé si j'avais vraiment besoin de ce tracas.
atime — l'une des trois horodatages pour les fichiers dans Linux (plus de détails à ce sujet plus tard). En particulier, je me suis demandé s'il valait toujours la peine de désactiver atime dans les versions plus récentes de Linux. Étant donné que atime est mis à jour chaque fois qu'un fichier est accédé, j'ai compris qu'il a un impact significatif sur les performances du système.
Récemment, j'ai mis à niveau vers Fedora 32 et par habitude, j'ai commencé par désactiver atime. Je me suis demandé : en ai-je vraiment besoin ? J'ai décidé d'étudier la question et voilà ce que j'ai découvert.
Un peu sur les horodatages de fichiers
Pour comprendre, vous devez faire un pas en arrière et vous rappeler quelques éléments sur les systèmes de fichiers Linux et comment le noyau attribue des horodatages aux fichiers et répertoires. Vous pouvez voir la date de la dernière modification des fichiers et des répertoires en exécutant la commande ls -l (long) ou simplement en consultant les informations à ce sujet dans le gestionnaire de fichiers. Mais en coulisses, le noyau Linux suit plusieurs horodatages pour les fichiers et les répertoires :
- Lorsque le fichier a été modifié pour la dernière fois (mtime)
- Lorsque les propriétés et les métadonnées du fichier ont été modifiées pour la dernière fois (ctime)
- Lorsque le fichier a été accédé pour la dernière fois (atime)
- Vous pouvez utiliser la commande stat, pour voir les données sur le fichier ou le répertoire. Voici un fichier /etc/fstab d'un de mes serveurs de test :
$ stat fstab
Fichier : fstab
Taille : 261 Blocs : 8 IO Bloc : 4096 fichier régulier
Appareil : b303h/45827d Inode : 2097285 Liens : 1
Accès : (0664/-rw-rw-r--) Uid : ( 0/ root) Gid : ( 0/ root)
Contexte : system_u:object_r:etc_t:s0
Accès : 2019-04-25 21:10:18.083325111 -0500
Modifier : 2019-05-16 10:46:47.427686706 -0500
Changer : 2019-05-16 10:46:47.434686674 -0500
Naissance : 2019-04-25 21:03:11.840496275 -0500Ici, on peut voir que ce fichier a été créé le 25 avril 2019, lorsque j'ai installé le système. Mon fichier /etc/fstab a été modifié pour la dernière fois le 16 mai 2019, et tous les autres attributs ont été changés à peu près à la même époque.
Si je fais une copie de /etc/fstab dans un nouveau fichier, les dates changent, indiquant qu'il s'agit d'un nouveau fichier :
$ sudo cp fstab fstab.bak
$ stat fstab.bak
Fichier : fstab.bak
Taille : 261 Blocs : 8 Bloc IO : 4096 fichier régulier
Dispositif : b303h/45827d Inode : 2105664 Liens : 1
Accès : (0644/-rw-r--r--) Uid : ( 0/ root) Gid : ( 0/ root)
Contexte : unconfined_u:object_r:etc_t:s0
Accès : 2020-05-12 17:53:58.442659986 -0500
Modification : 2020-05-12 17:53:58.443659981 -0500
Changement : 2020-05-12 17:53:58.443659981 -0500
Création : 2020-05-12 17:53:58.442659986 -0500Mais si je renomme simplement le fichier, sans changer son contenu, Linux ne mettra à jour que l'heure de modification du fichier :
$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
Fichier : fstab.tmp
Taille : 261 Blocs : 8 Bloc IO : 4096 fichier régulier
Dispositif : b303h/45827d Inode : 2105664 Liens : 1
Accès : (0644/-rw-r--r--) Uid : ( 0/ root) Gid : ( 0/ root)
Contexte : unconfined_u:object_r:etc_t:s0
Accès : 2020-05-12 17:53:58.442659986 -0500
Modification : 2020-05-12 17:53:58.443659981 -0500
Changement : 2020-05-12 17:54:24.576508232 -0500
Création : 2020-05-12 17:53:58.442659986 -0500Ces horodatages sont très utiles pour certaines programmes Unix. Par exemple, biff est un programme qui vous avertit de l'arrivée d'un nouveau message dans votre boîte mail. De nos jours, peu de gens l'utilisent. , mais à l’époque où les boîtes aux lettres étaient locales au système, biff était assez couramment utilisé.
Comment le programme sait-il si vous avez un nouveau courrier dans votre boîte de réception ? biff compare le temps de dernière modification (quand le fichier de courrier entrant a été mis à jour avec un nouveau message électronique) et le temps d'accès (la dernière fois que vous avez lu votre courrier électronique). Si la modification a eu lieu après l'accès, biff comprendra qu'un nouveau courrier est arrivé et vous en informera. Le client de messagerie Mutt fonctionne à peu près de la même manière.
L'horodatage du dernier accès est également utile si vous devez collecter des statistiques sur l'utilisation du système de fichiers et ajuster les performances. Les administrateurs système doivent savoir à quels objets l'accès est effectué pour configurer le système de fichiers en conséquence.
Mais la plupart des programmes modernes n'ont plus besoin de cet horodatage, c'est pourquoi une proposition a été faite de ne plus l'utiliser. En 2007, Linus Torvalds et plusieurs autres développeurs du noyau ont discuté de l'atime dans le contexte des problèmes de performance. Le développeur du noyau Linux Ingo Molnar a fait cette remarque sur atime et le système de fichiers ext3 :
«Il est assez étrange que chaque bureau et serveur Linux souffre d'une baisse significative des performances d'entrée-sortie à cause des mises à jour constantes de atime, bien qu'il n'y ait que deux utilisateurs réels : tmpwatch [qui peut être configuré pour utiliser ctime, donc ce n'est pas un gros problème] et certains outils de sauvegarde».
Mais les gens continuent d'utiliser certains programmes qui nécessitent cette balise. Donc, la suppression de atime va perturber leur fonctionnement. Les développeurs du noyau Linux ne devraient pas restreindre la liberté de l'utilisateur.
Solution de Salomon
De nombreuses applications sont incluses dans les distributions Linux, et de plus, les utilisateurs peuvent télécharger et installer d'autres programmes selon leurs besoins. C'est un avantage clé des systèmes d'exploitation open source. Mais cela complique l'optimisation des performances de votre système de fichiers. La suppression de composants gourmands en ressources peut perturber le fonctionnement du système.
En tant que compromis, les développeurs du noyau Linux ont introduit une nouvelle option relaytime, qui vise à fournir un équilibre entre performance et compatibilité :
atime n'est mis à jour que si le dernier temps d'accès est inférieur au temps actuel de modification ou de changement de statut… À partir de Linux 2.6.30, le noyau utilise cette option par défaut (à moins que noatime ne soit spécifié)… De plus, à partir de Linux 2.6.30, le dernier temps d'accès à un fichier est toujours mis à jour s'il a plus d'un jour.
Les systèmes Linux modernes (depuis Linux 2.6.30, publié en 2009) utilisent déjà relaytime, ce qui devrait donner un véritable gain de performance. Cela signifie que vous n'avez pas besoin de configurer le fichier /etc/fstab, et avec relaytime, vous pouvez compter sur la valeur par défaut.
Amélioration des performances du système avec noatime
Mais si vous souhaitez configurer votre système pour obtenir des performances maximales, la désactivation de atime est toujours possible.
Le changement de performances peut ne pas être très perceptible sur des disques modernes très rapides (comme NVME ou Fast SSD), mais il y a un léger gain.
Si vous savez que vous n'utilisez pas de logiciel nécessitant atime, vous pouvez légèrement améliorer les performances en activant l'option noatime dans le fichier /etc /fstab. Après cela, le noyau ne mettra pas à jour atime en permanence. Utilisez l'option noatime lors du montage du système de fichiers :
/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 0Les changements prendront effet au prochain redémarrage.
En tant que publicité
Vous avez besoin d'un serveur pour héberger votre site ? Notre entreprise propose avec un paiement quotidien ou unique, chaque serveur est connecté à un canal Internet de 500 Mégabits et protégé gratuitement contre les attaques DDoS !
Source : habr.com
