8 февраля 2012 г.

Тестирование флешки на ошибки [Diagnostic USB Flash]

   Создание загрузочной флешки следует начать именно с тестирования ее на предмет ошибок. Хотя я по причине уверенности в работоспособности своей флешки этого не делал. Но при возникновении каких-либо неполадок с флешкой, например, если хранящаяся на флешке информация начала некорректно распознаваться или вообще не открывается (один из первых тревожных «звоночков»). Для уточнения "диагноза" рекомендую использовать утилиту Flashnul от российского разработчика Георгия Шуклина.
   Цитирую автора той замечательной программы, которую я предлагаю вам использовать:
   Сменные носители на базе flash-памяти (такие как usb-flash drives, SD, MMC, MS,XD, MD, CompactFlash, IDE-flash etc) в силу ряда особенностей (hot-plug подключение, воздействие статики, влаги, температуры, механических воздействий при траспортировке, естественный износ из-за ограниченного числа циклов чтения/записи) относительно часто выходят из строя (хотя и реже жёстких дисков)
    Простые дефекты вроде "не определяется", "ошибки записи" обнаруживаются относительно легко без использования специализированного ПО, но диагностика более сложных дефектов представляет из себя весьма нетривиальную задачу.
   Обычные HDD-тесты в проверке устройств целиком полагаются на контроллер устройства в определении правильности считывания. Либо сектор не читается, либо он читается правильно. К сожалению, для Flash-носителей это не так, и относительно часты случаи, когда прочитанное не совпадает с записанным, или запись в один сектор повреждает другие сектора. Такие дефекты можно определить "полевыми испытаниями" - записью архивированных данных с последующей проверкой, некоторым периодом интенсивного чтения-записи файлов. Однако, такие "доморощенные" тесты не дают твёрдой уверенности в полной работоспособности устройства. Flashnul сначала создавался для служебных нужд (удобной и быстрой проверки работы USB-flash устройств), но потом вырос до универсального теста.
   Ближайшим аналогом flashnul является memtest, проверяющий работу оперативной памяти. В какой-то степени flash-память больше похожа (по дефектам) на обычную оперативную память, чем на жёсткий диск.
   Кроме того, есть ряд программных "дефектов" (если быть точным, некорректных действий пользователей), приводящих к зависанию при обращении к логическому диску, соответствующему устройству. Чаще всего это некорректная таблица разделов или ошибки файловой системы. Самый простой способ "вылечить" их - это уничтожить всю информацию на флешке (занулить - собственно, от этого процесса и идёт название утилиты).
  Flashnul - это средство диагностики, а не лечения устройств, если тест говорит, что устройство работает некорректно, значит, оно работает некорректно.
   Flashnul - утилита по проверки работоспособности и обслуживанию Flash-памяти (USB-Flash, IDE-Flash, SecureDigital, MMC,MemoryStick, SmartMedia, XD, CompactFlash и т.д.).
Список выполняемых операций:
  • Тест чтения - проверка доступности каждого сектора носителя (дублирует функциональность обычных HDD-тестов)
  • Тест записи - проверка возможности записи каждого сектора носителя (дублирует функциональность большинства HDD-тестов)
  • Тест сохранности записанной информации - проверка соответствия записанной и прочитанной информации (аналогично функциональности memtest, но в отношении flash-накопителей).
  • Недеструктивная проверка чтения/записи позволяет проверить доступность на запись каждого сектора устройства, не теряя записанные данные (после проверки блока данные, содержащиеся в этом блоке, записываются обратно)
  • Сохранение образа содержимого устройства - посекторное сохранение всего (или части) содержимого в файл. (аналогично функциональности dd из UNIX).
  • Загрузка образа в устройство - посекторная запись образа в устройство (аналогично функциональности dd из UNIX).
   Подробную информацию можете найти на сайте разработчика: http://shounen.ru/soft/flashnul/readme.rus.html
   ПРОГРАММА СОДЕРЖИТ В СЕБЕ ФУНКЦИИ, НЕПРАВИЛЬНОЕ ИСПОЛЬЗОВАНИЕ КОТОРЫХ ПРИВОДИТ К НАРУШЕНИЮ РАБОТОСПОСОБНОСТИ ОПЕРАЦИОННОЙ СИСТЕМЫ, НЕОБРАТИМОМУ УНИЧТОЖЕНИЮ ДАННЫХ.

   Информацию по программе получили, теперь что нужно сделать, чтобы убедиться что флешка рабочая.

   Последовательность действий:

1. Скачиваем последнюю версию. Последняя на момент написания статьи - v1.0rc1(0.994).
На 31.01.2014 последняя версия: v1.0rc2(0.995). Но она почему-то у меня не захотела показывать список физ. дисков, поэтому пользуйтесь v1.0rc1(0.994) - с ней все хорошо.

2. Запускаем flashnul.exe из командной строки Windows (с правами администратора) с ключом -p=1 (-p=1 — показ только физических дисков):


flashnul -p=1


3. Видим примерно следующее:


Avaible physical drives:
0       size = 80025280000 (74 Gb)
1       size = 500107862016 (465 Gb)
2       size = -1 ( -not avaible- )
3       size = -1 ( -not avaible- )
4       size = -1 ( -not avaible- )
5       size = -1 ( -not avaible- )
6       size = 8021606400 (7650 Mb)
Press ENTER to exit.


4. Ориентируясь по размеру, определяем номер флешки (у меня это 6)

5. Можно проверить правильно ли мы определили, запустив flashnul с номером устройства, но без других параметров:


flashnul 6


6. Увидим информацию о нашей флешке:


Disk PhysicalDrive6 (UNC name: \\.\PhysicalDrive6)
------------------------------------------------------------[Drive geometry]--
Cylinders/heads/sectors  = 975/255/63
Bytes per sector         = 512
CHS size                 = 8019648000 (7648 Mb)
---------------------------------------------------------------[Device size]--
Device size              = 8021606400 (7650 Mb)
delta to near power of 2 = 568328192 (542 Mb), 7%
Surplus size             = 1958400 (1912 kb)
-----------------------------------------------[Adapter & Device properties]--
Bus type                 = (7) USB
Removable device         = No
Command Queue            = Unsupported
Device vendor            = Kingston
Device name              = DT 101 II
Revision                 = PMAP
Device serial            = ▼
--------------------------------------------------------------[Hotplug info]--
Device hotplug           = Yes
Media hotplug            = No

Press ENTER to exit.


7. Пора запускать тестирование флешки. Для этого введем:


flashnul 6 -T

где
6 - Номер вашего устройства (флешки).
-T - Стандартный тест записи/чтения (уничтожает информацию на устройстве).

8. Соглашаемся с уничтожением данных ("yes"). Ждем пока пройдут все тесты (я ждал около получаса).
У меня на Win7 x64 не запускался тест в связи с отказом в доступе. Почему так - не знаю. На WinXP - все норм. Учтите это.
9. После удачного тестирования получаем отчет:


Disk PhysicalDrive6 (UNC name: \\.\PhysicalDrive6)
------------------------------------------------------------[Drive geometry]--
Cylinders/heads/sectors  = 975/255/63
Bytes per sector         = 512
CHS size                 = 8019648000 (7648 Mb)
---------------------------------------------------------------[Device size]--
Device size              = 8021606400 (7650 Mb)
delta to near power of 2 = 568328192 (542 Mb), 7%
Surplus size             = 1958400 (1912 kb)
-----------------------------------------------[Adapter & Device properties]--
Bus type                 = (7) USB
Removable device         = No
Command Queue            = Unsupported
Device vendor            = Kingston
Device name              = DT 101 II
Revision                 = PMAP
Device serial            = ▼
--------------------------------------------------------------[Hotplug info]--
Device hotplug           = Yes
Media hotplug            = No

        Selected operation:      write test
        Selected drive:          PhysicalDrive6, 8021606400b (7650 Mb)

        THIS OPERATION IS DESTRUCTIVE!!!
        Type 'yes' to confirm operation. All other text will stop it.

        Really destroy data on drive PhysicalDrive6?  :yes

-----------------------------------------------------------------------[Log]--
Runing operation [write test] for drive PhysicalDrive6

pass #1 ended

----------------------------------------------------------[Operation result]--
passes:                 1
errors:                 0
read bytes:             16043212800 (14 Gb)
avg. read speed:        15787584 (15 Mb/s)
max/min read speed:     20168928 (19 Mb/s) / 5152832 (5032 kb/s)
write bytes:            8021606400 (7650 Mb)
avg. write speed:       12203976 (11 Mb/s)
max/min write speed:    17284733 (16 Mb/s) / 124499 (121 kb/s)


10. Если в строке errors не появились ошибки, значит флешка рабочая. Подробнее обо всех пунктах:
  • passes — количество проходов (если 0 — тестирование не завершено)
  • errors — количеcтво найденых ошибок, если число отлично от нуля - дефект устройства (или устройство отключили во время теста).
  • read bytes — количество прочитанных байтов, если циклов больше 1 или включен режим -V=3, то это число будет больше размеров устройства.
  • avg. read speed — средняя скорость чтения (прочитанных байт/время чтения)
  • max/min read speed — максимальная/минимальная скорость чтения (note: я не уверен в достоверности этих двух чисел, опция экспериментальная)
  • write bytes - количество записанных байтов, если циклов больше 1, то это число будет больше размеров устройства.
  • avg. write speed - средняя скорость записи (записанных байт/время записи)
  • max/min write speed - максимальная/минимальная скорость записи (note: я не уверен в достоверности этих двух чисел, опция экспериментальная)
11. А вот пример найденной ошибки:


12. После тестирования с ключом -T наша флешка будет заполнена "шахматкой" (комбинацией 0xFF, 0x00). Для её адекватного восприятия ОС нужно очистить первый сектор (первые 512 байт). Для этого вводим:


flashnul 6 -B

где
6 - Номер вашего устройства (флешки).
-B   --blank   Стирает первый сектор на устройстве

13. А можно стереть всю информацию, т.е. обнулить флешку (аналогично Disk Filling в BootICE), используя команду:


flashnul 6 -F

где
6 - Номер вашего устройства (флешки).
-F   --fill   Заполняет все сектора указанным байтом (затирает). По-умолчанию затирает нулём

А можно только часть, например байты с нулевого по 2048ой:


flashnul 6 -F -r=0;2048

где
6 - Номер вашего устройства (флешки).
-F   --fill   Заполняет все сектора указанным байтом (затирает). По-умолчанию затирает нулём
-r   --range   Диапазон, в котором выполнять операцию. Может принимать одно или два значения, разделённые точкой с запятой (начало-конец). Величины - байты от начала устройства. Значения должны быть кратными размеру сектора.

14. Теперь можно разбивать флешку на разделы, форматирование уже не требуется.

Используемый материал:
Flashnul - утилита для проверки flash-дисков
Диагностика флэш-дисков
Фresh для Fлеш: Тест софта для USB флеш-карт
Флэш-память: не так долговечна, как хотелось бы

При копировании статьи просьба указывать источник и автора.
С уважением, GRomR1.

6 комментариев:

  1. Спасибо! Гениально! И очень нужно!

    ОтветитьУдалить
  2. ссвлка на программу битая (((

    ОтветитьУдалить
    Ответы
    1. Если вы про сайт разработчика программы, то да, судя по всему, он умер.
      Но все равно вы можете скачать ее.

      Удалить
  3. Чтобы в Win7 запустить тест, нужно указать имя диска, а не номер. Например, flashnul m: -T

    ОтветитьУдалить
  4. Отличный обзор по флешкам!
    Спасибо!

    ОтветитьУдалить