LINUX.ORG.RU

Как найти на MicroSD карте испорченные байты?

 , , , ,


0

1

Купил через aliexpress, micro SD карточку на 64 Гб. Она пришла с раздавленным картридером и часть самой карточки отпечаталась на прозрачной упаковке. Продавец вернул деньги. Я сделал через gparted раздел 8гб, больше сделать не удалось, ошибки появляются разделы не монтируются. Но и при записи в этот раздел фильмов, один из них частично не проигрывается.

Вопрос: как провести проверку на запись и считывание, с целью выявления нерабочих мест? Чтобы потом создать разделы только в рабочих областях.

Должна быть какая-то утилита или комбинация bash команд.


man badblocks

Сохраняешь "бэды" в файл, а затем форматируешь в extX, беря бэды из этого файла.

Eddy_Em ☆☆☆☆☆
()

байты

на flash нельзя читать/писать произвольный байт

anonymous
()

Кстати, не факт, что карточка изначально была на 64ГБ. Это — любимый "фокус" китайцев: писать завышенную емкость, ставить контроллер, показывающий эту емкость, а в реале флеша может быть 2-4ГБ. Сам недавно так пролетел с "восьмигиговыми" флешками, которые на поверку оказались двухгиговыми, да еще и дерьмовыми (~10-20 перезаписей — и флешка сдохла)!

Eddy_Em ☆☆☆☆☆
()

Создайте раздел на всю карту (лучше в fdisk, ну или в GParted без указания файловой системы), а затем создайте ФС с проверкой на битые блоки: mkfs -t vfat -c /dev/sdXY.

anonymous
()
Ответ на: комментарий от anonymous

Создал в gparted раздел на всю карту, с ф.с. «очищено». Потом:

mkfs -t vfat -c /dev/sdb1
badblocks /dev/sdb1

Обе команды выполнялись долго и ничего не выдали. gparted показал что создан раздел fat32 размером 31.25 гб, без ошибок монтированный.

Сейчас записываю фильмы, пока что 10 гигов записалось и все проигрываются, в VLC перемотка работает.

После 11 гигов попробовал:

ls -l --block-size=M ; sleep 20s;ls -l --block-size=M
Оказалось что скорость записи = 1.75 Mb/s хотя на карточке написано class 10.

Один фильм не открывается, другой очень плохо показывает:

hexdump film.mkv  | grep '*' -A1 -B1
2993000 0000 0000 0000 0000 0000 0000 0000 0000
*
299a000 da6a ff98 18c1 f998 2182 c14b 8cc9 1368
--
299c000 0000 0000 0000 0000 0000 0000 0000 0000
*
29a2000 db1a 7034 4e2d f994 03e7 ee0c 22a1 80ac
--
29a4000 0000 0000 0000 0000 0000 0000 0000 0000
*
29aa000 98c4 3a34 c87c 3d0c cfe5 8208 b131 5311
--
29ac000 0000 0000 0000 0000 0000 0000 0000 0000
*
29ae000 0653 992e e878 f4ec 1498 8754 8547 6fa9
Запустил badblocks с ключом -w, посмотрю что будет:
badblocks -fw -o badblocks.txt /dev/sdb

Turako
() автор топика

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

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

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

запустил f3write, он записал 2 гига, на третьем скорость упала до 125.00 KB/s

И по ссылке не понятно, как он с помощью fdisk выделил нужное место для создания раздела. Он там указал размер, а как он указывал начало и конец рабочей области, не понятно.

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

У SDFormatter нет линукс версии. Как его запускать?

Turako
() автор топика

Есть большая вероятность (с учётом того, что карта не маленькая), что реально это карточка на в несколько раз меньший объём, но прикидывающаяся большой. Это одна из любимых уловок китайцев.

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

Там подряд обычно. Приятель покупал на али СД 64ГБ, рабочими оказалиь 8. Сделал fdisk-ом рздел с самого начала, работает как 8. Продавец часть денег вернул.

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