Restaurer les performances et estimer la durée de vie d’un disque SSD usagé?

70

Mon ancien disque SSD de 128 Go a maintenant environ un an et demi et je suis depuis passé à un autre disque.

Je voudrais nettoyer mon ancien SSD pour ...

  • restaurer ses performances à des niveaux presque nouveaux

  • le réhabiliter et lui donner généralement un bilan de santé

Comment puis-je faire cela?

Jeff Atwood
la source
4
Bien que cela ne couvre pas la restauration, vous pouvez trouver cet article intéressant pour éviter cela.
Tamara Wijsman
1
Je viens peut-être de le manquer, mais je n'ai pas vu que l'une des réponses ci-dessous était " cochée ". Dans le cas de cette question, je suis vraiment curieux de savoir ce qui est arrivé pour que votre travail soit "optimal". (Si vous vous en souvenez ...)
irrationnel John

Réponses:

56

Sous Linux, lancez simplement

hdparm --trim-sector-ranges start:count /dev/sda

en passant les plages de blocs que vous souhaitez TRIM au lieu de startet countet le périphérique SSD à la place /dev/sda. Il a l'avantage d'être rapide et de ne pas écrire de zéros sur le lecteur. Au lieu de cela, il envoie simplement des commandes TRIM au contrôleur SSD pour lui faire savoir que les données contenues dans ces blocs ne vous intéressent pas et qu'il peut librement supposer qu'elles ne sont pas utilisées dans son algorithme de récupération de place.

Vous devrez probablement exécuter cette commande en tant que root. Étant donné que cette commande est extrêmement dangereuse, car elle peut entraîner immédiatement une perte importante de données, vous devez également passer un --please-destroy-my-driveargument à hdparm(je ne l'ai pas ajouté à la ligne de commande pour éviter toute perte accidentelle de données provoquée par un copier-coller).

Dans la ligne de commande ci-dessus, /dev/sdadoit être remplacé par le périphérique SSD auquel vous souhaitez envoyer les commandes TRIM. startest l'adresse du premier bloc (secteur) à TRIM et countle nombre de blocs à marquer comme libres de cette adresse de départ. Vous pouvez transmettre plusieurs plages à la commande.

Après l'avoir personnellement fait avec hdparm v9.32 sur Ubuntu 11.04 sur mon ordinateur portable avec un Crucial RealSSD C300 de 128 Go, je dois signaler un problème: je ne pouvais pas passer le nombre total de blocs de disque (0: 250069680) à la plage . J'ai manuellement (essentiellement "recherché binaire" à la main) trouvé une valeur suffisamment grande pour que le nombre de blocs fonctionne (40000) et pu émettre des commandes TRIM sur une séquence de 40000 plages afin de libérer le disque entier. Il est possible de le faire avec un script shell simple comme celui-ci (testé sur Ubuntu 11.04 sous root):

 # fdisk -lu /dev/sda

 Disk /dev/sda: 128.0 GB, 128035676160 bytes
 255 heads, 63 sectors/track, 15566 cylinders, total 250069680 sectors
 ...  

pour effacer le lecteur entier, prenez le nombre total de secteurs et remplacez 250069680 par ce nombre dans la ligne suivante, puis exécutez (ajoutez --please-destroy-my-drive):

 # i=0; while [ $i -lt 250069680 ]; do echo $i:40000; i=$(((i+40000))); done \
 | hdparm --trim-sector-ranges-stdin /dev/sda

Et tu as fini! Vous pouvez essayer de lire le contenu brut du disque avec hexedit /dev/sdaavant et après et vérifier que le lecteur a supprimé les données.


Bien sûr, même si vous ne souhaitez pas utiliser Linux comme système d'exploitation principal de la machine, vous pouvez utiliser cette astuce en démarrant à partir d'un CD live et en l'exécutant sur le lecteur.

Mehrdad Afshari
la source
3
Excellente rédaction, mais cela ne fonctionnera malheureusement pas pour les disques SSD non TRIM. Pour cela, vous devrez aller un peu plus loin. Consultez le wiki de l' ATA sur kernel.org pour savoir comment procéder avec hdparm. Ce serait encore mieux si vous pouviez modifier votre entrée d'origine pour inclure cette information :)
James
"fstrim" est une version facile de ce qui précède (voir réponse séparée).
Bryce
@ Bryce, incorrect; TRIM est uniquement consultatif et destiné à des raisons de performances, pas de sécurité, ce qui signifie que le lecteur est libre d'ignorer la commande ou de différer l'effacement à une date ultérieure, comme le font la plupart des lecteurs.
Psusi
24

Tout d'abord, commençons par comprendre ce qui cause la dégradation des performances. Sans le savoir, beaucoup de gens suggéreront des solutions inadéquates (comme je le vois déjà). Le nœud de toute cette situation se résume essentiellement au fait suivant, cité dans Wikipedia . Rappelez-vous, c'est important:

Avec la mémoire flash NAND, les opérations de lecture et de programmation doivent être effectuées page par page, tandis que le déverrouillage et l'effacement doivent s'effectuer par blocs.

Les disques SSD sont constitués d'un flash NAND, et le flash est constitué de "blocs". Chaque bloc contient de nombreuses "pages". Par souci de simplicité, imaginons que nous venons d’acheter un nouveau disque SSD brillant contenant un seul bloc de mémoire, composé de 4 pages vides.

Par souci de clarté, je différencie les pages vides, les pages utilisées et les pages supprimées avec, 1 et X. L'important est qu'il existe une différence entre chacune d'elles du point de vue des contrôleurs! Ce n'est pas aussi simple que 1 et 0. Donc, pour commencer, les pages de notre nouveau disque ressemblent à ceci:

, ∅, ∅, ∅ (tous vides)

Maintenant, nous allons écrire des données sur le lecteur, qui sera finalement stocké dans cette première page, ainsi:

1,, ∅, ∅

Ensuite, nous écrivons un peu plus de données, mais cette fois-ci, il faut deux pages et finit par être stockées dans les 2ème et 3ème pages:

1, 1, 1,

Nous sommes à court d'espace! Nous décidons que nous n’avons pas vraiment besoin des données initiales que nous avons écrites, alors supprimons-les pour faire de la place.

X, 1, 1,

Enfin, nous devons stocker un autre grand ensemble de données qui consommera les deux pages restantes. C’est là que la performance se produit dans des entraînements sans ajustement !! Passant de notre dernier état à ceci:

1, 1, 1, 1

... nécessite plus de travail que la plupart des gens ne le réalisent. Encore une fois, cela est dû au fait que le flash ne peut être effacé que par blocs, et non par pages, ce que demande précisément la transition finale ci-dessus. Le différenciateur entre les disques SSD TRIM et non basés sur TRIM est le moment où le travail suivant est effectué!

Étant donné que nous devons utiliser une page vide et une page supprimée, le SSD doit d'abord lire le contenu du bloc entier dans un emplacement de stockage / mémoire externe, effacer le bloc d'origine, modifier le contenu, puis réécrire ce contenu dans le bloc. Ce n'est pas aussi simple qu'une "écriture", mais c'est maintenant devenu une "lecture-effacement-écriture". Il s’agit d’un grand changement, et le moment où nous écrivons beaucoup de données est probablement le moment le plus inopportun. Tout pourrait être évité si cette page "supprimée" était récupérée à l'avance, ce qui est précisément ce que TRIM est censé faire. Avec TRIM, le disque SSD récupère nos pages supprimées immédiatement après la suppression ou à un autre moment opportun, selon ce que les algorithmes TRIM jugent appropriés. L’important, c’est que avec TRIM, cela n’arrive pas lorsque nous sommes en train d’écrire!

Sans TRIM, nous ne pouvons finalement pas éviter le scénario ci-dessus car nous remplissons nos lecteurs avec des données. Heureusement, certains SSD plus récents vont au-delà de TRIM et font la même chose que TRIM en arrière-plan au niveau matériel sans les commandes ATA nécessaires (certains appellent ce garbage collection). Mais pour ceux d'entre nous qui ont la malchance de ne pas en avoir non plus, il est important de savoir que l' écriture de zéros sur l'intégralité du lecteur n'est pas suffisante pour récupérer les performances d'origine !!!!! Écrire tous les zéros sur le lecteur n'indique pas au contrôleur que la page flash est libre d'écrire. La seule façon de faire cela sur un lecteur qui ne prend pas en charge TRIM consiste à appeler la commande ATA secure erase sur votre lecteur à l'aide d'un outil tel que HDDErase (via Wayback Machine) .

Je pense que certains disques SSD antérieurs ne prenaient en charge TRIM que lors de la suppression de partitions ou de choses telles que "diskpart clean all" de Windows 7, et non lors de la suppression de fichiers individuels. Cela peut être la raison pour laquelle un lecteur plus ancien a semblé retrouver des performances lors de l'exécution de cette commande. Cela me semble un peu flou ...

Une grande partie de ma connaissance des disques SSD et du matériel / gadgets en général vient de anandtech.com . Je pensais qu'il avait beaucoup écrit pour expliquer tout cela, mais je ne le trouve pas pour la vie!

James
la source
Aha! J'ai trouvé l' article original sur Anandtech!
James
Seulement écrémé ceci, mais +1 pour mentionner l'effacement sécurisé d'ATA, et la citation par bloc vs par page.
Christopher Galpin
1
Bien que la majeure partie de cette réponse soit correcte, la partie concernant la récupération de place est incorrecte. Tous les SSD ont un ramassage des ordures. Ils ne travailleraient pas sans ça. Le ramassage des ordures n'est pas une alternative à TRIM. Dans un état vide, une cellule NAND représente un 1 et vous pouvez ensuite l'écrire dans un 0. Mais pour la ramener à zéro, vous devez effacer tout un bloc à la fois. Ainsi, au lieu de remplacer les données existantes, les modifications sont écrites dans un nouveau bloc et les anciennes données sont marquées comme non valides. La suppression de données non valides est un nettoyage de la mémoire. TRIM indique au SSD de marquer les données comme non valides lorsque vous les supprimez dans le système d'exploitation.
M. Alpha
Pas tout à fait Monsieur Alpha. Le terme « Garbage Collection » est arrivé de contrôleurs qui font de manière proactive le processus que vous décrivez parfois optimums plutôt que de simplement réagir quand ils absolument besoin de le faire ( ce qui encore une fois, les résultats de mauvaises performances que le lecteur se remplit).
James
1
Peut-être n’aurions-nous pas dû appeler cela «collecte des ordures» et simplement surnommer les contrôleurs réactifs plus âgés «accumulateurs».
James
17

Apparemment, la recommandation standard est de faire une écriture complète du lecteur de tous les zéros. Je ne suis pas tout à fait sûr de savoir pourquoi cela aide (peu d'écritures finissent-elles par tuer les disques SSD?), Mais cela semble être approuvé par les principaux forums de support des constructeurs SSD.

Donc, pour le faire dans Windows:

  • démarrer une invite de commande avec les privilèges d'administrateur
  • exécuter la commande diskpart

Une fois dans l'utilitaire, une DISKPART>invite s'affiche et les commandes suivantes sont émises:

DISKPART> list disk
DISKPART> select disk x

Évidemment, assurez-vous d’avoir sélectionné le bon disque SSD avant de poursuivre!

DISKPART> clean all
DISKPART> create partition primary
DISKPART> format quick fs=NTFS 

La magie est ici clean allqui écrit tous les zéros sur le lecteur :

Si vous spécifiez le paramètre all, chaque secteur peut être mis à zéro et toutes les données contenues sur le lecteur peuvent être supprimées.

Après cela, je peux confirmer que les performances du disque ont considérablement augmenté.

Jeff Atwood
la source
11
David Spillett a récemment expliqué la raison pour laquelle l'écriture de zéros peut être utile : certains contrôleurs supposent que les blocs mis à zéro peuvent être ignorés et renvoyés au pool d'espace libre, en émulant l'effet de la commande TRIM.
Sblair
1
2 points - d’abord, en général, la commande flash erase efface les blocs de tous les 0xff, il semblerait donc préférable d’écrire cela au lieu de 0. Il faudrait cependant que je vérifie les fiches techniques. Deuxièmement, si vous essayez de tromper le contrôleur en lui attribuant la fonction TRIMing, ne serait-il pas judicieux d’exécuter une sorte d’utilitaire qui simplement TRIMed chaque bloc du lecteur? Personnellement, je ferais probablement les deux (0xffs et TRIM), mais je suis probablement un peu pédant ici.
Dennis Munsie
2
@dennis, bien sûr, si un tel utilitaire existe - n'hésitez pas à m'en indiquer un.
Jeff Atwood
1
@Dennis: Si le lecteur utilise des bits "physiques" "et" et que ceux-ci sont traduits en bits logiques où, alors, 0xff peut être le modèle dont vous avez besoin. Cependant, ils peuvent utiliser une logique inversée. Par conséquent, la documentation ou la communication avec le fabricant est le seul moyen d’en être certain avant de poursuivre. Ma suggestion d'utiliser sdelete ou similaire est d'essayer de supprimer les blocs inutilisés sur un système de fichiers en fonctionnement. Bien entendu, il en résultera une écriture non rognée pour tous les blocs du mappage du disque SSD qui sont un mélange d’utilisés et d’inutilisés.
David Spillett
2
Je suis un peu stupéfait que tant de personnes ne soient apparemment pas au courant de l'effacement sécurisé d'un disque SSD. Il n'est pas nécessaire de TRIMER chaque bloc. Exécutez simplement un utilitaire qui envoie une commande Secure Erase ATA au SSD et votre problème est résolu, que le SSD prenne ou non en charge TRIM.
James
16

J'ai aussi trouvé un outil, SSD Life Pro . Cela a de mauvaises nouvelles pour moi.

SSDLife Pro - la santé du lecteur est mauvaise!

Pour ce faire, il utilise les indicateurs SMART SSD. Apparemment, il essaie de prédire sur la base de données SMART :

  • La durée de vie de la mémoire flash, sur laquelle reposent les disques SSD, est limitée à 10 000 écritures par cellule.
  • la plupart des lecteurs affichent également des données sur les informations écrites et / ou lues dans leurs paramètres SMART

C'est délicat car il faut aussi savoir quand les données ont été écrites pour estimer, mais voici les données sous-jacentes:

01 Taux d'erreur de lecture 7
Nombre d'heures de démarrage 09 7085
Nombre de cycles d'alimentation 0C 318
B8 Nombre de blocs défectueux initial 15
Nombre de blocs d'échec de programme C3 0
C4 Effacement des blocages d'échec 0
Nombre de blocs d'échec de lecture C5 0
C6 Lecture Secteurs 5468243171
C7 Write Secteurs 41640920876
Commandes de lecture C8 100482453
Commandes d'écriture C9 417315851
Bits d'erreur de CA à partir de Flash 345270
Secteurs de lecture CB avec erreur de bit corrigible 340001
Bloc complet de CC Bad Flag 0
Spécification 5000 du nombre maximum de CD de CD
Compte d'effacement minimum CE 3774
Compte d'effacement maximal des FC 65348
Nombre d'effacement moyen D0 4837
D1 Durée de vie restante 4

Le nombre effrayant, il y a la durée de vie restante du lecteur qui est de 4 .. pour cent!

Et les calculs résultants:

Modèle: CRUCIAL_CT128M225
Taille: 128 Go
Numéro de série: xxxxxxxxxxxxxxxxxx456
Micrologiciel: 2030
Temps activés: 318    
Prise en charge TRIM dans le lecteur / système d'exploitation: activé / activé
Temps travaillé: 9 mois 16 jours 5 heures
Nombre total de données lues: 2607,46 Go
écrit: 19855.94 Go

Pour mémoire, ce disque a été acheté en octobre 2009, il a donc un peu plus d'un an et demi.

Jeff Atwood
la source
3
@Jeff Alors que la taille de la mémoire flash s'est améliorée, le nombre de cycles de programmation / effacement a diminué . La valeur 0xCD suggère que vous avez un lecteur basé sur 34 nm avec 5 000 cycles P / E assignés, au lieu de 10 000.
Sblair
1
@sblair bon à savoir; J'ai essayé l'outil sur un nouvel OCZ Vertex 2 et ses champs et valeurs SMART sont totalement différents.
Jeff Atwood
2
Ces données semblent un peu en retrait - elles indiquent que vous avez écrit presque 10 fois plus de données que vous avez lues. Cela ne sonne-t-il pas haut? Je m'attendrais à plus de lectures que cela. Avez-vous un fichier d'échange sur ce lecteur?
Dennis Munsie
1
Plus de points de données - J'ai un SSD similaire installé sur le MacBook de ma femme. C'était auparavant mon ordinateur portable, qui était utilisé à des fins de développement. Je viens de regarder les statistiques sur ce disque SSD, et au cours des 8 mois environ de la vie de ce disque, il totalisait 17 heures de puissance, comparé à 7085 pour vous (295 jours). Je sais pertinemment que la machine a fonctionné plus de 17 heures au total, mais il semble que le système d'exploitation met hors tension le lecteur de manière agressive.
Dennis Munsie
2
20 To écrit sur un lecteur de 128 Go!? Pourquoi utilisez-vous exactement ce lecteur?
BlueRaja - Danny Pflughoeft
6

J'ai constaté qu'écrire des zéros à travers le lecteur n'est pas la meilleure approche. Bien que cela puisse aider à court terme, j’ai constaté qu’il n’a certainement pas restauré les performances de mon disque (j’ai un assez vieux Intel-SSD non compatible TRIM). Après environ un an d'utilisation assez intensive, je commence à courir en une à deux secondes lorsque le SSD tente d'écrire dans un fichier, même après la mise à zéro du SSD.

La seule chose que j'ai trouvée qui rétablisse entièrement les performances est un effacement sécurisé utilisant hdparm. J'ai pris l'habitude d'effacer en toute sécurité mon disque SSD tous les 6 à 12 mois lorsqu'il commence à avoir quelques ratés mineurs. Quelqu'un sur Macrumors a créé un tutoriel spécifique à Mac sur la procédure à suivre pour les périphériques mac *.

Selon toutes les affirmations que j'ai vues, un effacement sécurisé envoie une commande spéciale au SSD, qui lui permet de mettre tous les secteurs à zéro, à un niveau beaucoup plus bas que celui d'utilisation dd.

Kendall Hopkins
la source
si le lecteur ne prend pas en charge TRIM, tous les paris sont ouverts.
Jeff Atwood
1
Jeff incorrect, un effacement sécurisé est complètement indépendant de TRIM. Il s’agit d’une commande ATA, et c’est la seule chose que vous pouvez faire pour restaurer complètement les lecteurs ne prenant pas en charge TRIM. Lorsqu'un SSD reçoit cette commande, toutes les cellules NAND sont marquées comme vides, ce qui rétablit les performances d'écriture d'origine du lecteur sans recourir à TRIM. Il existe de nombreux outils disponibles pour ce faire, y compris hdparm qui est référencé dans la première réponse à ce jour.
James
5

Sur le Mac, consultez le digilloydTools DiskTester . Il existe également quelques points de données intéressants pour voir les effets du reconditionnement sur les performances du lecteur.

Jerwood
la source
Je crois que tout ce qui fait est d'écrire un très gros fichier de zéro sur votre SSD. Vous pouvez obtenir les résultats de la sauvegarde en le faisant cat /dev/zero > /tmp/bigfile.
Kendall Hopkins
4

Les ThinkPads ont un menu BIOS masqué (activé avec http://www-307.ibm.com/pc/support/site.wss/MIGR-68369.html ) qui réinitialise votre disque SSD.

chx
la source
il fait probablement la même chose que les autres outils recommandés, écrivant des zéros sur l’ensemble du lecteur, qui sont interprétés par le contrôleur comme des commandes TRIM Clear sur chaque bloc.
Jeff Atwood
peut être? Je n'ai aucune idée.
Chx
2

Pour vérifier la durée de vie de ssd laissée sur un ssd (lecteur à état solide), vous devez installer le package smartmontools. Il contient deux programmes utilitaires (smartctl et smartd) permettant de contrôler et de surveiller les systèmes de stockage à l'aide du système de technologie d'auto-surveillance, d'analyse et de génération de rapports (SMART) intégré aux disques durs ATA et SCSI les plus modernes.

Pour les distributions basées sur Ubuntu, Mint ou Debian

# apt-get install smartmontools

For Fedora, Centos, or Red Hat based distributions
# yum install smartmontools

Le Media_Wearout_Indicator est ce que vous recherchez. Pour 100 signifie que votre SSD a 100% de points de vie, le nombre inférieur signifie moins de points de vie.

# smartctl -a /dev/sda | grep Media_Wearout_Indicator

Sortie de mon ordinateur portable

233 Media_Wearout_Indicator 0×0032 100 100 000 Old_age Always – 0

Si vous voulez voir plus de détails et d'attributs complets de votre disque, vous pouvez exécuter

# smartctl -data -A /dev/sda

Source: namhuy.net/1024/how-to-check-ssd-life-left.html

Victor Sanders
la source
2

Il existe maintenant une bien meilleure réponse pour les systèmes Linux, par rapport à la réponse @LeakyCode:

sudo fstrim -v / boot

La commande "fstrim" de "util-linx" va parcourir le système de fichiers et émettre des commandes TRIM pour tout l'espace inutilisé. Sur les distributions telles que Ubuntu, cette option est désactivée par défaut, à l'exception d'une liste de sélection de lecteurs "connus pour être sûrs" d'Intel et de Samsung. Mais la commande peut être exécutée manuellement sur n'importe quelle partition pour n'importe quel lecteur.

Bryce
la source