Восстановление данных с флешки при повреждении транслятора флеш-памяти
Суть проблемыНевозможность обращения к флешке штатными средствами операционной системы. Это происходит из-за разрушения таблицы трансляции — соответствия логических адресов физическим ячейкам флеш-памяти. Флешка не определяется компьютером или определяется нулевым объёмом. При этом пользовательские файлы становятся недоступными.
Причины возникновения
- Износ NAND-ячеек в силу различных причин
- Небезопасное извлечение устройства
- Стиль использования, связанный с частой записью данных на флешку (работа бухгалтерской, почтовой или иной базы данных, редактирование документов непосредственно на флешке)
- Низкое качество самой флеш-памяти, применённой в конкретном устройстве
- Внутренние сбои контроллера флеш-памяти
- USB-флешка определяется с неправильным названием устройства
- Объём памяти флешки определяется как 0
- При обращении к флешке, Проводник выдаёт сообщение «Вставьте диск»
- Кард-ридер не реагирует на подключение SD, CF карт
- Фотоаппарат выдаёт сообщение об ошибке карты памяти
Из всех возможных неисправностей, сбои флеш-памяти оказывают наибольшее влияние на файлы пользователя. Т. к. повреждается непосредственно носитель информации во флешке. Более всего страдают данные, с которыми работали непосредственно перед сбоем или во время сбоя флешки, т. е. обычно самые актуальные. Результат восстановления информации при повреждении транслятора зависит от степени разрушения флеш-памяти. В большинстве случаев удаётся восстановить подавляющую часть пользовательской информации.
Методы диагностирования
В отличие от механической или электрической поломки, данный вид неисправности никаких внешних проявлений не имеет. Флешка остаётся абсолютно целая. Никаких визуальных повреждений нет, даже если открыть корпус флешки.
Приведём пример, как отделить данную неисправность от похожего по проявлениям повреждения файловой системы. Вот флешка Transcend 64GB, подключена к USB.
Рис. 1
Вот результат попытки обращения к ней.
Рис. 2
Система просит вставить диск в дисковод. При повреждении файловой системы появилось бы сообщение о необходимости форматирования диска (см. описание повреждения ФС «ссылка»). Далее, смотрим, что выводится в Диспетчере устройств.
Рис. 3
Открываем «Дисковые устройства» и видим там вместо Transcend 64GB некий USB MEMORY BAR. Эта строка зависит от контроллера флешки и у всех контроллеров разная. В свойствах тома этого устройства ёмкость накопителя указана нулевая, т. е. контроллер не видит памяти флешки. Так определяется сам контроллер флешки, если ему при включении не удалось полностью инициализировать встроенную микропрограмму. Посмотрим, что выдают сторонние утилиты тестирования накопителей.
Рис. 4
Вот, как определяет эту флешку Victoria: 0Кб, Invalid geometry. Это значит, что параметры его неизвестны, а объём равен нулю.
Никакими программными средствами ничего считать при повреждении флеш-памяти нельзя и паять там тоже нечего. Здесь поможет только вмешательство квалифицированного специалиста.
Методика восстановления
Как же восстановить информацию в таком случае? Во-первых, нужно выпаять и считать все микросхемы памяти, их может быть несколько. Для этого используются вот такие устройства.
Рис. 5
Это считыватель микросхем NAND памяти, работающий совместно с программой Flash Extractor (разработки компании Софт-центр).
Ещё один конкурирующий продукт ниже.
Рис. 6
Это считыватель, работающий совместно с программно-аппаратным комплексом PC3000Flash (производства компании ACE Lab).
Оба устройства привязаны к своему программному обеспечению. Задача считывателя состоит в том, чтобы считать микросхемы памяти с минимальным количеством ошибок. Для этого используется считывание с пониженной скоростью и многократные повторы при чтении нестабильно читающихся блоков памяти. Это хоть и замедляет кратно процесс считывания, но улучшает качество восстановления. Например, считывание 16-и гигабайтной микросхемы длится порядка сорока минут. Кажется долго? Но это не самая долгая процедура при восстановлении таких неисправностей, и это только первый этап восстановления.
Как храняться данные во флешке
Основная трудность восстановления данных в этом случае заключается в том, что данные внутри микросхем памяти хранятся совсем не так, как вы их видите в окне Проводника. Операционная система, работая с дисками и флешками (для неё это одно и тоже) оперирует логическим номером (LBA, сектор 512 байт) блока от 0 до N, где N — максимальное значение LBA, записанное в паспорте накопителя. При повреждении флеш-памяти, флешка отдаёт неправильный паспорт, в котором максимальное LBA не указано или указано не верно, как на рис. 4, что приводит к недоступности данных.
Внутри флеш-память представляет собой массив из ячеек, объединённых в сектора, которые, в свою очередь, объединены в блоки, размер которых достигает нескольких десятков килобайт. Операция чтения выполняется над сектором, размер которого может быть от 0,5 до 8 КБ (чем новее микросхема, тем больше сектор — это увеличивает плотность хранения информации, уменьшает стоимость, но и снижает долговечность). А операция записи выполняется над блоком секторов. Т. е. если вы изменили в своём документе несколько строк байт в 300, то контроллер считает весь блок, допустим, 32768 байт (32КБ), изменит в нём ваши новые 300 байт и запишет обратно. Данная особенность пагубно сказывается на долговечности флеш-памяти, т. к. её ресурс определяется количеством гарантированных записей. Для современных микросхем составляет порядка 3000 — 10000 записей. Потом ячейка не только перестанет записывать информацию, но и считываться с неё будут неверные данные. При этом, микросхемы уже с завода могут содержать определённое количество неисправных ячеек. Их количество нормируется и отражается в маркировке. При чём общий объём блоков флеш-памяти несколько превышает паспортный объём готовой флешки. Это связано с тем, что микросхемы флеш-памяти содержат резервные блоки, предназначенные для замещения вышедших из строя.
Вернёмся к нашим LBA. Выше мы узнали, что входными данными для контроллера являются логические номера 512-и байтных секторов. С другой стороны к нему подключена флеш-память с совсем другой организацией — в каждом её секторе содержится несколько 512-и байтных блоков. Т. е. нужно как-то сопоставить входные номера с номерами физических ячеек памяти и ещё учесть нерабочие. В сущности это и есть трансляция. И информация о ней хранится в самой микросхеме памяти. Казалось бы зачем её хранить, если можно вывести один раз формулу и вычислять номер нужной ячейки? Тогда мы каждый раз при обращении по одному LBA будем попадать в одну и туже область память, что быстро выведет её из строя. Чтобы продлить жизнь флеш-памяти, соответствие входного LBA и ячейки памяти постоянно меняется. Это называется выравнивание износа — распределение записи как можно равномернее по всему массиву флеш-пямяти. Чем современнее флешка, тем сложней этот алгоритм. Наибольшей сложности он достигает в SSD. Поэтому транслятор так же, как и пользовательские данные, хранится во флеш-памяти и постоянно меняется. Рано или поздно он перестаёт считываться и мы увидим в строке объёма 0 байт. Поэтому бессмысленно перепаивать память в идентичную флешку — при этом переносится сам источник сбоя и на новой плате будут теже симптомы.
Но и это ещё не всё. Для увеличения скорости работы современные микросхемы флеш-памяти могут работать с двумя адресами одновременно. Допустим, нужно считать две страницы. При последовательной схеме, нужно подать команду чтения, задать адрес, получить данные, потом всё повторить для следующей страницы. А можно так: подать команду чтения, подряд адреса, на выходе считать сначала одну потом вторую страницу. Экономится одна команда и соответствующие времена задержек, что особенно ценно при записи. К чему это приводит? А приводит это к тому что информация перед записью претерпевает дополнительные преобразования.
Например, во флешке две микросхемы памяти. Информация сначала делится на две части для записи в обе микросхемы, затем эти части ещё раз делятся для записи одновременно по двум адресам для каждой микросхемы. Поэтому, если во флешке, состоящей из нескольких микросхем, хотя бы одну считать невозможно или в ней много ошибок, то от остальных микросхем пользы будет немного, потому что данные разделены между всеми микросхемами равномерно. Это простой пример, т. к. в современных флешках применяется в среднем порядка четырёх последовательных преобразований. А общее количество их вариантов порядка полутора десятков, в зависимости от контроллера и типа микросхем памяти.
При восстановлении данных, после считывания микросхем памяти, нужно в обратном порядке повторить все преобразования, которые делал контроллер при записи, учитывая актуальную таблицу трансляции и максимально скорректировать ошибки чтения. В этом и состоит сложность восстановления флешек при повреждении транслятора.
Что нельзя делать при повреждении трансляции флеш-памяти.
- Нельзя ничего паять на флешке — это не даст никакого результата при данной неисправности.
- Не доверяйте повреждённую флешку с важными данными людям, не специализирующимся на восстановлении информации, они могут усложнить проблему.