Этот пост несёт минимальную степень матчасти, основные тезисы взяты из головы "как есть", не претендуют на точность, нужны только для минимального понимания принципов работы жёстких дисков. Чуть усложняя текст, я не могу остановиться и ухожу ближе к исследовательской работе, которую закончить смогу лет через 5-10, когда инфа будет ещё менее актуальна.
Написал я этот пост после очередного комментария с очень распространённым мифом:
Можно собрать данные даже из диска, в который из дробовика выстрелили. В упор. Вот только цена таких услуг вас удивит немало…
Я уже и раньше опровергал этот миф в комментариях, но вопрос не перестанет быть актуальным никогда.
Вывод сделаю в начале статьи: устройство современных жёстких дисков настолько сложно, что при повреждении пластин (блинов, дисков), стоимость и сложность восстановления приближается к бесконечности. Пока что нет таких данных, для которых подобные работы были бы оправданы.
Почему же восстановление информации с повреждённых пластин практически невозможно?
Скажу сразу, слово "практически" я использую просто потому, что не все условия указал для вопроса. Так как если на пластине есть цилиндрическая царапина, то она считается повреждённой, но в некоторых случаях можно заставить диск "обойти" царапину и читать в оставшихся целых местах. Также в Японии (возможно уже не только там) умеют каким-то образом восстанавливать поверхность, где находится царапина, позволяя прочитать остальные данные с пластины (естественно, на месте царапины любые данные потеряны безвозвратно).
Начнем от простого к сложному: возьмём диск с одной головкой (то есть по факту там их всё равно две: одна - пишущая, вторая - считывающая) и одной пластиной, на которой используется только одна поверхность. Этим самым мы убираем с десяток-другой дополнительных сложностей.
Этот диск был в полностью исправном состоянии, имеется от него родной комплект головок, родная плата с родной ПЗУ.
Для ещё большей простоты, пусть это будет старая тошиба на 160 гб (2.5", ибо 3.5" — это уже хитачи). Особенность старых тошиб заключается в том, что вся информация о трансляции содержится в ПЗУ, то есть листы дефектов, таблица зонного распределения (хотя тут она не требуется) и т.д..
Этот диск разобрали, и сделали одну тонкую радиальную царапину (то есть от центра к краю диска). То есть теперь родными головами чтение невозможно, так как слайдер головки будет "спотыкаться" о царапину, и головка будет выходить из строя.
Потенциально в этом случае восстановление данных возможно, вот несколько вариантов:
1) "Залечить" царапину, то есть полностью убрать все борозды и пустоты, это теоретически возможно. Дальше потребуется удача, чтобы диск не срывался в стук от отсутствия некоторых сервометок. Тогда возможно восстановление данных с родными головками, но часть данных будет безвозвратно потеряна. Цена вопроса - сотни тысяч рублей, сроки - до года, думаю.
2) Полностью собрать информацию о намагниченности поверхности и с абсолютной точностью перенести её на новую такую же пластину, при этом выяснить, где находятся недостающие сервометки и записать их тоже. После этого новую пластину поместить в родной корпус и родной головкой прочитать данные.
Потенциально - возможно. Стоимость будет изменяться десятками миллионов рублей, время на работы - годы или десятилетия (так как подобного прибора для копирования намагниченности в данный момент не существует, насколько я знаю).
3) Полностью собрать информацию о намагниченности поверхности в цифровом виде. Разобраться с работой микропрограммы диска, определить алгоритм, по которому диск писал данные, после этого стараться из прочитанной копии достать хоть какие-то данные. Звучит очень легко, по факту же это сложнее, чем первые 2 варианта вместе взятые. Стоимость и сроки даже предположить не могу. Если был бы известен полный алгоритм работы микропрограмм диска - было бы проще значительно. Но эта информация закрытая, доступа к ней нет ни у кого, кроме производителя. Да и у производителей, как мне кажется, эта информация может быть уже удалена, как неактуальная.
На практике вероятность успешного восстановления в таком случае стремится к нулю, затраты и сроки на работу будут превышать ценность практически любых данных.
Это был описан один из самых простых случаев. Если будем усложнять - всё будет ещё хуже:
1) Диск другого производителя. Информация о трансляции будет храниться уже не в ПЗУ на плате, а в служебной зоне на поверхности пластин. Без этой информации будет невозможно восстановить большие куски данных целиком, так как съедет вся трансляция и будут лишние "вкрапления" мусорных данных. Это решается вручную, но слишком муторно и сложно. Проще говоря, цельные файлы восстанавливать уже не будут, скорее можно анализировать данные в "сыром" виде. Если речь идёт о базах данных или сильно фрагментированных данных - то результат восстановления будет крайне плохим.
2) Несколько поверхностей. Подключится проблема с зонным распределением. То есть уровень фрагментации данных будет ещё выше, ведь нужно знать переход записи с одной поверхности на другую. И этот переход делается не один раз на диск, а каждые сколько-то секторов. На картинке подробнее:
4) Большая плотность записи. Чем выше плотность записи - тем сложнее процессы записи и чтения данных на диске. Подключаются новые модули для изменяемой плотности записи (чем ближе к центру диска, тем меньше плотность записи), разное количество треков на головку (из-за отличий по параметрам головок), ещё большее количество дефектов, скрытых на заводе и т. д..
5) Пластины из стекла. Да, в большинстве дисков используются алюминиевые пластины с магнитным напылением. Но также встречаются диски и со стеклянными пластинами. На них любое механическое воздействие приводит к полному разрушению пластин на мелкие осколки.
И это ещё речь о целых пластинах, но с царапинами. Если же пластина будет разделена на несколько частей, в ней будут отверстия, то сложность возрастает в разы. Я не знаю ни одного примера в нашем мире, когда удалось восстановить данные с сильно повреждённых пластин.
Какие дополнительные сложности существуют?
1) Данные не пишутся на диск "как есть", а проходят через специальный кодер, который изменяет данные. Это нужно, так как при чтении неизменяющихся данных (допустим, идёт подряд несколько сотен нулей), головка может потерять синхронизацию с треком.
2) При записи данных неизбежно будут возникать ошибки, поэтому без ECC (системы контроля чётности) данные будут некорректными. Хотя эта проблема и небольшая, потому что найти алгоритм для ECC довольно просто, как и область данных для него.
3) Современные жёсткие диски имеют ещё больше проблем для такого восстановления: черепичная запись (и дополнительные буферы для хранения временных данных, прежде чем они будут записаны на нужные сектора), комбинирование с твёрдотельными накопителями, шифрование данных и т. д..
Скоро попроще перепишу статью об устройстве жёсткого диска, о треках и зонах и о том, как данные на диск записываются.