Aller au contenu principal
Sujet: SSD externe, TRIM et données SMART (Lu 523 fois) sujet précédent - sujet suivant

SSD externe, TRIM et données SMART

Bonsoir,

À la faveur des soldes je viens d'acquérir un SSD externe. Un Samsung T7 1 To qui ne brille pas par ses performances mais je m'en fiche (formaté d'origine en exFAT soit dit en passant).

De retour chez moi je me suis tout à coup interrogé sur un point auquel je n'avais pas pensé lors de l'achat. Et le TRIM avec ces SSDs externes?

trim (mot anglais pouvant signifier : réduire, tailler, bien arranger…) est, en informatique, une commande qui permet à un système d’exploitation d'indiquer à un contrôleur de stockage de type mémoire flash (SSD) quels blocs de données ne sont plus utilisés et peuvent donc être effacés. Cette commande améliore les performances d'accès aux SSD.

Pour les SSDs internes, pas de souci, openSUSE s'occupe de ça périodiquement (par défaut c'est une fois par semaine). On peut le vérifier avec cette commande :

systemctl status fstrim.timer

Pour mon SSD externe je me suis dit que je pouvais lancer la commande manuellement comme ça :

sudo fstrim -v /run/media/chumi/T7

Je ne me souviens plus exactement du retour de la commande, mais non, ce n'était pas possible (fstrim ne peut pas être lancé sur ce périphérique ou quelque chose comme ça). Pour l'exprimer plus savamment, mon SSD portable n’était pas initialisé dans le noyau avec le support TRIM (ce n'est pas de moi  :)) ).

Du coup j'ai fait quelques recherches et voici ce que j'ai principalement consulté :


Et à présent la solution que j'ai appliquée, non sans avoir préalablement bien épluché les commandes du Wiki ArchLinux.

En gros c'est une traduction du HowTo Manjaro . Elle règle mon problème et elle fonctionne probablement pour un certain nombre de SSD externes récalcitrants au TRIM mais elle n'est peut-être pas universelle.

Identifier le VendorID et le ProductID du SSD :

lsusb

Exemple avec un Samsung T7, le retour de commande donne (entre autres lignes) :

Bus 004 Device 002: ID 04e8:4001 Samsung Electronics Co., Ltd PSSD T7

Nous voyons ID 04e8:4001. Le VendorID est la première valeur, 04e8, et le ProductID est la seconde, 4001. Noter ces valeurs.

Créer une règle udev :

sudo nano /etc/udev/rules.d/50-usb-ssd-trim.rules

Copier ce qui suit avec vos valeurs ID, celles que vous avez notées précédemment :

ACTION=="add|change", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="4001", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"

Et enregister le fichier bien sûr.

Il faudra redémarrer le système pour cette règle udev soit prise en compte.

Après quoi on pourra lancer la commande fstrim sur le SSD portable (adapter le chemin du point de montage à votre installation) :

sudo fstrim -v /run/media/user/mountpoint

Il devrait suffire de lancer cette commande une fois par semaine ou une fois par mois selon l’usage du SSD.

Pour les SSDs portable chiffrés avec LUKS, c'est un autre cas.

Récupérer l’ID LUKS avec la commande (remplacer sdx par le code de votre SSD, sdd, sde, ect.) :

lsblk --discard /dev/sdx

Le retour de commande donne par exemple :

NAME                                          DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sdc                                                  0      512B       4G         0
└─sdc1                                               0      512B       4G         0
  └─luks-79289eda-1aba-4799-adfa-ae3784460a80        0        0B       0B         0

Noter l’ID LUKS et activer le TRIM comme suit, avec la valeur ID LUKS que vous avez notée :

sudo cryptsetup --allow-discards --persistent refresh luks-79289eda-1aba-4799-adfa-ae3784460a80

On peut créer une règle udev pour ce cas mais à la fin du HowTo Manjaro je n'ai pas compris ce qu'il faudrait exactement mettre dedans.

Un autre problème maintenant : les données SMART (comment se porte mon SSD portable?)

Selon tel ou tel SSD externe la commande suivante pourrait ne renvoyer que peu voire très peu d'informations :

sudo smartctl -a /dev/sdx

En cause, entre autres, les différents ponts USB adoptés par les différents constructeurs  :'(

Cette lecture m'a un peu éclairé à ce sujet : How to read SMART drive health status of Samsung Portable SSD T7 Shield (and compile smartmontools 7.4)

Bref, il faut peut-être pour certains SSDs externes adapter la commande smartctl.

La commande suivante permettrait de détecter le fameux pont qui empêche de circuler  :))

sudo smartctl -- scan

L'auteur donne cet exemple de retour de commande :

/dev/sde -d sntasmedia # /dev/sde [USB NVMe ASMedia], périphérique NVMe

Et il en déduit la commande smartctl qui va bien :

sudo smartctl -a /dev/sde -d sntasmedia

Bon, dans son cas il lui a été nécessaire de compiler une version plus récente de smartmontools. Mais disposer de la dernière version n'est peut-être pas toujours nécessaire (sur TW ça va de ce côté là  ;) )

Pour mon Samsung T7 j'ai trouvé un moyen simple d'avoir des données SMART plus lisibles que les infos renvoyées par smartcl. J'ai téléchargé l'appli Samsung Magician sur mon smartphone Android (et j'ai connecté mon SSD au tél bien sûr). Et ça donne ça :



Une bonne prise de tête quand même ce SSD externe  :o