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

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

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

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

WinHex:

image

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

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

image

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


image

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

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

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

image

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

image

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

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

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

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

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

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

Комментарии (52)


  1. pecmapm
    06.01.2019 11:02

    Алексей, спасибо за рассказ. Хотелось бы узнать ваше мнение о надежности современных носителей а лучше рейтинг флешек HDD SSD дисков :)


    1. datalabs Автор
      06.01.2019 11:15

      Холиварная тема, да и без меня сравнительных тестов в сети много, но они больше про скорость, чем про надёжность.
      Мне приносят ссдшки и флешки всех брендов, то есть всё ломается, и скоррелеровать какой-то индекс от количества принесённых ко мне трупов, относительно проданных устройств… будет величина в попугаях.
      Моё личное мнение, если по простому, то Intel и Samsung, но это про микросхемы памяти, а контроллеры производители накопителей используют совсем разные и алгоритмы равномерного износа соответственно разные. По контроллерам мне можно высказаться только с точки зрения с каких проще делать восстановление данных. Так что мне лучше воздержаться от развешивания ярлыков «хороший» — «плохой».


      1. alian
        06.01.2019 11:32

        > Моё личное мнение, если по простому, то Intel и Samsung,
        немного не понятно, Intel и Samsung приносят на восстановление больше или более надежные?


        1. datalabs Автор
          06.01.2019 11:33

          Простите за двусмысленность. Эти бренды памяти, я бы отнёс к надёжным.


          1. jevius
            06.01.2019 13:48

            Что можете сказать про флешки Corsair?


            1. datalabs Автор
              06.01.2019 14:06

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


              1. nrgch
                06.01.2019 16:55

                А SanDisk?


                1. fedorro
                  06.01.2019 19:50

                  Были две SANDISK Ultra на 64Гб и на 128. Первая спустя некоторое время начала переподключаться во время копирования файлов. в USB3 порту, и чем дальше тем чаще, хотя в общем и целом работала. Вторая из коробки работала на скорости 100Кб\c в USB2 порту и аж до мегабайта в USB3 порту, что ни как не соответствует заявлениям, что она работает в 10 раз быстрее обычных флэшек. Из всего множества флэшек, которые у меня побывали — глючили только SanDisk-и, причем в 100% случаев.
                  Личная статистика, может не соответствовать реальному положению вещей)


              1. DaneSoul
                06.01.2019 17:40

                У «большой тройки» производителей флешек Transcend, SanDisk, Kingston как сейчас с надежностью? И кого бы порекомендовали?


                1. datalabs Автор
                  06.01.2019 17:46
                  +1

                  Трансценд и Кингстон я всегда советую клиентам за хорошее соотношение цена-качество. А вот Сандиск не советую, хоть и хорошие, но дороже и самое главное капризные при восстановлении


      1. edo1h
        06.01.2019 14:32

        Где можно почитать про «алгоритмы равномерного износа», используемые в реальных флешках?

        Цель: хранить/писать в своих проектах информацию так, чтобы минимизировать выход флешек из строя. Сейчас, например, в одном проекте использую один большой файл, записи фиксированной длины, несколько тысяч/десятков тысяч записей по 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. datalabs Автор
          06.01.2019 14:41

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


          1. datalabs Автор
            06.01.2019 14:42

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


          1. edo1h
            06.01.2019 14:54

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

            Что же до прямого доступа к памяти — да, пришли к этому, только у NAND слишком много ног, тут оказалось достаточно восьминогих NOR на несколько мегабайт.
            По ним пока статистики нет, но вот буквально в конце прошлого года пришлось поменять такую микросхему в домашнем компютере, так что и они умеют ломаться, увы.


  1. stalinets
    06.01.2019 11:26

    Думаю, с учётом ненадёжности флешек можно было бы сделать такой девайс: USB-картридер на 2 одинаковые MicroSD или SD карты (и опционально неактивным слотом-заглушкой для хранения третьей запасной карты), со встроенным RAID-контроллером с зеркалированием, а также постоянным мониторингом состояния карт, и человеческой интуитивной индикацией. Например, на этом девайсе около каждого слота под карту должен быть красный светодиод и маленькая пищалка, если светодиод заморгал и пищалка запищала — с картой непорядок, требуется заменить и дождаться, пока RAID восстановится.
    А при подключении к компу этот девайс определялся бы как 2 диска: первый — это наш RAID-массив из двух карточек, а второй — это маленький служебный диск с лежащей на нём portable утилитой для управления RAID'ом, инструкцией, а также ярлыком-ссылкой на сайт производителя с подробной инструкцией и прочей инфой.


    1. lopatoid
      06.01.2019 11:42
      +1

      Абсолютно непонятна ЦА такого костыля.
      Кому нужна надёжность — просто купят industrial usb drive и получат гораздо большую надёжность, чем у рэйда из дешманских карточек.
      А кому не нужна, те и не будут покупать такую штуку.


      1. stalinets
        06.01.2019 12:07
        +1

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


        1. Alex_ME
          06.01.2019 12:34
          +4

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


          1. mapron
            06.01.2019 13:31
            +1

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

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

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


            1. Alex_ME
              06.01.2019 13:35
              +2

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


        1. d-stream
          06.01.2019 17:03

          Это слишком оптимистичная оценка… в моей практике народ и статикой (видать шелковое белье) народ ключики клиент-банков на флешке грохал таская заодно там и музычку с компьютера на компьютер)))


    1. datalabs Автор
      06.01.2019 11:50
      +2

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


      1. stalinets
        06.01.2019 12:09

        Значит, заточить RAID принципиально под разные карточки (разного производителя, с разной скоростью). Тогда вероятность одновременной смерти обеих будет очень мала. А если она не мала, значит, что-то не то с RAIDом и его сделали криво.


        1. qw1
          06.01.2019 13:47

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

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


          1. Quiensabe
            06.01.2019 19:54
            +1

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

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


            1. qw1
              07.01.2019 01:10

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

              Ну и с синхронизацией интересно. В фоне-то синхронизирует, а если устройство вытащили из порта, сразу после записи, и синхронизироваться не успело? Батарейку добавить на этот случай?


    1. navion
      06.01.2019 22:08

      Dell ставит такие штуки в сервера, правда насколько оно действительно нужно — большой вопрос.


  1. gotch
    06.01.2019 12:22
    +1

    Странно, что с увеличением размера не растет надежность. Контроллер должен бы выравнивать износ, записывая во все ячейки равномерно. Подскажите, так и происходит?
    В данной статье понятно, что флешка была забита под 0. А если бы утилизировалось из 32 только 20, прослужила бы она дольше?


    1. qw1
      06.01.2019 13:59

      Странно, что с увеличением размера не растет надежность
      Растёт плотность записи. Первые flash-ячейки (SLC) хранили 1 бит, далее появились MLC, TLC, и вот уже QLC на подходе. Всё-таки, одно дело — есть заряд или нет, другое дело — точно дозировать заряд, чтобы безошибочно различать любой из 16 уровней.

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


  1. Space__Elf
    06.01.2019 12:59

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

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


    1. datalabs Автор
      06.01.2019 13:15

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


      1. Space__Elf
        06.01.2019 14:10

        Буду рад подробной статье про SSD, а в этой можно упомянуть в качестве анонса.


  1. lonelymyp
    06.01.2019 13:08

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


    1. datalabs Автор
      06.01.2019 13:16
      +1

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


      1. qw1
        06.01.2019 13:50

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


        1. datalabs Автор
          06.01.2019 14:09

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


  1. KorDen32
    06.01.2019 14:00

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


    1. datalabs Автор
      06.01.2019 14:14

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


  1. Jamato
    06.01.2019 16:41
    -2

    У вас запятые в случайных местах.


  1. wlr398
    06.01.2019 16:57

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


    1. datalabs Автор
      06.01.2019 17:10
      +1

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


      1. Evengard
        06.01.2019 17:29

        Скорее «некуда», вдобавок «некогда». Облачные хранилища не предлагать, для таких объёмов разориться проще.


      1. wlr398
        06.01.2019 17:43

        Про резервные копии ничего не имел в виду. Делаю в обязательном порядке, а для особо критичных данных и 3-4 копии на разных носителях.
        Вопрос о том, чтобы минимизировать вероятность и максимально отсрочить необходимости внезапно заниматься переустановкой и восстановлением с бэкапа.


        1. qw1
          07.01.2019 01:20

          Если на SSD штатно заканчивается ресурс перезаписи, он переходит в read-only, и данные доступны. То есть, теоретически должно быть безразлично по надёжности, ресурс всё равно меряется количеством host writes.

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

          А если ОС современная и использует TRIM, то без разницы — свободные сектора на неразмеченном разделе, или на рабочем, помеченные как свободные. Просто во втором случае при необходимости можно занять место, пожертвовав гипотетической скоростью записи и ресурсом (а потом освободить), а в первом случае резерв уже железный, невозможно его случайно скушать.


  1. legolegs
    06.01.2019 18:13

    А о чем вообще думаю производители таких флешек? Что в голове у инженера, который запроектировал «при проблемах отдавать нули» вместо «при проблемах переходить в read-only»?


    1. datalabs Автор
      06.01.2019 18:52

      А о чём думают производители спорт-каров? Хочешь давить на гашетку, дави…


    1. wlr398
      06.01.2019 19:12

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

      Судя по вот этому, с read-only там было не всё так просто.
      Недавно одна флешка, которой пользовался много лет, стала read-only. На первый взгляд вроде читалась,
      но в части файлов был мусор. Ещё и операционная система на чтении такого добра любит подвисать.
      Так что не стал бы делать однозначные выводы.


  1. endoftime
    06.01.2019 21:28
    -1

    Реклама она такая реклама…
    А на «стол» pc3000 для монолитов смотрю денег не хватило? Проводочки…


    1. datalabs Автор
      06.01.2019 21:32

      Когда мы начали заниматься восстановлением данных с монолитов, тогда никаких столиков не существовало, даже самого комплекса от ростова ещё не было. У нас есть, но я лично предпочитаю проводочки, потому что электроника наука о контактах и у меня больше доверия пайке…
      Прежде чем считать наши деньги, удосужились бы посмотреть что статья про монолиты от апреля 2014 года, а столик для монолитов начал продаваться в марте 2017 года!!!


  1. KirEv
    08.01.2019 04:38

    кстати, лежит точно такая же флешка, тоже сдохла… давным давно…
    еще телефон разбит и разломан, лежат потроха его в пакете, думаю как бы данные из памяти достать)
    на счет «спаяем микросхему» — хочется больше подробностей.


    1. datalabs Автор
      08.01.2019 13:20

      Считать данные с USB флешки можно через с любой программатор поддерживающий NAND микросхемы. Но данные так не лежат в явном виде, и потребуется софт для восстановления данных с флеш. На данный момент в продаже три комплекса для восстановления: PC3000Flash, FlashExtractor, RuSolut. Но наличие инструмента не гарантирует получение данных, ведь им нужно уметь пользоваться, там нет кнопки «восстановить всё», надо разбираться в алгоритмах записи в память, контроллеров и алгоритмов великое множество, по этому проще обратиться к тем, кто это делает каждый день и имеет эти комплексы.
      А с телефонами проще, там стоит микросхема, к которой можно припаяться как к SD карте, и считать образ, дальше развернуть под линухами или любым софтом под Windows, который умеет работать с ext файловыми структурами (если аппарат android, если яблоко, то в топку, там шифрование)


      1. Konan_Var_var
        08.01.2019 23:48

        Только хотел уточнить, можно ли восстановить инфу с первого айпада. Нельзя..(