LINUX.ORG.RU

[SD-card] Как лучше проверить карточку


0

0

Есть карта средних размеров (2 GB), стояла в фотоаппарате, пока на ней не испортились файлы. Сейчас думаю как лучше проверить её на пригодность, есть идея сделать

dd if=/dev/zero of=/dev/{карта} bs=4096
dd if=/dev/{карта} of={временный файл} bs=4096
потом проверить файл на количество байт отличных от \0. Есть подозрение что это не самый лучший и быстрый способ, поэтому спрашиваю у ЛОРа, может быть кто-нибудь что-нибудь посоветует?


dd if=/dev/zero of=/dev/{карта} bs=4096

проверить её на пригодность

А ты в курсе что оно нифига не проверяет, а стирает всю карточку?

darkshvein ☆☆
()

есть идея сделать

Делай. Разрешаю. Только «bs=50M», по крайней мере.

iZEN ★★★★★
()
Ответ на: комментарий от Zhbert

В чем смысл стирать карточку и копипастить ее во воеменный файл?

Так определяются сбойные сектора с определённым числом и расположением неверных бит, которые всё-таки проходят слабую проверку на CRC контроллёра.

При проверке файла пропустить ненулевой байт будет невозможно.

iZEN ★★★★★
()

Делай

dd if=/dev/карта of=/dev/null bs=512 conv=noerror,sync
и грепай в логе ошибки LBA.

px ★★★
()
Ответ на: комментарий от iZEN

>> В чем смысл стирать карточку и копипастить ее во воеменный файл?

Так определяются сбойные сектора с определённым числом и расположением неверных бит, которые всё-таки проходят слабую проверку на CRC контроллёра.

При проверке файла пропустить ненулевой байт будет невозможно.

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

Делай. Разрешаю. Только «bs=50M», по крайней мере.

А не много? В смысле, не должно ли это число быть кратным размеру блока?

irq
() автор топика
Ответ на: комментарий от iZEN

>MHDD же.

apt-cache search mhdd
[Empty]

А ну брысь с лора, проприоретарщик!

darkshvein ☆☆
()

если мне не изменяет склероз, то

dd if=whatever of=/dev/SDcard

не пишет «whatever» на карту, а сначала «стирает» затронутые сектора полностью. И при стирании биты не обнуляются а устанавливаются все в значение «1». И только после этого на этот «стёртый» сектор накладывается «whatever». Так что я думаю писать на SDcard нули и потом считывая смотреть где получились не-нули — это оптимальная стратегия, в отличие от НЖМД куда обычно пишут /dev/urandom.

pupok ★★
()
Ответ на: комментарий от irq

> Какой вариант по вашему лучше?

ну так я кажется уже сказал. Мне кажется что для flash-памяти ваш первоначальный вариант с «dd if=/dev/zero» и последующим отлавливанием не-нулей — лучший.

pupok ★★
()

Начал делать

dd if=/dev/zero /dev/карта bs=8192K
примерно на 800ом мегабайте процесс умер и в лог стали сыпаться очень странные сообщения, при этом загружая 1 ядро процессора на 100%. Сообщения говорят о несправности контроллера.

irq
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.