The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Рекомендации по восстановлению данных со сбойного накопителя
USB флехи и SSD предмет простой: или прочиталось или нет. Шансов что при
повторной попытке не читавшийся сектор прочитается - мало. Если заряд в флехе
утек, то утек. Если там что-то более системное, слет таблиц трансляции, кончина
(фирмвари) контроллера и прочее - ddrescue опять же не поможет. Это или
спецутилиты под конкретный контроллер или подпайка к NAND и вычитывание на
программаторе. Сам не сделаешь с такими вопросами.

HDD - интереснее, механика мрет разнообразно. Довольно часто с цатой попытки
чтение нестабильного сектора все же проскакивает. Если наивно монтировать диск
средствами ОС, ядро наткнувшись на read error быстро сдастся, файлов не
получишь, если не прочиталось по быстрому что-то важное типа суперблока, таблиц
разделов и проч. А если построить образ за несколько проходов - может выйти
довольно живым, монтируемым и с доступными файлами, плюс-минус то, что не
прочиталось совсем.


Идея такая, что проходов чтения несколько:

1) Параметры 1-го прохода - при ошибке чтения пропускаем большой кусок, чтобы
физически проблемную область обойти. Активное тормошение сбойной области может
добить нестабильную механику или вызвать фатальные глюки прошивки диска. Будет
у тебя половинка образа - потеряешь как дурак большинство файлов.

2) Когда образ из 1) готов, дочитываем более дотошно, с повторными попытками и
прочими камасутрами, например реверс направления чтения или что еще, в надежде
что чтение все же проскочит. Количество "уточняющих" проходов - пока не
задолбаешься, или пока не перестанут вычитываться сектора. Или как вариант
пациент может умереть на очередной итерации, но это уже не важно, образ уже
достаточно хороший, это была минимизация потерь. Насколько получится - столько
и будет. Чем больше тем лучше, но HDD может решить иначе. Если не идиотничать,
получишь большинство файлов в целости и сохранности.

Некоторые моменты:

1) Читать имеет смысл по размеру блока ECC. У старых жестких дисков 512 байтов.
У новых ("advanced format") - 4096 байтов. Чем меньше блок тем медленнее
чтение. Прочлось-не прочлось индивидуально для ECC-блока ("hardware sector").
Необоснованно крупные блоки увеличивают потери данных. Если читать блоком
мегабайт - даже если не прочтётся 1 сектор, чтение завалится для всего
мегабайта и потеряется целиком. А если это 512 байтов сектора и не прочелся 1
сектор а остальные ок - мы получим почти мегабайит данных, кроме 1 сектора.
Разница однако. Особенно если это партишн или суперблок, без которых так сходу
ФС вообще не смонтируется.

2) При желании этим заниматься неплохо бы узнать кто такие UNC, IDNF, defect
lists, атрибуты smart и проч, чтобы хотя-бы примерно понимать на что нарвался и
перспективы (pending sectors, ...). Неплохо бы понимать логи/битмап чтения
используемой софтины. По крайней мере чтобы не напортачить. Например если при
разных попытках использовать разные размеры блока - есть риск ушатать образ,
когда утилита читанет очередные сектора в неправильное смещение образа, считая
не тот размер блока который реально был. Do not use force, try to think, Luke.

3) В тяжелых случаях может потребоваться подкрутить таймауты ядра на link
reset, число попыток и все такое прочее. Иначе ядро разочаруется в HDD и
потеряет его. "Насовсем" - до ребута. Но это лечится - можно вручную
пересканировать и найти пропавший жесткий диск.

4) Перезагружать и особенно выключать компьютер с нестабильным жестким диском -
худшая идея на свете. Если жесткий диск не стартанет - облом стопроцентный,
после этого данные сможет вынуть только серьезный специалист. Необдуманный
ресет может облегчить кошелек на очень круглую сумму. Если жесткий диск все-же
потерялся, как в 3) - гуглишь как вызвать рескан жестких дисков, изучаешь /sys
и заново ресканишь свой жесткий диск. Через минутку-другую после отвала.
Фирмварь в это время может вкалывать пытаясь ремапнуть проблемный сектор, ядро
же думает что жесткий диск повис и пытается link reset устроить. Фирмвара может
думать довольно крепко, не ответит даже на IDENTIFY пока не закончит. В этом
случае ядро очень огорчается и считает девайс мертвым. Так что подождать
немного до того как ресканить. Никаких ребутов и выключений питания - после них
жесткий диск может не запуститься совсем.

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

6) Если порушено много - осторожно! После того как у жесткого диска закончится
grown defect list (таблица ремапа, типично жесткий диск может перенести
2000-4000 проблемных секторов) - может случиться все что угодно. WD уходят в
что-то типа safe mode, считая девайс слишком дохлым, и обычными способами уже
ничего не получишь. ATA командами "read sector" - читается. Но вот всякие NCQ и
READ MULTI отваливаются, ядро так с наскока получает от ворот поворот и видит
сплошные read error. Наверное можно переубедить, заставив забить на NCQ и
читать по 1 сектору, но - лучше не нарываться.
 
28.02.2018 , Автор: Аноним , Источник: https://www.opennet.ru/openforum/vs...
Ключи: disk, bad, sector, ddrescue
Раздел:    Корень / Администратору / Система / Диски и файлы / Диагностика и Восстановление после сбоя

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Аноним (-), 22:53, 28/02/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Спасибо, познавательно. Лично я до чтения статьи ограничился бы одним проходом... Теперь буду читать пока крутится :) Правда, не всегда HDD на 1 Тб можно прочитать несколько раз, так как некуда складывать эти разы.
     
     
  • 2.2, Аноним (-), 11:09, 01/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Не нужно "складывать все эти разы". Утилита ddrescue, например, умеет строить map-файл диска и при первом проходе пропускать нечитаемые сектора, а при последующих проходах складировать удачно прочитанные сектора в нужные места. Так можно за несколько проходов сделать точную копию сыплющегося диска с минимумом потерь данных, пока механика или контроллер совсем не умрёт или количество неудачных чтений сектора не превысит указанных в параметрах значений.
     
     
  • 3.5, Аноним (-), 22:38, 01/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Один раз так прочиталось, другой раз эдак. Или считаем прочитанные без ошибок данные всегда верными?
     
     
  • 4.6, angra (ok), 04:46, 02/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Один раз так прочиталось, другой раз эдак.

    Хоть раз такое встречал? ЕМНИП на каждый сектор идет несколько байт CRC, если совпадения не произойдет, то контроллер выдаст ошибку, а не данные. Теоретически конечно возможны изменения в данных, которые дадут такой же CRC, но маловероятны.

     
     
  • 5.11, Аноним (-), 14:50, 03/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сейчас там чаще всего не CRC а FEC - код коррекции ошибок Поэтому ошибка чтения... большой текст свёрнут, показать
     
  • 4.12, Аноним (-), 14:56, 03/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Один раз так прочиталось, другой раз эдак. Или считаем прочитанные без ошибок
    > данные всегда верными?

    У современных накопителей довольно мощные коды FEC, поэтому отдавать разные данные для них не характерно и что-то такое можно скорее увидеть при жестких глюках контроллера. Но врядли кто-то в здравом уме пойдет читать проблемный винч на глючном контроллере. И таки dmesg полезно читать, не игноря признаки проблем.

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

     
  • 2.10, Аноним (-), 14:23, 03/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Спасибо, познавательно. Лично я до чтения статьи ограничился бы одним проходом...

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

    > Теперь буду читать пока крутится :) Правда, не всегда HDD на 1
    > Тб можно прочитать несколько раз, так как некуда складывать эти разы.

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

    А при душняке с местом очень помогает btrfs, в котором можно сжатие врубить и делать экспериментальные варианты образа используя cp --reflink, так что храниться будут только отличия от "базового". Удобно в случае если например fsck хочется запустить, но есть опасения что он вместо починки добьет образ. Особенно актуально для reiserfs, где fsck это умеет, но подстраховаться не лишне и для остальных, потому что если fsck испортит образ а у вас не было на этот счет плана - вы пролетаете. А копировать терабайт целиком - не только место занимает но и просто долго. Так что cp --reflink для таких вещей невероятно рулит. Копирование завершается "мгновенно" а по мере записи в копию - файлуха будет "unshare"-ить блоки отличающиеся от оригинала. Это такой доведенный до абсолюта dedup, когда явно указывается что копия изначально  - 100% дубликат оригинала, а дальше как получится.

     

  • 1.3, Аноним (-), 11:18, 01/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Без реальных примеров - грош цена статье. Теория, теория...
     
     
  • 2.16, Аноним (-), 07:52, 07/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Без реальных примеров - грош цена статье. Теория, теория...

    Это из практического опыта бега по граблям, используя Linux, при желании вынуть данные с минимумом потерь, и чтоб не стоило как самолет. А если кто хотел заучить 5 команд и стать типа экспертом, команда одна: идете с винчом и круглой суммой в лабу к спецам. Потому что надо соображать что и зачем делаешь, а не глупо вводить команды. Иначе станет только хуже.

    p.s. если винч отпал из-за тупняков фирмвари на сбойных секторах, рескан дисков так:

    echo "- - -" > /sys/class/scsi_host/host5/scan

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

     

  • 1.4, Аноним (-), 11:56, 01/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Довольно рваная информация, но интересная

    По ddrescue: смысл в том, что сначала читается весь диск с максимально возможной скоростью, обнаруживая и пропуская "медленные" и плохие сектора, а затем происходит глубокая вычитка этих отдельных секторов. Статей много в интернетах

     
  • 1.7, Аноним (-), 19:12, 02/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Какой алгоритм для восстановления microSD? Можно по шагам: подключить ридер, запустить такую-то утилиту с такими-то параметрами?
     
     
  • 2.13, Аноним (-), 03:32, 04/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Самое очевидное - понять что с картой и куда копать Разобраться в ситуации в Li... большой текст свёрнут, показать
     

  • 1.8, demimurych (ok), 21:03, 02/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Манера подачи материала отбивает желание с ним знакомиться. Это раз.
    Попытка прочитать сбойный сектор по нескольку раз известна с махровых Нортон Диск Доктор и прочих похожих утилит.
     
     
  • 2.9, Michael Shigorin (ok), 10:47, 03/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Манера подачи материала отбивает желание с ним знакомиться. Это раз.

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

     
  • 2.14, Аноним (-), 03:58, 04/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Манера подачи материала отбивает желание с ним знакомиться. Это раз.

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

    > Попытка прочитать сбойный сектор по нескольку раз известна с махровых Нортон Диск
    > Доктор и прочих похожих утилит.

    Только NDD под Linux нет. И битмапы/логи он вроде бы не строил. А они позволяют повторить попытку как-нибудь потом. И даже переиграв параметры, например читая с конца диска или делая прыжки в сторону между чтениями. Это может спровоцировать подлет голов чуть иначе, может прочитаться что-то еще. Такие утилиты позволяют опробовать несколько вариантов которые как-то по разному отвзаимодействуют с фирмварью накопителя. В результате опробовав пяток разных способов можно вынуть "почти все". Ну как, с диска который уронили включеным я вынул все минус 2000 секторов (там где головы чиркнули по блинам). Потом у него пыль от запилов долетела до служебки и он все-же умер окончательно, но 2000 секторов при настолько тяжелом случае весьма маргинальные потери. Если делать глупо, "умер окончательно" может наступить до того как вы вообще что-то осмысленное прочитаете.

     

  • 1.15, illkman (?), 21:44, 05/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    На pc3000 если нужны данные, если нет то можно добивать долбать и тп.
     
     
  • 2.17, Аноним (-), 08:14, 07/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > На pc3000 если нужны данные, если нет то можно добивать долбать и тп.

    А за хлебом в магазин надо на самолете подкатывать? Иначе не по пацански?

    Если у диска в целом хорошее состояние, но с десяток секторов не читается, так что MBR, например, не удалось читануть с 1 попытки, но прокатило с 10-й, а накрайняк его и перестроить можно - нафуя там PC3K?

     

  • 1.18, Сергей (??), 08:56, 07/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не когда не доводилось восстанавливать!
    Обычно zabbix спамит об ошибках диска.
    Идешь в магазин и покупаешь новый диск.

     
     
  • 2.20, Crazy Alex (ok), 15:58, 19/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Особенно о проблемах на компе родителей, ноутбуке жены и так далее, угу. Face it - большинство "простых пользователей" бекапов не делает. А жаловаться всё равно потом к кому-то бегут.
     
     
  • 3.21, Аноним (-), 13:44, 24/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А еще Zabbix не помогает если кто-то по запаре махнул рукой и коробка с внешним диском улетела со стола.
     

  • 1.19, L (??), 18:14, 09/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Прекрасный материал. Очень интересно. Автору большое спасибо.
     
  • 1.22, Аноним (-), 00:06, 09/04/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если на диске есть ценная информация, то лучше отдать в специализированный сервис.
    Там правильно диагностируют причину отказа, и с большей вероятностью восстановят данные.
    Зачастую после "самолечения" дисков в домашних условиях, данные с них восстановить намного сложнее и дороже.
     
     
  • 2.23, Аноним (-), 08:50, 10/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    В идеале - да. Но за услуги именно хороших профессионалов - дерут. Потому что хорошие профессионалы - при деле. И достают именно реально ценные данные, всяким корпоративщикам с ж-й в огне и проч. За это им прилично платят. Так что за три копейки они плясать не станут. И то что приемлимо для жирного корпоративщика по цене - может вызвать афиг у индивидуала.

    И еще гарантий что в первом попавшемся сервисе нормальные специалисты никто не даст. А найти правильный сервисник с дельными спецами - отдельная задача само по себе. А если кто немного в теме и знает где правильные спецы... то в половине случаев ему сервисник и не потребуется в легких случаях. И вот это в основном для них. А если кто сдуру все усложнит и удорожит - кто ему доктор? На будущее научится более реалистично силы оценивать.

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

     
     
  • 3.24, Аноним (-), 10:32, 11/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    В 2011 знакомая обращалась в известный центр в Москве.
    За восстановление морских фотографий с диска, который уронили, взяли около 15 т.р.

    В эту сумму была включена стоимость диска-донора.

    Так что, по крайней мере, в то время цены были вполне норм.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру