2009-06-24 5 views
0

On m'a donné un lecteur flash 2 Go sans marque et bon marché. Comme j'ai un lecteur flash plus grand, j'ai décidé de l'utiliser pour tester la robustesse de la technologie flash.Test de la robustesse d'un lecteur flash: dd'd le lecteur jusqu'à ce qu'il échoue?

Je prévois d'écrire des 1 partout dans le lecteur, vérifier l'exactitude, écrire 0, vérifier et ainsi de suite. Je vais enregistrer les résultats, et chercher des échecs plus tard.

Je cherche la technique la plus économe en ressources pour ce faire. Ma stratégie actuelle consiste à utiliser la commande linux dd pour écrire et lire, 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 disque et à calculer le MD5 de son contenu. C'est un compromis simple entre des lectures d'E/S étendues et une utilisation élevée du processeur; Je suppose que je vais simplement mesurer le temps de fonctionnement de chaque méthode et décider.

Y a-t-il des façons meilleures et plus élégantes de le faire?

Répondre

1

Choisissez un nombre de 32 bits aléatoire. Ecrivez ça dans chaque bloc. Lisez cela de chaque bloc. Nouveau numéro de 32 bits. Exécutez le lecteur à nouveau. Les algorithmes de hachage comme MD5 sont gourmands en ressources CPU. Puisque vous connaissez exactement le modèle et ne faites que tester que le lecteur ne bousille pas les bits, la comparaison directe simple est la meilleure approche. Ne pas utiliser DD ... écrire directement à partir d'une langue comme C ou Perl (s'il y avait des pommes debout à côté d'oranges ...)

Pas besoin d'avoir de fichier de comparaison non plus ... le motif tient dans Mémoire. En fait, l'ensemble du test s'intègre probablement dans le cache de l'UC si c'est fait proprement, mais le lecteur flash sera évidemment un goulot d'étranglement de toute façon. Trouver un numéro qui ne va pas, vous savez que vous avez votre mauvais bloc.

+0

Existe-t-il un moyen standard d'écrire directement sur un périphérique, sans utiliser de fichiers? –

+0

Ouvrez le handle de fichier du périphérique de bloc./dev/usb/001 ou quel que soit l'équivalent sur votre système. –

+0

Merci beaucoup, je vais y jeter un coup d'oeil. –

2

Vous pouvez également utiliser la commande linux 'badblocks' pour faire les tests pour vous. Lorsqu'il est utilisé avec l'option -w, il effectue un test en mode écriture pour vous en utilisant divers motifs, en écrivant un bloc et en le relisant pour vérifier qu'il a réussi.

Vous pouvez l'exécuter directement sur l'appareil sans le monter également, 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. 
+0

C'est génial! Mais je veux vraiment l'écrire moi-même, plutôt que d'utiliser un outil prêt à l'emploi. –

Questions connexes