Tester la robustesse d’un lecteur flash: laisser le lecteur en échec?

StackOverflow https://stackoverflow.com/questions/1038883

  •  10-07-2019
  •  | 
  •  

Question

On m'a offert un lecteur flash de 2 Go à faible coût et sans marque. Comme j'ai un plus gros lecteur flash, j'ai décidé de l'utiliser pour tester la robustesse de la technologie flash.

Je prévois d’écrire des 1 sur l’ensemble du lecteur, de vérifier son exactitude, d’écrire les 0, de vérifier, etc. Je consignerai les résultats et rechercherai les échecs plus tard.

Je recherche la technique la plus économe en ressources pour le faire. Ma stratégie actuelle consiste à utiliser la commande linux dd pour l'écriture et la lecture, et à comparer le résultat à un fichier de uns et de zéros. Une autre approche consisterait à écrire les uns et les zéros sur le lecteur et à calculer le md5 de son contenu. Il s’agit d’un simple compromis entre des lectures d’E / S étendues et une utilisation élevée du processeur; Je suppose que je vais simplement mesurer le temps d'exécution de chaque méthode et décider.

Existe-t-il des moyens plus efficaces et plus élégants de le faire?

Était-ce utile?

La solution

Choisissez un nombre aléatoire de 32 bits. Ecrivez ça dans chaque bloc. Lisez cela de chaque bloc. Nouveau numéro 32 bits. Exécutez le lecteur à nouveau. Les algorithmes de hachage tels que MD5 nécessitent beaucoup de ressources en processeur. Puisque vous connaissez exactement le modèle et que vous testez simplement que le lecteur ne gâche pas les bits, une simple comparaison directe est la meilleure approche. N'utilisez pas DD ... écrivez directement à partir d'un langage comme C ou Perl (s'il y avait des pommes debout à côté d'oranges ...)

Pas besoin d'avoir un fichier de comparaison non plus ... le motif tient dans la mémoire. En fait, le test tout entier s'inscrit probablement dans le cache du processeur s'il est effectué correctement, mais le lecteur flash restera évidemment un goulot d'étranglement. Trouvez un numéro qui ne vous convient pas, vous savez que vous avez votre mauvais bloc.

Autres conseils

Vous pouvez également utiliser la commande linux 'badblocks' pour effectuer les tests à votre place. Utilisé avec l'option -w, il effectuera un test en mode écriture pour vous en utilisant divers modèles, en écrivant un bloc et en le relisant pour vérifier qu'il a réussi.

Vous pouvez l'exécuter directement sur le périphérique sans l'avoir également monté, pour tester chaque bloc du périphérique physique.

   -w     Use  write-mode  test. With this option, badblocks scans for bad
          blocks by writing some patterns  (0xaa,  0x55,  0xff,  0x00)  on
          every block of the device, reading every block and comparing the
          contents.  This option may not be combined with the  -n  option,
          as they are mutually exclusive.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top