Проверка надежности флэш-накопителя: перезагружать диск до отказа?

Мне подарили дешевую безбрендовую флешку на 2 Гб. Поскольку у меня есть флешка большего размера, я решил использовать ее для проверки надежности флеш-технологии.

Я планирую писать 1 по всему диску, проверять правильность, писать 0, проверять и так далее. Я запишу результаты, а ошибки поищу позже.

Я ищу наиболее ресурсосберегающий метод для этого. Моя текущая стратегия включает в себя использование команды linux dd для записи и чтения и сравнение результата с файлом из единиц и нулей. Другим подходом будет запись единиц и нулей на диск и вычисление md5 его содержимого. Это простой компромисс между обширным чтением операций ввода-вывода и высокой загрузкой ЦП; Думаю, я просто измерю время работы каждого метода и приму решение.

Есть ли лучшие, более элегантные способы сделать это?


person Adam Matan    schedule 24.06.2009    source источник


Ответы (2)


Выберите случайное 32-битное число. Пишите это в каждом блоке. Прочтите это из каждого блока. Новый 32-битный номер. Запустите привод снова. Алгоритмы хеширования, такие как MD5, интенсивно используют ЦП. Поскольку вы точно знаете шаблон и просто проверяете, не испортит ли диск биты, лучшим подходом будет простое прямое сравнение. Не используйте DD... пишите напрямую с таких языков, как C или Perl (если бы яблоки стояли рядом с апельсинами...)

Также нет необходимости иметь файл сравнения... шаблон помещается в памяти. На самом деле, весь тест, вероятно, уместится в кеше процессора, если сделать его аккуратно, но флешка все равно явно будет узким местом. Найдите номер, который не подходит, вы знаете, что у вас плохой блок.

person Jeff Ferland    schedule 24.06.2009
comment
Есть ли стандартный способ записи напрямую на устройство без использования файлов? - person Adam Matan; 24.06.2009
comment
Откройте дескриптор файла блочного устройства. /dev/usb/001 или аналогичный в вашей системе. - person Jeff Ferland; 24.06.2009
comment
Большое спасибо, я посмотрю. - person Adam Matan; 24.06.2009

Вы также можете использовать команду linux 'badblocks' для выполнения тестов за вас. При использовании с параметром -w он выполнит тест режима записи, используя различные шаблоны, записывая блок и читая его обратно, чтобы проверить, что он прошел успешно.

Вы можете запустить его непосредственно на устройстве без его монтирования, чтобы протестировать каждый блок физического устройства.

   -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.
person Andre Miller    schedule 24.06.2009
comment
Замечательно! Но очень хочется написать самому, а не использовать готовый инструмент. - person Adam Matan; 24.06.2009