URL: https://linuxfr.org/users/rahan/journaux/le-mystere-des-disques-ssd-lents Title: Le mystère des disques SSD lents Authors: rahan Date: 2024年07月16日T22:28:02+02:00 License: CC By-SA Tags: ssd Score: 13 J'ai besoin de vos lumières car 2 disques SSD de mon NAS maison sont subitement devenus lents au bout d'un an et demi sans que j'arrive à comprendre la raison. # Configuration La machine est un NAS tournant sous Debian bookworm, équipé d'un CPU i5-9400 (2.9 GHz) et de 16 Mo de RAM. Elle dispose de 5 disques : - Un disque NVMe de 250 Go pour le système en ext4 (Samsung SSD 970 EVO Plus) - Deux disques durs de 8 To pour les données en btrfs raid1 (Seagate IronWolf) - Deux disques SSD de 2 To pour les services tournant sur le NAS en btrfs raid1 (Samsung SSD 870 QVO 2TB) Les disques SSD servent à stocker les données des services tournant sur le NAS dans des containers docker: nextcloud, home-assistant, dokuwiki, pihole, influxdb, grafana, jupyter, roundcube, grist, timelimit photoprism, uptime-kuma... Ils servent aussi pour les images de deux machines virtuelles faisant tourner FreeIPA sour RockyLinux et de serveur de fichier pour un raspberry-pi (LibreElec) qui boot sur le réseau local. Cette configuration tourne sans sourciller depuis 1 an et demi. Les serveurs SSD avaient été ajoutés car les disques durs avaient du mal à supporter les accès simultanés pour les machines virtuelles et les containers. # Début des ennuis Il y a une semaine je remarque sur mes graphiques grafana que les cpu ont une proportion importante du temps en iowait. Je m'apperçois qu'aux alentours du 8 juillet, les iowait sont passés subitement de environ 1 % à environ 8 %. Je suis un peu étonné car aucun changement n'est intervenu à ce moment et aucun des services ne semble avoir une charge anormale. Après des investigations plus poussées (`iostat`, `iotop`, `strace`...) j'arrive à isoler la source des ces iowait : les accès au système de fichier btrfs des disques SSD sans vraiment pointer vers un service en particulier. # Le temps des tests Tout d'abord, j'ai vérifié qu'aucun service n'était responsable à lui seul de cette nouvelle charge. En les éteignant successivement, on se rend facilement compte que l'augmentation des iowait ne peut pas être relié à un service en roue libre. Ayant eu des déboires dans le passés à le système btrfs sur des noyaux anciens lorsque le nombre de snapshot devenait trop important, je suis passé du kernel 6.1.0 (debian stable) à 6.7.12 (debian backport). Aucun impact. De toute façon, ce système de fichier à assez peu de snapshots. Deuxième suspect : l'oublie d'activer le Trim sur ce système de fichier via l'option `discard=async`. Je me dis que le firmware a du mal à trouver des secteurs libres même si seulement 600 Go sont utilisés sur les 1,8 To. Effectivement la commande `fstrim -v` met un temps fou à s’exécuter et annonce avoir libéré plus d'un To de données. Impact sur les iowait : aucun. Toujours suspicieux du système btrfs, je décide de passer en ext4 (sur un raid1 logiciel). Impact sur les iowait : aucun. Je me rend compte que je n'ai pas vraiment libéré les données (du point de vue du firmware) sur les disques lors du formatage. Je tente alors le [Security Erase](https://wiki.archlinux.org/title/Solid_state_drive/Memory_cell_clearing). Mais celà ne marche pas (bloqué par le BIOS), je tente alors sur un des deux disques la commande suivante : `blkdiscard`. Après une re-synchronisation de ce disque dans le raid : aucun impact sur les iowait. # Bilan des courses Je suis un peu à court d'idées quant à la raison de cette perte de performance subite. Je pense que faire un `blkdiscard` sur le second disque ne changera rien. Je ne vois qu'un défaut sur les disques SSD mais j'avoue l'avoir mauvaise de constater cette perte de performance en moins de 2 ans, surtout que les disques m'annoncent qu'ils ne sont qu'à environ 35 % de leur espérance de vie (*Wear_Leveling_Count*). Ce qui me surprend par dessus tout est l'apparition de ce problème sur les 2 disques à 48 heures d'intervalle. Je suis preneur d'idées pour retrouver les performances d'il y a 10 jours. # PS : plus de données techniques - iowait qui passe de 1 % à 8 % (moyenne) - loadavg qui passe de 0.3 à 1.3-2.5 - write_time multiplié par 10. D'abord sur 1 disque pendant 12 heures; retour à la normal pendant 20 heures; de nouveaux ce disque; rejoint par le second 28 heures plus tard. L'augmentation est soudaine : en moins d'une minute. - read_time inaffecté - écritures constantes avant et après : ~40 op/s / 1 Mo/s - lectures négligeables. - Absolument rien dans les logs - Température des disques raisonnable : 45°C - SMART tests (short et extended) sans erreur Des graphes pour illustrer : https://grafana.monte-stello.com/public-dashboards/c840519c184949768b736e48f7908de6