Comment et pourquoi l'option noatime améliore les performances des systèmes Linux

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

Comment et pourquoi l'option noatime améliore les performances des systèmes Linux
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 :

  1. Lorsque le fichier a été modifié pour la dernière fois (mtime)
  2. Lorsque les propriétés et les métadonnées du fichier ont été modifiées pour la dernière fois (ctime)
  3. Lorsque le fichier a été accédé pour la dernière fois (atime)
  4. 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 -0500

Ici, 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 -0500

Mais 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 -0500

Ces 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. biff, 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 0

Les 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 des serveurs fiables 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 !

Comment et pourquoi l'option noatime améliore les performances des systèmes Linux

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster