FSTRIM disque NVME PCIE

Bonjour , j ’ aimerais savoir , comment sont pris en charge les disques NVME PCIE sur debian , comment verifier les données SMART de ces meme disques , comment sont gerées les commandes d’ ecriture lecture fstrim et verifier si tout est bien en ordre .

Aussi ce que le mode AHCI du BIOS pour la prise en charge de ce type de disque implique et si il ya un autre moyen de gerer ce disque .

j ’ ai bien lu quelques pages sur le sujet comme : SSDOptimization - Debian Wiki et
http://blog.neutrino.es/2013/howto-properly-activate-trim-for-your-ssd-on-linux-fstrim-lvm-and-dmcrypt/
optimal configuration of M.2 NVMe PCIe SSDs - Debian User Forums
Mais soit ca n’ est pas assez precis , soit pas d’ actualités , ou pas pour le bon OS , bref pas evident dee s ’ y retrouver dans ce flot d ’ infos …

Le probleme etant , que la commande fstrim n ’ a l’ air de fonctionner que manuellement et que je rencontre souvent des erreurs au demarrage des differents systemes sur ce disque .

voici quelques infos surement tres basique :

iznobe@iznobe-PC:~$ lsblk -o TYPE,SIZE,NAME,FSTYPE,UUID
TYPE   SIZE NAME        FSTYPE UUID
disk   3,6T sda                
part   3,4T ├─sda1      ext4   4f8cc284-cd84-4eeb-b412-7539f81664c4
part 195,3G ├─sda2      ntfs   63A32BC117F67B6A
part  14,1G ├─sda3      ext3   89f71135-b459-4c74-bfa3-e9d27df4369d
part  19,5G ├─sda4      ext4   eb4da8d1-c3ea-4788-9692-e9e23690066e
part  19,5G └─sda5      ext4   45eb6a28-099b-4380-82b1-3116e53ef83a
disk   7,3T sdb                
part   6,8T ├─sdb1      ext4   1db8a5b3-ff12-4d31-9463-b188ffefe43b
part 520,3G └─sdb2      ext4   d9dc9f4e-a24a-4573-9465-13711480f272
disk   2,7T sdc                
part   2,7T ├─sdc3      ext4   01c9b796-0869-4ff9-a2a1-6c0f56ed5257
part    32G └─sdc4      swap   61218fe2-0bd1-4ada-9dd3-5ec996a02456
disk 465,8G sdd                
part 465,8G └─sdd1      ext4   8fa551b3-2c21-46cd-982f-7e5c42fea7cc
disk 476,9G nvme0n1            
part   125G ├─nvme0n1p1 ntfs   08CCB0D8CCB0C0EC
part   637M ├─nvme0n1p2 ntfs   E49A115A9A112B16
part   100M ├─nvme0n1p3 vfat   C071-9050
part   535M ├─nvme0n1p4 ntfs   0E52DDB352DD9FAF
part  30,5G ├─nvme0n1p5 ext4   eb18366b-2ac9-4a7e-8f93-ba2caa30e90e
part  49,4G ├─nvme0n1p6 ext4   06bc0f51-50e8-4ed4-8090-903acdb7df3f
part  49,3G └─nvme0n1p7 ext4   8ab22881-60b3-47aa-a0bf-54c292afae81
iznobe@iznobe-PC:~$

Bonjour,
https://www.smartmontools.org/wiki/NVMe_Support

Smartmontools supports NVMe starting from version 6.5. Please note, that currently NVMe support is considered as experimental. Currently implemented features:

  • Basic information about controller name, firmware, capacity ( smartctl -i )
  • Controller and namespace capabilities ( smartctl -c )
  • SMART overall-health self-assessment test result and warnings ( smartctl -H )
  • NVMe SMART attributes ( smartctl -A )
  • NVMe error log ( smartctl -l error[,NUM] )
  • Ability to fetch any nvme log ( smartctl -l nvmelog,N,SIZE )
  • The smartd daemon tracks health ( -H ), error count ( -l error ) and temperature ( -W DIFF,INFO,CRIT )

Bonjour,

Les liens que tu cotes sont en effet plus du tout d’actualité.
Tu n’as pas à te soucier de fstrim qui est lancé de manière hebdomadaire via un timer ssytemd.

Bonsoir , alors dans ce cas , pourquoi lorsque je lance la commande :
sudo fstrim -v /ma/partition environ une fois par mois , j ’ obtiens des resultats depassant les 40 Go d’ octets retaillés .
Pourquoi je suis obligé de faire tous les 2 mois des fsck de mes partitions de ce disque sinon plus aucun des systemes installés dessus ne demarre et apres le POST , il apparait un message demandant de faire manuellement ce fsck alors que j’ arrete mon ordi proprement et ce depuis que j ’ ai mon ordinateur .
Sur les autres HDD , aucun probleme a signaler .
Doit bien y avoir une raison aussi obscure soit-elle .
le smartctl ( du moins ma connaissance ) n 'affiche pas grand chose de special :

iznobe@iznobe-PC:~$ sudo smartctl -s on -a /dev/nvme0
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.13.0-22-generic] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Number:                       ADATA SX8200PNP
Serial Number:                      2K0320065219
Firmware Version:                   42A4SANA
PCI Vendor/Subsystem ID:            0x1cc1
IEEE OUI Identifier:                0x000000
Controller ID:                      1
NVMe Version:                       1.3
Number of Namespaces:               1
Namespace 1 Size/Capacity:          512 110 190 592 [512 GB]
Namespace 1 Utilization:            291 546 562 560 [291 GB]
Namespace 1 Formatted LBA Size:     512
Local Time is:                      Sat Dec  4 20:47:45 2021 CET
Firmware Updates (0x14):            2 Slots, no Reset required
Optional Admin Commands (0x0017):   Security Format Frmw_DL Self_Test
Optional NVM Commands (0x005f):     Comp Wr_Unc DS_Mngmt Wr_Zero Sav/Sel_Feat Timestmp
Log Page Attributes (0x0b):         S/H_per_NS Cmd_Eff_Lg Telmtry_Lg
Maximum Data Transfer Size:         64 Pages
Warning  Comp. Temp. Threshold:     75 Celsius
Critical Comp. Temp. Threshold:     80 Celsius

Supported Power States
St Op     Max   Active     Idle   RL RT WL WT  Ent_Lat  Ex_Lat
 0 +     9.00W       -        -    0  0  0  0        0       0
 1 +     4.60W       -        -    1  1  1  1        0       0
 2 +     3.80W       -        -    2  2  2  2        0       0
 3 -   0.0450W       -        -    3  3  3  3     2000    2000
 4 -   0.0040W       -        -    4  4  4  4    15000   15000

Supported LBA Sizes (NSID 0x1)
Id Fmt  Data  Metadt  Rel_Perf
 0 +     512       0         0

=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        29 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    1%
Data Units Read:                    8 053 640 [4,12 TB]
Data Units Written:                 7 427 577 [3,80 TB]
Host Read Commands:                 69 441 942
Host Write Commands:                65 253 784
Controller Busy Time:               1 820
Power Cycles:                       561
Power On Hours:                     6 051
Unsafe Shutdowns:                   28
Media and Data Integrity Errors:    0
Error Information Log Entries:      0
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Temperature Sensor 2:               29 Celsius
Temperature Sensor 3:               34 Celsius
Temperature Sensor 4:               24 Celsius
Temperature Sensor 5:               24 Celsius
Temperature Sensor 6:               29 Celsius
Thermal Temp. 1 Transition Count:   3
Thermal Temp. 1 Total Time:         80

Error Information (NVMe Log 0x01, 16 of 256 entries)
No Errors Logged

iznobe@iznobe-PC:~$

C’est normal si la commande fstrim n’a pas été lancée depuis quelques jours. Il faut vérifier son dernier lancement avec :

systemctl list-timers

Tu peux aussi regarder dans les logs :

sudo zgrep fstrim /var/log/syslog*

Encore une fois il n’y a normalement aucune raison de lancer des commandes fstrim manuellement.

Le problème de corruption de système de fichiers est a priori indépendant. Vu qu’il y plusieurs partitions et systèmes de fichiers sur ce disque, il faudrait savoir sur quelle partition du disque il se produit.

Bonjour , a priori le service parait bien activé :

NEXT                        LEFT          LAST                        PASSED             UNIT                           ACTIVATES                       
Sun 2021-12-05 10:23:07 CET 2min 53s left n/a                         n/a                update-notifier-download.timer update-notifier-download.service
Sun 2021-12-05 10:33:04 CET 12min left    n/a                         n/a                systemd-tmpfiles-clean.timer   systemd-tmpfiles-clean.service
Sun 2021-12-05 11:03:55 CET 43min left    n/a                         n/a                ua-timer.timer                 ua-timer.service
Sun 2021-12-05 11:04:05 CET 43min left    Sat 2021-12-04 14:20:13 CET 20h ago            apt-daily-upgrade.timer        apt-daily-upgrade.service
Sun 2021-12-05 15:51:05 CET 5h 30min left Sat 2021-12-04 13:23:13 CET 20h ago            motd-news.timer                motd-news.service
Sun 2021-12-05 16:28:37 CET 6h left       Sat 2021-12-04 20:53:13 CET 13h ago            fwupd-refresh.timer            fwupd-refresh.service
Sun 2021-12-05 17:36:00 CET 7h left       Sat 2021-12-04 19:43:18 CET 14h ago            plocate-updatedb.timer         plocate-updatedb.service
Sun 2021-12-05 21:20:48 CET 11h left      Thu 2021-12-02 22:07:23 CET 2 days ago         apt-daily.timer                apt-daily.service
Mon 2021-12-06 00:00:00 CET 13h left      Sun 2021-12-05 10:18:08 CET 2min 5s ago        logrotate.timer                logrotate.service
Mon 2021-12-06 00:00:00 CET 13h left      Sun 2021-12-05 10:18:08 CET 2min 5s ago        man-db.timer                   man-db.service
Mon 2021-12-06 01:11:34 CET 14h left      Tue 2021-11-30 13:17:54 CET 4 days ago         fstrim.timer                   fstrim.service
Mon 2021-12-06 20:17:45 CET 1 day 9h left Wed 2021-11-17 19:57:05 CET 2 weeks 3 days ago update-notifier-motd.timer     update-notifier-motd.service
Sun 2021-12-12 03:10:26 CET 6 days left   Sun 2021-12-05 10:18:53 CET 1min 20s ago       e2scrub_all.timer              e2scrub_all.service
n/a                         n/a           Sun 2021-12-05 10:19:10 CET 1min 3s ago        anacron.timer                  anacron.service

14 timers listed.
Pass --all to see loaded but inactive timers, too.

pour les logs :

iznobe@iznobe-PC:~$ sudo zgrep fstrim /var/log/syslog*
[sudo] Mot de passe de iznobe : 
/var/log/syslog.1:Nov 22 14:18:26 iznobe-PC fstrim[2218]: /boot/efi: 58,9 MiB (61716480 bytes) trimmed on /dev/nvme0n1p3
/var/log/syslog.1:Nov 22 14:18:26 iznobe-PC fstrim[2218]: /: 32,8 GiB (35210321920 bytes) trimmed on /dev/nvme0n1p7
/var/log/syslog.1:Nov 22 14:18:26 iznobe-PC systemd[1]: fstrim.service: Deactivated successfully.
/var/log/syslog.1:Nov 22 14:18:26 iznobe-PC systemd[1]: fstrim.service: Consumed 1.215s CPU time.
/var/log/syslog.1:Nov 22 14:29:54 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.1:Nov 22 18:08:47 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.1:Nov 23 21:34:10 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.1:Nov 23 23:02:16 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.1:Nov 24 09:28:02 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.1:Nov 24 14:29:38 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.2.gz:Nov 14 22:58:10 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.2.gz:Nov 15 13:59:07 iznobe-PC fstrim[2081]: /boot/efi: 58,9 MiB (61718528 bytes) trimmed on /dev/nvme0n1p3
/var/log/syslog.2.gz:Nov 15 13:59:07 iznobe-PC fstrim[2081]: /: 33,7 GiB (36179230720 bytes) trimmed on /dev/nvme0n1p7
/var/log/syslog.2.gz:Nov 15 13:59:07 iznobe-PC systemd[1]: fstrim.service: Deactivated successfully.
/var/log/syslog.2.gz:Nov 15 13:59:07 iznobe-PC systemd[1]: fstrim.service: Consumed 1.202s CPU time.
/var/log/syslog.2.gz:Nov 15 14:11:55 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.2.gz:Nov 15 23:59:58 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.2.gz:Nov 16 14:31:21 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.2.gz:Nov 17 22:55:08 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.2.gz:Nov 19 01:37:11 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.2.gz:Nov 19 10:35:50 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.2.gz:Nov 19 18:31:39 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.2.gz:Nov 19 18:43:54 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.2.gz:Nov 20 21:24:03 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.2.gz:Nov 20 23:06:58 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov  7 08:56:42 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov  7 10:41:16 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov  7 11:36:58 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov  7 11:38:16 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov  7 11:39:10 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov  7 18:54:00 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov  7 19:14:24 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov  9 08:32:29 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov  9 22:08:29 iznobe-PC fstrim[2011]: /boot/efi: 58,9 MiB (61718528 bytes) trimmed on /dev/nvme0n1p3
/var/log/syslog.3.gz:Nov  9 22:08:29 iznobe-PC fstrim[2011]: /: 33,9 GiB (36386959360 bytes) trimmed on /dev/nvme0n1p7
/var/log/syslog.3.gz:Nov  9 22:08:29 iznobe-PC systemd[1]: fstrim.service: Deactivated successfully.
/var/log/syslog.3.gz:Nov  9 22:08:29 iznobe-PC systemd[1]: fstrim.service: Consumed 1.203s CPU time.
/var/log/syslog.3.gz:Nov 10 00:21:11 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov 10 22:02:47 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov 11 09:51:02 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov 11 14:26:34 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov 11 15:14:54 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov 11 15:33:31 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov 11 15:35:11 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov 11 16:07:54 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov 11 20:09:42 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov 11 20:11:26 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov 11 20:12:27 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov 11 20:13:31 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov 11 21:16:28 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov 11 22:27:09 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov 12 08:06:05 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov 12 23:59:43 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.3.gz:Nov 13 23:23:46 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.4.gz:Oct 31 11:10:50 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.4.gz:Oct 31 22:10:13 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.4.gz:Oct 31 22:11:15 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.4.gz:Nov  1 18:38:13 iznobe-PC fstrim[2044]: /boot/efi: 62,6 MiB (65630208 bytes) trimmed on /dev/nvme0n1p3
/var/log/syslog.4.gz:Nov  1 18:38:13 iznobe-PC fstrim[2044]: /: 30,4 GiB (32639942656 bytes) trimmed on /dev/nvme0n1p7
/var/log/syslog.4.gz:Nov  1 18:38:13 iznobe-PC systemd[1]: fstrim.service: Deactivated successfully.
/var/log/syslog.4.gz:Nov  1 18:38:13 iznobe-PC systemd[1]: fstrim.service: Consumed 1.308s CPU time.
/var/log/syslog.4.gz:Nov  1 22:51:48 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.4.gz:Nov  2 21:23:09 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.4.gz:Nov  3 18:13:47 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.4.gz:Nov  3 18:16:33 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.4.gz:Nov  3 23:43:33 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.4.gz:Nov  4 09:25:52 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.4.gz:Nov  4 09:31:03 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.4.gz:Nov  4 19:23:53 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.4.gz:Nov  5 20:14:27 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.4.gz:Nov  5 20:26:41 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
/var/log/syslog.4.gz:Nov  6 06:41:45 iznobe-PC systemd[1]: fstrim.timer: Deactivated successfully.
iznobe@iznobe-PC:~$

Pour les corruptions , je passe en revue toutes les partitions lorsque cela arrive , comme ca je suis sur d ’ avoir fait la bonne . D’ ailleurs souvent , il trouve des erreurs qu ’ il corrige sur plusieurs partitions .

On voit bien que fstrim est exécuté chaque semaine sur les partitions /dev/nvme0n1p3 et /dev/nvme0n1p7. Tout du moins jusqu’au 22 novembre, ce que montre les logs.

Si cela arrive systématiquement sur plusieurs partitions c’est peut être un problème spécifique au disque NVMe ou à sa connexion : s’assurer qu’il est bien enfiché dans le port PCIE et que la norme du port est bien en adéquation avec celle du disque.
Il faut aussi vérifier si le problème se produit aléatoirement ou si c’est systématiquement après avoir utilisé Windows( je vois des partitions NTFS).

Il y a un outil en ligne de commande spécifique pour interroger les disques NVMe : Debian -- Details of package nvme-cli in bullseye

j ’ utilise windows tres peu souvent , je dirais environ une fois par mois .

Pour verifier si le port et sa norme ainsi que le disque sont en cohesion , je ne sais pas trop comment verifier , lors de l’ achat cela me semblait coherent .
Ma carte mere est une MSI Z490 A PRO : Z490-A PRO , avec BIOS a jour , et le disque est un ADATA ! SSD M.2 2280 PCIe Gen3x4 XPG SX8200 Pro

Pour nvme-cli , j ’ ai deja installé ce paquet , je vais regarder cela de plus pres , merci et voir les infos que je peux en tiré .

Sur certaines machines, le contrôleur SATA peut être configuré dans un mode propriétaire (dénommé RAID, ou autre dénomination propriétaire du fabricant du chipset) qui fait apparaître le SSD NVMe comme un sous-périphérique du contrôleur SATA (lspci ne l’affiche plus), que le pilote nvme du noyau ne peut pas gérer (trop compliqué et pas assez fiable, donc le pilote se contente d’émettre un avertissement dans les logs du noyau). Dans ce cas, il faut configurer le contrôleur SATA en mode AHCI pour que le SSD NVMe puisse être géré par le pilote nvme. Evidemment ça ne va pas plaire à Windows s’il a été installé avec le mode propriétaire, mais il y a une procédure (hors sujet ici) pour lui faire avaler le changement.

Parce que tu as redémarré le système (ou plus exactement démonté le système de fichiers) depuis le dernier trim, donc fstrim réduit tout l’espace libre au lieu de réduire seulement les blocs libérés depuis le dernier trim.

1 J'aime