web-dev-qa-db-fra.com

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

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?

69
Jeff Atwood

Sous Linux, lancez simplement

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

transmettre les plages de bloc que vous souhaitez TRIM au lieu de start et count et du périphérique SSD au lieu de /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 immédiatement entraîner une perte importante de données, vous devez également passer l'argument --please-destroy-my-drive à hdparm (je ne l'ai pas ajouté à la ligne de commande pour éviter les pertes accidentelles de données causées par le copier-coller.)

Dans la ligne de commande ci-dessus, /dev/sda doit être remplacé par le périphérique SSD auquel vous souhaitez envoyer les commandes TRIM. start est l'adresse du premier bloc (secteur) à TRIM, et count est le nombre de blocs à marquer comme étant 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 transmettre le nombre total de blocs de disque (0: 250069680) . 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 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/sda avant 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.

55
Mehrdad Afshari

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 cette situation complexe se résume essentiellement au fait suivant, tiré de 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 que 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 finira par être stocké dans cette première page, ainsi:

1, ∅, ∅

Ensuite, nous écrivons un peu plus de données, mais cette fois-ci, elles nécessitent deux pages et sont donc 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. This IS O LA PERFORMANCE ATTEINTE SE SITUE SUR DES ENTRAÎNEMENTS SANS FINI !! Passons de notre dernier état à ceci:

1, 1, 1, 1

... nécessite plus de travail que la plupart des gens ne le pensent 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 lorsque le travail suivant est effectué!

Puisque nous devons utiliser une page vide et une page supprimée, le SSD doit d'abord lire le contenu du bloc entier dans un espace de stockage/mémoire externe, effacer le bloc d'origine, modifier le contenu, puis réécrit 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 , écrire des zéros sur l'intégralité du lecteur 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 flash est libre d'écriture. 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!

23
James

Apparemment, la recommandation standard est de faire une écriture complète du lecteur de tous les zéros. Je ne suis pas entièrementbien sûr pourquoi cela aide (beaucoup d'écritures ne tuent-ils pas finalement les SSD?), Mais cela semble être approuvé par les principaux forums de support des constructeurs SSD.

Donc, pour le faire dans Windows:

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

Une fois dans l'utilitaire, vous verrez l'invite DISKPART> et exécuterez les commandes suivantes:

DISKPART> list disk
DISKPART> select disk x

Évidemment, ASSUREZ-VOUS D'AVOIR CHOISI LE LECTEUR DE SSD CORRECTE avant de poursuivre!

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

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

Cela fait, je peux confirmer que les performances du disque ont considérablement augmenté.

16
Jeff Atwood

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

SSDLife Pro -- drive health is bad!

Pour ce faire, il utilise les indicateurs SMART SSD. Apparemment, il tente de prédire en fonction de S.M.A.R.T. Données :

  • 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 S.M.A.R.T.

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

 01 Taux d'erreur de lecture 7 
 09 Nombre d'heures sous tension 7085 
 0C Nombre de cycles d'alimentation 318 
 B8 Nombre initial de blocs défectueux 15 
 C3 Programme Nombre de blocs d'échec 0 
 C4 Effacement du nombre de blocs d'échec 0 
 C5 Lecture Nombre de blocs d'échec 0 
 C6 Secteur de lecture 5468243171 
 C7 Secteur d'écriture 41640920876 
 C8 Commandes de lecture 100482453 
 C9 Commandes d'écriture 417315851 
 Bits d'erreur CA provenant de Flash 345270 
 Secteurs de lecture CB avec erreur de bit corrigible 340001 
 Bloc défectueux CC Drapeau plein 0 
 CD Nombre maximal de casses P/E spécification 5000 
 Compte minimum d'effacement CE 3774 
 Compte maximum d'effacement CF 65348 
 D0 Compte moyen d'effacement 4837 
 D1 Durée de vie restante du lecteur 4 

Le nombre effrayant il y a Durée de vie restante du lecteur , soit 4 .. pour cent!

Et les calculs résultants:

 Modèle: CRUCIAL_CT128M225 
 Taille: 128 Go 
 Numéro de série: xxxxxxxxxxxxxxxx456 
 Firmware: 2030 
 Période de fonctionnement: 318 
 TRIM support dans lecteur/système d'exploitation: activé/activé 
 Temps de travail: 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.

15
Jeff Atwood

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 une année 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 définir tous les secteurs à zéro à un niveau beaucoup plus bas que le simple fait d'utiliser dd ou quelque chose du genre.

5
Kendall Hopkins

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.

4
jerwood

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

3
chx

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.

1
Bryce

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 (S.M.A.R.T.) intégré aux disques durs les plus modernes, ATA et SCSI.

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

1
Victor Sanders