LINUX.ORG.RU
ФорумTalks

Странная фигня с файлами на microsdxc

 ,


0

1

Год назад докупил к андроид-телефону дополнительную карту памяти. До недавнего времени работала нормально, а тут не смог открыть одну фотку на ней, в телефоне. Фотка загружалась на 10%, полоской сверху, и всё. Тогда я скинул на hdd все фотки, проверил карту (венда ошибок не нашла). На hdd некоторые фотки тоже оказались побитыми. Устав подключать и отключать телефон я вытащил карточку и воткнул её в usb-картридер. Два дня то включал её, то выключал и вдруг… на одном usb-гнезде прочитались те фотки, которые не читались ни на телефоне, ни на hdd, ни на других usb-гнёздах компа (через картридер). Я сравнил тоталом два файла (думал, может там пара байтов побита, ага):

https://i.postimg.cc/y8BXT5fm/badfile.png

Побита куча байтов. Они другие. Как такое вообще может быть? Требуется помощь зала. В линуксе (altlinux) я тоже экспериментировал, но там тоже беда.

★★★

Последнее исправление: rechnick (всего исправлений: 3)

Как такое вообще может быть?

У тебя карточка дохнет, как. В одном картридере звёзды сошлись и то ли он медленнее читает, то ли напряжение повыше даёт, то ли просто повезло. Дальше будет хуже, утекай.

Aceler ★★★★★
()

Проверьте карточку на реальный объём.

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

звёзды сошлись

Ну, ок. Просто в моём представлении, если файл не читается (он не пустой, что видно по скрину), то это всё. Но оказывается, при некоторых условиях, он всё-таки читается. Чудеса.

rechnick ★★★
() автор топика
Последнее исправление: rechnick (всего исправлений: 1)
Ответ на: комментарий от rechnick

Ну, ок. Просто в моём представлении, если файл не читается (он не пустой, что видно по скрину), то это всё. Но оказывается, при некоторых условиях, он всё-таки читается. Чудеса.

На самом деле в ячеечных устройствах нет понятия «не читается».

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

Ты запросил контроллер содержимое ячейки, контроллер ее опросил, она вернула 0x00, это валидное значение, и контроллер его тебе отдал. А то что час назад там было 0xFF, контроллеру знать неоткуда.

Дешевому контроллеру. Дорогие (а значит габаритные) умеют в CRC, балансировку, проверку записанного и тд. Дешевые не умеют.

Вдобавок, сам контроллер может барахлить, ведь твоя ОС опрашивает не ячейку, а контроллер, и что он там может намудрить - одному Онотоле известно.

Чего далеко ходить, у меня был SSD на Sandforce 2281-м. На него ставилась система, на него писались файлы. А стоило забрать питание - он стирался под ноль.

Но факт остается фактом - такой карточке доверять уже нельзя.

windows10 ★★★★★
()
Последнее исправление: windows10 (всего исправлений: 1)
Ответ на: комментарий от windows10

она вернула 0x00

Я бы не удивился нулям, но там не нули, на уровне байт. Сначала я думал, там мусор, но посмотрел ща, а там всё-таки нули (да), но на уровне бит:

95 ~ 15 (1001 0101 ~ 0001 0101)

D4 ~ D0 (1101 0100 ~ 1101 0000)

и т.д. Везде, где хватило терпения проверить, разница ровно в один бит.

rechnick ★★★
() автор топика
Последнее исправление: rechnick (всего исправлений: 2)
Ответ на: комментарий от rechnick

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

Какая там на низком уровне бага - мы вряд ли узнаем. Может ячейка, может микроконтроллер, может проводники.

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

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

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

Карточка дело наживное. Некоторых кадров жалко. Хорошо хоть основную часть перенёс + несколько файлов спас перетыканием картридера (совершенно случайно так получилось).

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

Там в обе стороны биты нарушаются на твоём скриншоте, как 0->1 так и 1->0. Мне кажется вполне можно восстановить все данные. Если два раза прочитать один и тот же файл в одном и том же слоте (только убедиться что второе чтение не из кеша) - файлы совпадут? Если нет - читаешь всю карту 10-20 раз, и побитово вычисляешь правильное их значение (т.е. 15 раз прочиталась единица, 5 раз ноль - значит там единица). И не надо отдельные файлы читать, просто образ сними, его чини описанным способом а потом уже подмонтируй и разбери на файлы. Скорее всего ошибки и в заголовках файловой системы случаются, так что часть файлов вообще читаются не с тех секторов и чинить их так не выйдет.

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

Допустим. Но зачем это знать человечку, если карточка у него - уже сдохла? Как ему это поможет, ммм?

- - -

Как такое вообще может быть? (c) Автор топика

windows10 ★★★★★
()

Вероятно сказалось стекание заряда с плавающего затвора. Далеко не все контроллеры занимаются регенерацией данных, даже если запитаны 24/7. А если у честь, что в современных флешках в одном затворе хранится несколько бит, то вероятность битовых ошибок возрастает.

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

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

Чего далеко ходить, у меня был SSD на Sandforce 2281-м. На него ставилась система, на него писались файлы. А стоило забрать питание - он стирался под ноль.

Фигасе как удобно. Хотеть такую карточку!

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

Фигасе как удобно. Хотеть такую карточку!

SSD в формате карточек вроде пока ещё не производят.

anc ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)