Восстановление данных из пустого места

    Windows предлагает отформатировать

    Привет, Хабр. В новогодние каникулы появилась возможность написать об интересном случае (хотя подобных кейсов у нас в DATALABS не мало). А интересен он тем, что из полностью обнулённой USB флешки, мы удачно восстановили данные. Если интересно как? Добро пожаловать под кат…

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

    В нашем случае нужны данные и форматировать нельзя. Смотрим дисковым редактором, что же случилось с файловой структурой.

    WinHex:

    image

    Опаньки… Все! Все 32 гигабайта «залиты» нулями… Данных нет! Шеф, всё пропало.
    Сразу спрашиваем клиента, не давал ли кому? и тот злобный товарищ не запускал ли утилиты ремонта? Ответ: Нет, сразу к вам.

    Если флешку ни кто не «прошивал» и не записывал её паттерном, то не могла же она в миг обнулиться, на это требуется время и действие.

    image

    Ок, русские не сдаются. Спаяем микросхему и посмотрим содержимое памяти напрямую, в обход контроллера. В данном случае в одном корпусе два кристалла, Вместе со служебной информацией получается два дампа по 18гб.


    image

    В дампе не нули, но это ещё ни о чём не говорит, так как на современных флешках контроллер пишет данные не в явном виде, а через XOR операцию.

    Если все блоки одинаковы, то да, накопитель залит одним и тем же. Но нам повезло они разные, а это данные!

    Нужно подобрать ксор, и собрать блоки в нужной последовательности по алгоритму контроллера.

    image

    Пошаманим ростовским комплексом

    image

    И вауля, 26 гигабайт данных, 9000 файлов, битых из них 900. К сожалению картинку с данными мы не имеем права выкладывать, так как у нас в конторе конфиденциальность превыше всего.

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

    Качество современных чипов памяти весьма печальное, и несмотря на громогласные заявления производителей о том, что вот мы сделали огромное количество циклов записи… статистика показывает обратное. Износ происходит очень быстро, по сравнению с флешками которые измерялись мегабайтами. Ну не будем об этом здесь и сейчас.

    Касательно этого случая, флешка умирала и «сигнализировала» об этом косвенным путём, а именно: запускалась проверка диска, результат работы чекдиска — папка FOUND, в восстановленных данных присутствует. Это уже были первые звоночки, что она «сыпется».

    Контроллер увидел, что количество плохих ячеек памяти уже огромное и сделал такой «финт ушами» как, отдача в интерфейс нулей.

    Нам же пришлось вычитывать битые сектора, многократным чтением, какие-то из них удалось прочитать или восстановить из ECC. Как результат – клиент доволен. А начиналось то всё, с пустого места…
    Поделиться публикацией

    Комментарии 55

      0
      Алексей, спасибо за рассказ. Хотелось бы узнать ваше мнение о надежности современных носителей а лучше рейтинг флешек HDD SSD дисков :)
        +2
        Холиварная тема, да и без меня сравнительных тестов в сети много, но они больше про скорость, чем про надёжность.
        Мне приносят ссдшки и флешки всех брендов, то есть всё ломается, и скоррелеровать какой-то индекс от количества принесённых ко мне трупов, относительно проданных устройств… будет величина в попугаях.
        Моё личное мнение, если по простому, то Intel и Samsung, но это про микросхемы памяти, а контроллеры производители накопителей используют совсем разные и алгоритмы равномерного износа соответственно разные. По контроллерам мне можно высказаться только с точки зрения с каких проще делать восстановление данных. Так что мне лучше воздержаться от развешивания ярлыков «хороший» — «плохой».
          0
          > Моё личное мнение, если по простому, то Intel и Samsung,
          немного не понятно, Intel и Samsung приносят на восстановление больше или более надежные?
            +3
            Простите за двусмысленность. Эти бренды памяти, я бы отнёс к надёжным.
              0
              Что можете сказать про флешки Corsair?
                0

                Смотреть обзоры с фотками в разобранном виде. Обычно они ставят хорошую память

                  0
                  А SanDisk?
                    0
                    Были две SANDISK Ultra на 64Гб и на 128. Первая спустя некоторое время начала переподключаться во время копирования файлов. в USB3 порту, и чем дальше тем чаще, хотя в общем и целом работала. Вторая из коробки работала на скорости 100Кб\c в USB2 порту и аж до мегабайта в USB3 порту, что ни как не соответствует заявлениям, что она работает в 10 раз быстрее обычных флэшек. Из всего множества флэшек, которые у меня побывали — глючили только SanDisk-и, причем в 100% случаев.
                    Личная статистика, может не соответствовать реальному положению вещей)
                    0
                    У «большой тройки» производителей флешек Transcend, SanDisk, Kingston как сейчас с надежностью? И кого бы порекомендовали?
                      +1
                      Трансценд и Кингстон я всегда советую клиентам за хорошее соотношение цена-качество. А вот Сандиск не советую, хоть и хорошие, но дороже и самое главное капризные при восстановлении
                        0
                        SanDisk, это вообще, песня. При покупке электронной книги, в комплекте, как подарок, шла карта SanDisk microSDHC 16 GB. Отформатировал я её в exFAT и решил с неё раздавать торренты на отдельном компе. Так вот, она начала сыпаться программно. Поставил вместо неё в тот же картридер такую же Transcend и проблема ушла. При этом, SanDisk нормально работала на FAT32. Вот такие чудеса.
              0
              Где можно почитать про «алгоритмы равномерного износа», используемые в реальных флешках?

              Цель: хранить/писать в своих проектах информацию так, чтобы минимизировать выход флешек из строя. Сейчас, например, в одном проекте использую один большой файл, записи фиксированной длины, несколько тысяч/десятков тысяч записей по 256 байт в сутки — вроде бы весьма щадящие условия, но флешки выходят из строя часто.

              Чтобы было понятно: одновременно под такой/примерно такой нагрузкой у нас работает сотня-другая флешек USB/MicroSD, всё это много лет как.

              Самые частые симптомы:
              1. запись вроде как происходит нормально, но на самом деле ничего не пишется (обнаруживается обычно когда после перезагрузки изменения оказываются потерянными);
              2. чтение некоторых областей даёт нестабильный результат (два раза подряд запущенный md5sum даёт разные результаты);
              3. флешка просто перестаёт определяться как блочное устройство.

              Статистику не собирал, но субъективно usb и microsd ведут себя одинаково.

              P.S. а вообще есть у меня большие сомнения, что (во всяком случае у меня) дело только в износе NAND. BTW, давным давно покупали партию SLC флешек — они ломались так же.
              Да и читал опыт коллег, которые используют read-only флешки (с raspberry pi, например) — частота выхода флешек из строя снижается, но остаётся совсем ненулевой.

              P.P.S. выработал такую методику проверки:
              1. заполняем флешку данными с известной контрольной суммой, в linux
              dd if=/dev/urandom bs=1M count=РАЗМЕР iflag=fullblock | tee /dev/sdf | md5sum
              2. вынимаем флешку и вставляем обратно
              3. сверяем контрольную сумму с контрольной
              md5sum /dev/sdf
              4. заполняем нулями (надеясь, что контроллер флешки обработает это TRIM)
              dd if=/dev/zero of=/dev/sdf bs=4k
              5. для очистки совести проверяю, что с флешки читают нули
              hd /dev/sdf
              (если предыдущая проверка прошла успешно, то на мой памяти и тут сбоев не было)

              Так вот, не так уж редко новая флешка из магазина не проходит подобный тест.
              На самом деле, однократное прохождение теста ещё ничего не гарантирует, несколько раз встречал ситуацию, когда новая флешка ломается на втором или третьем повторе шагов 1-3.
                +1

                Износом занимается контроллер сам, как говорится аппаратно. Как бы вы не писали код, данные контроллер будет писать так как его прошли. Может в сети и есть инфа об этих алгоритма, вы всё равно ничего не сможете изменить. Только если будете сами писать напрямую в нанд. А это опять железо, новый велосипед.

                  0

                  Прошу прощения за ошибки, пишу с мобилки в метро…

                    0
                    Это понятно. Но хоть косвенно на ситуацию можно поменять, не просто так же Samsung сделал F2FS.

                    Что же до прямого доступа к памяти — да, пришли к этому, только у NAND слишком много ног, тут оказалось достаточно восьминогих NOR на несколько мегабайт.
                    По ним пока статистики нет, но вот буквально в конце прошлого года пришлось поменять такую микросхему в домашнем компютере, так что и они умеют ломаться, увы.
              +2
              Думаю, с учётом ненадёжности флешек можно было бы сделать такой девайс: USB-картридер на 2 одинаковые MicroSD или SD карты (и опционально неактивным слотом-заглушкой для хранения третьей запасной карты), со встроенным RAID-контроллером с зеркалированием, а также постоянным мониторингом состояния карт, и человеческой интуитивной индикацией. Например, на этом девайсе около каждого слота под карту должен быть красный светодиод и маленькая пищалка, если светодиод заморгал и пищалка запищала — с картой непорядок, требуется заменить и дождаться, пока RAID восстановится.
              А при подключении к компу этот девайс определялся бы как 2 диска: первый — это наш RAID-массив из двух карточек, а второй — это маленький служебный диск с лежащей на нём portable утилитой для управления RAID'ом, инструкцией, а также ярлыком-ссылкой на сайт производителя с подробной инструкцией и прочей инфой.
                +3
                Абсолютно непонятна ЦА такого костыля.
                Кому нужна надёжность — просто купят industrial usb drive и получат гораздо большую надёжность, чем у рэйда из дешманских карточек.
                А кому не нужна, те и не будут покупать такую штуку.
                  +2
                  Ну, я не раз видел заплаканных студенток, у которых пропала курсовая/дипломная работа из-за умершей флешки. Или коллег, у которых пропала важная информация.
                  Осветить эту ситуацию в рекламе — и девайсы будут брать.
                    +7

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

                      +1
                      Я отношусь к флешкам как к расходному материалу

                      Блин, вот я совсем не рассеянный, (за время учебы у меня была одна единственная флешка на 4 Гб, которую я не потерял и не сломал), но вот ни разу в голову не приходило что-то хранить на ней важное в единственном экземпляре. Да будь эта флешка с рейдом и с защитой от восстановления, ну и что, я МОГУ ее потерять, я МОГУ ее сломать, её МОГУТ украсть (у одногруппников флешки пропадали оставленные на парте в аудиотории во время перерыва).

                      Общее правило не то что не хранить важные данные на флешке, а не хранить «в одной корзине», что вы собственно и упомянули про бекапы и облако.
                        +2
                        Даже если что-то хранится в одной корзине, то жесткий диск домашнего компьютера существенно более надежная корзина, чем флешка.
                      0
                      Это слишком оптимистичная оценка… в моей практике народ и статикой (видать шелковое белье) народ ключики клиент-банков на флешке грохал таская заодно там и музычку с компьютера на компьютер)))
                    +3

                    Я не доверяю зеркалам. Если умрут, то как правило оба девайса. И программная беда если произойдёт, то отзеркалируется на оба. Банальное копирование на два разных устройства, вот лучшая резервка.

                      0
                      Значит, заточить RAID принципиально под разные карточки (разного производителя, с разной скоростью). Тогда вероятность одновременной смерти обеих будет очень мала. А если она не мала, значит, что-то не то с RAIDом и его сделали криво.
                        0
                        Всё равно это одно устройство, у которого может отказать контроллер или механически деградировать USB-разъём. Гораздо надёжнее использовать две флешки (благо, на запись их не обязательно вставлять поочерёдно — обычно есть 2 свободных USB, а на чтение сценарий использования никак не усложняется).

                        Если студент осознаёт проблемы надёжности, чтобы задуматься о покупке такого устройства, 2 обычных копеечных флешки ему не сложно будет использовать.
                          +1
                          Можно сделать два USB разьема в разные стороны, со своим контроллером в каждом. Т.е. по сути — две флешки, только с дополнительным общим контроллером, который во время простоя синхронизирует данные между ними. Можно даже сделать разборную конструкцию чтобы каждую флешку можно было открепить, что-то на нее скинуть, потом прицепить обратно и оно продублировалось…

                          Не говорю, что это разумно или конкурентоспособно. Просто можно сделать и так :)
                          Я бы купил (по цене ~2,5 флешек).
                            0
                            Это надо хорошо продумать синхронизатор, чтобы, если его заглючит (например, будет постоянно занимать шину на обоих устройствах), отдельные хранилища как-то это поняли и расцепились.

                            Ну и с синхронизацией интересно. В фоне-то синхронизирует, а если устройство вытащили из порта, сразу после записи, и синхронизироваться не успело? Батарейку добавить на этот случай?
                      0
                      Dell ставит такие штуки в сервера, правда насколько оно действительно нужно — большой вопрос.
                      +1
                      Странно, что с увеличением размера не растет надежность. Контроллер должен бы выравнивать износ, записывая во все ячейки равномерно. Подскажите, так и происходит?
                      В данной статье понятно, что флешка была забита под 0. А если бы утилизировалось из 32 только 20, прослужила бы она дольше?
                        0
                        Странно, что с увеличением размера не растет надежность
                        Растёт плотность записи. Первые flash-ячейки (SLC) хранили 1 бит, далее появились MLC, TLC, и вот уже QLC на подходе. Всё-таки, одно дело — есть заряд или нет, другое дело — точно дозировать заряд, чтобы безошибочно различать любой из 16 уровней.

                        Другая проблема — миниатюризация. Чем меньше ячейка, тем меньше в ней может храниться заряд при том же напряжении. Меньше заряд — сложнее защитить от утечек.
                        0
                        Качество современных чипов памяти весьма печальное, и несмотря на громогласные заявления производителей о том, что вот мы сделали огромное количество циклов записи… статистика показывает обратное. Износ происходит очень быстро, по сравнению с флешками которые измерялись мегабайтами.

                        Флешка — это ещё не так страшно, гораздо хуже — это отказ SSD!
                          0

                          Кстати у ссд такая же пасхалка есть, я вот думал добавить в статью или нет.

                            +1
                            Буду рад подробной статье про SSD, а в этой можно упомянуть в качестве анонса.
                          0
                          флешка умирала и «сигнализировала» об этом косвенным путём
                          А я думал что это из за вынимания флешки на горячую, без отключения.
                          Одна флешка постоянно просит сделать проверку, вероятно пора её заменить…
                            +3

                            Внимание на горячую может испортить файловую структуру, а на работоспособность флешки не влияет

                              0
                              Но ведь и папка FOUND говорит об испорченной файловой структуре, а не о повреждениях ячеек.
                                0

                                Но ведь и портится файловая структура от повреждений в ячейках.

                            0
                            С USB-флешками можно отпаять чип и пошаманить, а есть ли шансы на восстановление SD/microSD-карточек с аналогичными симптомами отдачи одних нулей?
                              0

                              Да конечно шансы есть. Просто доступ к микросхем памяти сложней. Посмотрите как мы восстанавливаем данные с монолитов https://habr.com/company/datalabs/blog/220667/

                              –1
                              У вас запятые в случайных местах.
                                0
                                А имеет смысл на современных (относительно новых) SSD покупать с запасом по объёму и оставить часть не размеченную под систему?
                                То есть вроде того, что увеличить объём заложенного производителем резервного пространства.
                                  +1

                                  Здравая мысль, но упрямство: "Не хочу делать резервные копии" умиляет

                                    0
                                    Скорее «некуда», вдобавок «некогда». Облачные хранилища не предлагать, для таких объёмов разориться проще.
                                      0
                                      Про резервные копии ничего не имел в виду. Делаю в обязательном порядке, а для особо критичных данных и 3-4 копии на разных носителях.
                                      Вопрос о том, чтобы минимизировать вероятность и максимально отсрочить необходимости внезапно заниматься переустановкой и восстановлением с бэкапа.
                                        0
                                        Если на SSD штатно заканчивается ресурс перезаписи, он переходит в read-only, и данные доступны. То есть, теоретически должно быть безразлично по надёжности, ресурс всё равно меряется количеством host writes.

                                        Резервом неиспользуемой области можно улучшить производительность записи и уменьшение износа при записи. Это обязательно сработает, если ОС не умеет использовать TRIM (т.к. в этом случае независимо от того, сколько свободно места на FS, контроллер считает весь диск занятым).

                                        А если ОС современная и использует TRIM, то без разницы — свободные сектора на неразмеченном разделе, или на рабочем, помеченные как свободные. Просто во втором случае при необходимости можно занять место, пожертвовав гипотетической скоростью записи и ресурсом (а потом освободить), а в первом случае резерв уже железный, невозможно его случайно скушать.
                                          0
                                          а чем host-writes отличается от NAND-writes? (в Crystal Disk Info второе значение меньше)
                                            0
                                            Host writes — логические записи, сколько команд на запись сектора получено.

                                            На моих SSD самая разная статистика Host/Nand Writes (TB):
                                            10/17, 3/38 и 73/60

                                            Я думаю, Host<Nand — фоновое выравнивание износа, Host>Nand — несколько команд подряд на запись в один сектор, которые оптимизировались в одну физическую запись.

                                            p.s. видимо, вы обратили внимание на неточность
                                            ресурс всё равно меряется количеством host writes
                                            Конечно, тут должно быть nand writes
                                    +1
                                    А о чем вообще думаю производители таких флешек? Что в голове у инженера, который запроектировал «при проблемах отдавать нули» вместо «при проблемах переходить в read-only»?
                                      0
                                      А о чём думают производители спорт-каров? Хочешь давить на гашетку, дави…
                                        0
                                        Нам же пришлось вычитывать битые сектора, многократным чтением, какие-то из них удалось прочитать или восстановить из ECC.

                                        Судя по вот этому, с read-only там было не всё так просто.
                                        Недавно одна флешка, которой пользовался много лет, стала read-only. На первый взгляд вроде читалась,
                                        но в части файлов был мусор. Ещё и операционная система на чтении такого добра любит подвисать.
                                        Так что не стал бы делать однозначные выводы.
                                        –1
                                        Реклама она такая реклама…
                                        А на «стол» pc3000 для монолитов смотрю денег не хватило? Проводочки…
                                          0
                                          Когда мы начали заниматься восстановлением данных с монолитов, тогда никаких столиков не существовало, даже самого комплекса от ростова ещё не было. У нас есть, но я лично предпочитаю проводочки, потому что электроника наука о контактах и у меня больше доверия пайке…
                                          Прежде чем считать наши деньги, удосужились бы посмотреть что статья про монолиты от апреля 2014 года, а столик для монолитов начал продаваться в марте 2017 года!!!
                                          0
                                          кстати, лежит точно такая же флешка, тоже сдохла… давным давно…
                                          еще телефон разбит и разломан, лежат потроха его в пакете, думаю как бы данные из памяти достать)
                                          на счет «спаяем микросхему» — хочется больше подробностей.
                                            0
                                            Считать данные с USB флешки можно через с любой программатор поддерживающий NAND микросхемы. Но данные так не лежат в явном виде, и потребуется софт для восстановления данных с флеш. На данный момент в продаже три комплекса для восстановления: PC3000Flash, FlashExtractor, RuSolut. Но наличие инструмента не гарантирует получение данных, ведь им нужно уметь пользоваться, там нет кнопки «восстановить всё», надо разбираться в алгоритмах записи в память, контроллеров и алгоритмов великое множество, по этому проще обратиться к тем, кто это делает каждый день и имеет эти комплексы.
                                            А с телефонами проще, там стоит микросхема, к которой можно припаяться как к SD карте, и считать образ, дальше развернуть под линухами или любым софтом под Windows, который умеет работать с ext файловыми структурами (если аппарат android, если яблоко, то в топку, там шифрование)
                                              0
                                              Только хотел уточнить, можно ли восстановить инфу с первого айпада. Нельзя..(

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

                                          Самое читаемое