Question Restaurer les performances et estimer la durée de vie d'un disque SSD utilisé?


Mon ancien disque SSD de 128 Go a maintenant environ un an et demi et j'ai depuis été mis à niveau vers un autre disque.

Je voudrais nettoyer mon vieux SSD pour ...

  • rétablir ses performances à des niveaux presque neufs

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

Comment vais-je faire ça?


69
2018-05-15 00:27


origine


Bien qu'il ne couvre pas la restauration, vous pourriez trouver ce billet de blog intéressant pour empêcher que cela se produise. - Tom Wijsman
Je l'ai peut-être manqué, mais je n'ai vu aucune des réponses ci-dessous "vérifié". Dans le cas de cette question, je suis vraiment curieux de savoir ce qui s’est passé pour finalement travailler" le mieux "pour vous (si vous vous rappelez ...) - irrational John


Réponses:


Sous Linux, exécutez simplement

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

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

Vous devez probablement exécuter cette commande en tant que root. Étant donné que cette commande est extrêmement dangereuse, car elle peut immédiatement entraîner une perte de données majeure, vous devez également --please-destroy-my-drive argument à hdparm (Je n'ai pas ajouté cela à la ligne de commande pour éviter toute perte de données accidentelle causée par la copie et le collage.)

Dans la ligne de commande ci-dessus, /dev/sda doit être remplacé par le périphérique SSD auquel vous voulez envoyer les commandes TRIM. start est l'adresse du premier bloc (secteur) à TRIM, et count est le nombre de blocs à marquer comme libre à partir de cette adresse de départ. Vous pouvez transmettre plusieurs plages à la commande.

Ayant personnellement fait avec hdparm v9.32 sur Ubuntu 11.04 sur mon ordinateur portable avec un RealSSD C300 Crucial de 128 Go, je dois signaler un problème: je n’ai pas réussi à faire passer le nombre total de blocs de disque (0: 250069680) . J'ai manuellement (essentiellement "recherche binaire" à la main) trouvé une valeur assez grande pour le nombre de blocs qui fonctionnait (40000) et j'ai pu émettre des commandes TRIM sur une séquence de 40000 plages pour 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 ce nombre total de secteurs et remplacez 250069680 dans la ligne suivante par ce nombre et exécutez (ajouter --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/sda avant et après et vérifiez que le lecteur a ignoré les données.


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


55
2018-05-15 01:23



Super écriture, mais cela ne fonctionnera malheureusement pas pour les SSD non compatibles avec TRIM. Pour cela, vous devrez aller un peu plus loin. Voir le ATA wiki sur kernel.org pour des instructions sur la façon de le faire avec hdparm. Ce serait encore mieux si vous pouviez modifier votre entrée originale pour inclure cette information :) - James
"fstrim" est une version simple 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, et non de sécurité, ce qui signifie que le lecteur est libre d'ignorer la commande ou de retarder l'effacement jusqu'à une date ultérieure, comme la plupart des lecteurs. - psusi


Tout d'abord, commençons par comprendre ce qui cause la dégradation des performances. Sans le savoir, de nombreuses personnes suggéreront des solutions inadéquates (comme je le vois déjà). Le nœud de toute cette situation se résume au fait suivant, cité dans Wikipédia. Rappelez-vous que 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 se faire de manière séquentielle.

Les disques SSD sont constitués de flash NAND et flash se compose de "blocs". Chaque bloc contient de nombreuses "pages". Par souci de simplicité, imaginons que nous venons d’acheter un nouveau SSD brillant qui contient un seul bloc de mémoire, et ce bloc se compose de 4 pages vides.

Par souci de clarté, je distingue les pages vides, les pages utilisées et les pages supprimées avec ∅, 1 et X. La clé étant que il y a 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 lecteur ressemblent à ceci:

∅, ∅, ∅, ∅ (tout vide)

Maintenant, nous allons écrire des données sur le lecteur, et cela finit par être stocké dans cette première page, donc:

1, ∅, ∅, ∅

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

1, 1, 1, ∅

Nous manquons d'espace! Nous décidons que nous n'avons pas vraiment besoin des données initiales que nous avons écrites, alors supprimons-le pour faire de la place .:

X, 1, 1, ∅

Enfin, nous avons un autre grand ensemble de données que nous devons stocker et qui consomment les deux pages restantes. C'EST LÀ O THE LA PERFORMANCE SE TROUVE DANS LES VITESSES SANS TRIM !! En allant de notre dernier état à ceci:

1, 1, 1, 1

... nécessite plus de travail que la plupart des gens réalisent. Encore une fois, cela est dû au fait que Flash ne peut effacer que par bloc, et non par page, ce qui est précisément ce que demande la transition finale ci-dessus. Le différentiateur entre les SSD basés sur TRIM et non basés sur TRIM est quand le travail suivant est effectué!

Comme nous devons utiliser une page vide et une page supprimée, le SSD doit d'abord lire le contenu de l'ensemble du bloc dans une mémoire externe, effacer le bloc d'origine, modifier le contenu, puis réécrire ces contenus dans le bloc. Ce n'est pas aussi simple qu'une "écriture", au lieu de cela il devient maintenant une "lecture-effacement-écriture". C'est un grand changement et pour que cela se produise pendant que nous écrivons beaucoup de données est probablement le moment le plus inopportun pour que cela se produise. Tout cela 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 moment opportun jugé approprié par les algorithmes TRIM. La partie importante est que, avec TRIM, cela ne se produit pas lorsque nous sommes en pleine écriture!

Sans TRIM, nous ne pouvons finalement pas éviter le scénario ci-dessus, car nous remplissons nos disques 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 cette récupération de place). Mais pour ceux d'entre nous qui n'ont pas la chance de ne pas en avoir non plus, il est important de savoir que écrire des zéros sur l'ensemble du disque n'est pas suffisant pour récupérer les performances d'origine !!!!! L'écriture de tous les zéros sur le lecteur n'indique pas au contrôleur que la page en flash est libre d'écriture. La seule façon de le faire 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 croyez Il y avait quelques premiers SSD qui ne supportaient que TRIM lors de la suppression de partitions ou sur des choses telles que "diskpart clean all" de Windows 7, et pas lors de la suppression de fichiers individuels. Cela peut être une raison pour laquelle un ancien disque semble avoir retrouvé des performances lors de l'exécution de cette commande. Cela me semble un peu flou si ...

Une grande partie de mes connaissances sur les SSD et le matériel / gadgets en général vient de anandtech.com. Je pensais qu'il avait une bonne écriture expliquant tout cela mais pour la vie de moi je ne peux pas le trouver!


23
2018-05-15 07:54



Aha! J'ai trouvé le article Anandtech original! - James
Seulement écrémé ceci mais +1 pour mentionner l'effacement sécurisé d'ATA et le devis par bloc vs par page. - Christopher Galpin
Bien que la plupart de ces réponses soient correctes, la partie sur la récupération de place est incorrecte. Tous les disques SSD ont un nettoyage de la mémoire. Ils ne travailleraient pas sans elle. La collecte 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 sur un 0. Mais pour le ramener à zéro, vous devez effacer un bloc entier en une fois. Ainsi, au lieu de remplacer les données existantes, toutes les modifications sont écrites dans un nouveau bloc et les anciennes données sont marquées comme non valides. L'effacement des données non valides est la récupération 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. - Mr Alpha
Pas tout à fait M. Alpha. Le terme «Garbage Collection» est issu de contrôleurs qui effectuent de manière proactive le processus que vous décrivez à des moments optimaux, au lieu de simplement réagir avoir besoin pour le faire (ce qui, encore une fois, entraîne de mauvaises performances lorsque le lecteur se remplit). - James
Peut-être que nous n'aurions jamais dû l'appeler "Garbage Collection" et au lieu de cela, nous avons simplement surnommé les anciens contrôleurs réactifs "hoarders". - James


Apparemment, la recommandation standard est de faire une écriture complète de tous les zéros. je ne suis pas entièrement Sûr pourquoi cela aide (beaucoup d’écrit ne tuent-ils pas les SSD?), mais cela semble être approuvé par les principaux forums de support SSD des fournisseurs.

Donc, pour le faire dans Windows:

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

Une fois dans l'utilitaire, vous verrez un DISKPART> invite et lancez les commandes suivantes:

DISKPART> list disk
DISKPART> select disk x

Évidemment, VÉRIFIEZ QUE VOUS AVEZ CHOISI LE DRIVE SSD CORRECTE avant de procéder!

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

La magie est ici clean all lequel é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é.


16
2018-05-15 00:32



@Jeff La raison pour laquelle l’écriture de tous les zéros peut être utile a été expliquée récemment par David Spillett: certains contrôleurs supposent que les blocs mis à zéro peuvent être supprimés et renvoyés dans le pool d'espace libre, en émulant l'effet de la commande TRIM. - sblair
2 points - en premier lieu, la commande d'effacement flash efface généralement les blocs à tous les 0xffs, il semble donc préférable d'écrire cela au lieu de 0s. Je devrais vérifier les fiches techniques pour être sûr, cependant. Deuxièmement - si vous essayez de tromper le contrôleur en corrigeant le disque, ne serait-ce pas une bonne idée d’exécuter une sorte d’utilitaire qui modifie chaque bloc du disque? Personnellement, je ferais probablement les deux (0xffs et TRIM), mais je suis probablement un peu pédant ici. - Dennis Munsie
@ dennis, si un tel utilitaire existe, n'hésitez pas à m'en indiquer un. - Jeff Atwood
@Dennis: Si le lecteur utilise des bits "physiques" "on" et que ceux-ci sont convertis en bits logiques, alors 0xff peut être le modèle dont vous avez besoin. Ils peuvent cependant utiliser une logique inversée, de sorte que la documentation ou la communication avec le fabricant est la seule façon de s’assurer avant de continuer. Ma suggestion d'utiliser sdelete ou similaire est d'essayer de rogner les blocs inutilisés sur un système de fichiers fonctionnel. Bien sûr, cela se traduira par une écriture non coupée pour tous les blocs du mappage du disque SSD qui sont un mélange de données utilisées et inutilisées. - David Spillett
Je suis un peu sidéré que tant de personnes ne soient apparemment pas au courant de la suppression sécurisée d'un SSD. Il n'est pas nécessaire de TRIM 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 en charge ou non TRIM. - James


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

SSDLife Pro -- drive health is bad!

En ce qui concerne le calcul, il utilise les indicateurs SMART SSD. Apparemment il essaie de prédire sur la base de S.M.A.R.T. Les données:

  • La durée de vie de la mémoire flash, sur laquelle sont basés les 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 leur fichier S.M.A.R.T. paramètres

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 Lire le taux d'erreur 7
09 Nombre d'heures de mise sous tension 7085
0C Power Cycle Count 318
B8 Initial Bad Block Count 15
C3 Échec du programme Nombre de blocs 0
C4 Erase Failure Block Count 0
C5 Erreur de lecture Nombre de blocs 0
C6 Lire Secteurs 5468243171
C7 Écrire des secteurs 41640920876
Commandes de lecture C8 100482453
Commandes d'écriture C9 417315851
CA Error Bits from Flash 345270
Secteurs de lecture CB avec erreur de bit corrigible 340001
CC Bad Block Drapeau complet 0
CD Maximum P / E Count Spécification 5000
Nombre minimum d'effacement CE 3774
CF Nombre maximum d'effacement 65348
D0 Moyenne Effacement Compte 4837
D1 Durée de vie restante 4

Le nombre effrayant il y a La vie de conduite restante qui est 4 .. pour cent!

Et les calculs résultants:

Modèle: CRUCIAL_CT128M225
Taille: 128 Go
Numéro de série: xxxxxxxxxxxxxxxxx456
Firmware: 2030
Alimenté fois: 318
Prise en charge TRIM dans le lecteur / système d'exploitation: activé / activé
Temps travaillé: 9 mois 16 jours 5 heures
Total des 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.


15
2018-05-15 00:48



@Jeff Alors que la taille de la mémoire flash a été améliorée, le nombre de cycles de programme / effacement a diminué. La valeur 0xCD suggère que vous ayez un lecteur basé sur 34 nm avec 5 000 cycles P / E, plutôt que 10 000. - sblair
@sblair bon à savoir; J'ai essayé l'outil sur un nouveau OCZ Vertex 2 et ses champs et valeurs SMART sont totalement différents. - Jeff Atwood
Ces données semblent un peu décalées - vous dites avoir écrit près de 10 fois plus de données que vous l’avez lu. Est-ce que ça ne sonne pas haut? Je m'attendrais à plus de lectures que cela. Avez-vous un fichier d'échange sur ce lecteur? - Dennis Munsie
Plus de points de données - J'ai un SSD similaire installé sur le MacBook de mon épouse. C'était auparavant mon ordinateur portable, qui était utilisé à des fins de développement. Je viens de regarder les statistiques sur ce SSD, et dans les 8 mois environ de la vie de ce disque, il y avait un total de 17 heures de mise sous tension par rapport à 7085 pour vous (295 jours). Je sais avec certitude que la machine est allumée depuis plus de 17 heures, mais il semble que le système d’exploitation éteigne le disque de manière agressive. - Dennis Munsie
20 To écrit sur un disque de 128 Go !? À quoi sert exactement ce lecteur? - BlueRaja - Danny Pflughoeft


J'ai trouvé que l'écriture de zéro dans le lecteur n'est pas la meilleure approche. Bien que cela puisse être utile à court terme, j’ai constaté que cela n’avait certainement pas rétabli la performance de mon disque (j’ai un Intel-SSD non compatible TRIM assez ancien). Après un an d'utilisation assez intense, je commence à courir dans 1-2 secondes de gel lorsque le SSD tente d'écrire sur tout fichier, même après avoir mis à zéro le SSD.

La seule chose que j'ai trouvée qui restaure pleinement la performance était un effacement sécurisé en utilisant hdparm. J'ai pris l'habitude d'effacer mon SSD tous les 6 à 12 mois quand il commence à avoir des problèmes mineurs. Quelqu'un sur Macrumors a fait un mac spécifique Didacticiel sur la façon de faire pour les appareils 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, puis d’utiliser simplement dd ou quelque chose.


5
2018-05-15 04:50



si le lecteur ne prend pas en charge TRIM, tous les paris sont désactivés. - Jeff Atwood
Jeff incorrect, un effacement sécurisé est complètement indépendant de TRIM. C'est une commande ATA réelle, et c'est la seule chose que vous pouvez faire pour pleinement restaurer les disques non compatibles TRIM. Lorsqu'un SSD reçoit cette commande, toutes les cellules NAND sont marquées comme vides, ce qui permet de restaurer les performances d'écriture d'origine du lecteur. sans pour autant le besoin de TRIM. Il existe de nombreux outils disponibles qui peuvent faire cela, y compris hdparm qui est référencé dans la réponse supérieure jusqu'à présent. - James


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


4
2018-05-15 00:59



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 sauvegarde en faisant cat /dev/zero > /tmp/bigfile. - Kendall Hopkins


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


3
2018-05-15 01:02



Il fait probablement la même chose que les autres outils recommandés, en écrivant des zéros sur l'ensemble du disque, qui sont interprétés par le contrôleur comme TRIM pour effacer les commandes sur chaque bloc. - Jeff Atwood
peut être? Je n'ai aucune idée. - chx


Pour vérifier la durée de vie de ssd sur un disque SSD, vous devez installer le paquet smartmontools. Il contient deux utilitaires (smartctl et smartd) pour contrôler et 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 (S.M.A.R.T.) intégré à la plupart des disques durs ATA et SCSI 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

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

# 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 les attributs complets de votre lecteur, vous pouvez exécuter

# smartctl -data -A /dev/sda

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


1
2017-11-28 15:52





Il y a maintenant une réponse bien meilleure pour les systèmes Linux, comparée à la réponse de @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 sélective de lecteurs «sûrs connus» d'Intel et de Samsung. Mais la commande peut être exécutée manuellement sur n'importe quelle partition pour n'importe quel lecteur.


1
2018-03-01 06:30