Как я могу проверить целостность чтения / записи компактного флэш-устройства?

13288
Paul McMillan

У меня есть куча компактных флэш-карт, которые я активно использовал в качестве профессионального фото и видео.

Я обеспокоен тем, что один из них работает плохо, так как я вижу, что файлы (чаще всего видео, но иногда фото) становятся поврежденными по причине, которую трудно предсказать. Я абсолютно уверен, что это не связано с размонтированием карты перед ее извлечением - повреждение видно сразу после правильного извлечения карты из камеры.

Проблема в том, что я не знаю, какая карта является проблемной, и проблема кажется неустойчивой, поэтому я не могу просто снять их полностью и найти плохой файл (а повреждение не всегда очевидно даже тогда - если плохие биты находятся в части данных файла, это может быть неочевидно). Проблема достаточно редкая, и я не могу ее надежно воспроизвести (кроме случаев, когда есть клиент с заданием, у которого файлы абсолютно, безусловно, не могут быть потеряны - тогда он обязательно ударит).

Я мог бы получить их все по гарантии (все они Sandisk с пожизненной гарантией), но я бы предпочел этого не делать (как мне оправдать отправку партии из 5 карт? Что я буду использовать в течение месяца, в течение которого они пропали) ?).

Я ищу инструмент, который исправит их. В частности, мне нужно что-то, что будет выполнять цикл записи / чтения / записи / чтения для всей карты и в идеале делать полный формат, чтобы удалить все плохие биты, а также сообщить мне статус (является ли одна карта особенно плохой? все остальные совершенно нормально? какой уровень ошибок я вижу на общих основаниях?).

Я знаю об этом badblocksинструменте, но надеялся найти что-то более приспособленное к CF (и которое, я надеюсь, позволило бы мне выводить из строя плохие области, если они всего лишь несколько битов). Я бы предпочел инструмент без окон, если это возможно.

Кто-нибудь еще решил эту проблему без простой замены ваших устройств вслепую? Некоторые из карт подозреваемых являются довольно новыми.

4

2 ответа на вопрос

2
hotei

Вероятно, есть лучшие инструменты, но если вы хотите просто и бесплатно, то вам нужен dd.

Предполагая, что у вас не Windows, это что-то вроде Linux или Unix, и ваши карты не содержат никаких данных, которые вы хотите сохранить, тогда вы можете попробовать это:

Смонтируйте CF-карту в вашем ридере и получите название ее устройства. Я предполагаю, что это / dev / CF для целей этого ответа. Войдите в систему как root.

Написать карточку полной со случайными данными

dd if=/dev/random of=/dev/CF bs=1k 

Вы можете сделать это пару раз (сколько вам решать), и если он получит сообщение об ошибке до того, как завершит всю карту, тогда это проблема с картой.

Вы можете проверить функцию чтения карты следующим образом:

dd if=/dev/CF of=/dev/null bs=1k 

Следует читать всю карту без ошибок.

Когда вы закончите, вы захотите переформатировать карту. Сначала напишите карточку, полную нулей, чтобы потом ее можно было отформатировать в вашей камере:

dd if=/dev/zero of=/dev/CF bs=1k 

Это должно написать всю карту без ошибок.

Мое личное мнение, что если вы получаете какие-либо ошибки, то RMA карту. Я бы не стал повторно использовать его, перекартировав плохие блоки.

Имейте в виду, что даже если карты проходят тесты, это не означает, что они гарантированно хороши. Это МОЖЕТ означать периодическую ошибку, которая занимает немного больше времени, чем вы думали, чтобы показать себя. С другой стороны, в случае неудачи у вас есть некоторые данные, на которых можно основывать свое решение RMA, и некоторая подтверждающая документация, чтобы предоставить Sandisk для обоснования RMA.

Хммм. Я рассмотрел dd, но я понимаю, что, хотя процесс, который вы описали, запишет карту, а затем прочитает ее, она не будет проверять, что то, что читается с карты, соответствует тому, что было предназначено для записи на нее. Я мог бы записать вывод / dev / random в другой файл, а затем сделать сравнение ... Я надеюсь, что есть более простой способ. Paul McMillan 14 лет назад 0
@ Пол Макмиллан: дд обнаружит одни проблемы, а не другие. И это не поможет сравнить с / dev / random, поскольку его СЛУЧАЙНО он не будет прежним во второй раз. Вы можете создать файловую систему на устройстве CF, записать бит / dev / random в файл диска (используйте параметр dd count) (или любой файл, который вы хотите использовать с помощью cp), затем скопировать файл диска на устройство CF и затем возьмите хэш md5 (имя файла md5sum -b) как файла диска, так и файла CF. - - - но это немного больше работы, чем я думал, что вы хотели инвестировать. hotei 14 лет назад 0
Я понимаю / dev / random. Я имел в виду запуск соответствующего количества в файл, который я мог бы сравнить перед записью на карту. Я думаю, что badblocks - лучший инструмент, который я нашел для этой работы. Paul McMillan 14 лет назад 0
@ Пол ~: Я думал, что вы могли бы, но должен был убедиться, так как другие также будут сталкиваться с этими сообщениями. hotei 14 лет назад 0
1
drfrogsplat

Если у вас есть доступ к машине с Windows, вы можете попробовать Check Flash . Эта ссылка просто на обзор с красивым скриншотом (реальный сайт на русском)

Я лично не использовал его, но если предположить, что скриншоты / обзоры являются законными, это кажется разумным способом тестирования флэш-накопителей.

PS Вот ссылка на актуальный сайт разработчика (на русском языке): http://www.mikelab.kiev.ua/index.php?page=PROGRAMS/chkflsh drfrogsplat 14 лет назад 0
Спасибо, я должен разобраться в этом. Кажется интересным вариантом, и это может сделать свое дело. Конечно, выглядит дружественным к пользователю. Paul McMillan 14 лет назад 0

Похожие вопросы