Момент, когда вместо привычного раздела в lsblk пустота, а на диске светится нераспределённое пространство, знаком многим администраторам не понаслышке. Хорошая новость состоит в том, что удаление раздела почти никогда не означает удаление данных: таблица разделов - это оглавление, а не сами страницы, и восстановить запись о разделе в подавляющем большинстве случаев возможно. Утилита testdisk делает это профессионально, бесплатно и без записи на диск до явного подтверждения. В этой статье полный разбор процедуры: подготовка, анализ, поиск разделов на двух уровнях глубины, восстановление и границы применимости.
Почему удаление раздела не удаляет данные
Таблица разделов (MBR или GPT) - это небольшая структура в начале диска с перечнем границ разделов. Команда удаления стирает только записи из этого перечня, а файловые системы внутри разделов остаются на своих местах нетронутыми, пока что-то не записано поверх. Именно поэтому первое и главное правило при случайном удалении - немедленно прекратить любую запись на диск: остановить сервисы, не монтировать разделы на запись, а при работе с системного диска - загрузиться с внешнего носителя.
Второе следствие из этой механики - время работает против восстановителя: каждая запись на диск может затереть начало бывшего раздела, где лежат критические структуры файловой системы. Чем больше времени прошло и чем больше операций было выполнено, тем ниже вероятность полного восстановления, поэтому реагировать нужно быстро и точно, не экспериментируя наугад.
Подготовка и первый запуск testdisk
Утилита устанавливается пакетом testdisk из репозиториев любого дистрибутива или уже входит в состав SystemRescue на спасательной флешке. Запуск выполняется с правами root: testdisk открывает интерактивный мастер с выбором режима Create - создать журнал работы, что и стоит выбрать по умолчанию, потому что журнал анализов сохраняется в файл и помогает при разборе сложных случаев.
Далее утилита спрашивает диск: список показывает все блочные устройства, и выбирается тот, с которого пропал раздел. Затем предлагается тип таблицы - Intel/PC для MBR и EFI GPT для современных систем: утилита обычно сама правильно угадывает по сигнатурам, и её выбор достаточно подтвердить. После этого - меню с выбором типа анализа, и здесь начинается содержательная часть процедуры.
Случай с работающего системного диска заслуживает отдельной оговорки: если удалённый раздел - не системный, а данные лежат на втором диске, работать можно из основной системы, лишь избегая записи на повреждённый диск. Если затронут системный диск, единственно правильный путь - загрузка с live-носителя, потому что работающая система постоянно пишет на свои разделы.
Быстрый поиск разделов
Первый анализ - Quick Search - сканирует диск по стандартным сигнатурам файловых систем и восстанавливает типичные структуры за минуты. Результат отображается списком найденных разделов с типами и предполагаемыми именами; зелёная метка P напротив раздела означает, что файловая система читается, и это самый надёжный признак корректного результата.
По завершении утилита сравнивает найденное с текущей таблицей и предлагает исправить её. Здесь важна дисциплина: перед записью стоит войти в каждый найденный раздел и осмотреть файлы - testdisk позволяет просматривать содержимое прямо из интерфейса. Если видны знакомые каталоги и файлы, значит структура восстановлена верно, и можно переходить к записи. Если список выглядит подозрительно или раздел не читается, самое время для глубокого поиска.
Глубокий поиск для сложных случаев
Если быстрый поиск не нашёл раздел или нашёл не все, запускается Deeper Search - полное сканирование диска сектора за сектором. Этот процесс длится от десятков минут на SSD до многих часов на больших HDD, зато находит разделы, следы которых перекрыты частично, а также разделы от старых разметок. Результат глубокого поиска может содержать дубликаты - несколько вариантов одного раздела с разными границами, и правильный выбирается по читаемости файловой системы и по содержимому при просмотре.
Практический приём для выбора между дубликатами: сверяйте начало и размер раздела с вашими записями или с показаниями из других источников - старым выводом lsblk из runbook, скриншотами, логами мониторинга. Истинный раздел почти всегда совпадает по границам с тем, что было раньше, а ложные кандидаты лежат со смещением.
Проверка перед записью
Testdisk не пишет на диск без явного подтверждения, и этим он выгодно отличается от инструментов, которые чинят автоматически. Перед записью: убедитесь, что все нужные разделы в списке помечены как первичные P или логические L без конфликтов; просмотрите содержимое каждого восстановленного раздела; проверьте, что граничные значения не перекрываются. После записи таблицы диск переподключается, и разделы появляются в системе.
Проверка после записи выполняется обычными средствами: lsblk показывает структуру, mount с файловой системой раздела подтверждает читаемость, и файлы просматриваются стандартными командами. Только убедившись, что данные на месте, стоит считать процедуру успешной - и вот тогда, для порядка, сделать свежий бэкап.
Ограничения и когда данные теряются навсегда
Честный разговор о границах метода. Если на место удалённого раздела была создана новая файловая система и что-то записано - начало старых данных затёрто, и testdisk найдёт раздел, но файловая система будет читаться лишь частично или не читаться вовсе. Если диск физически деградирует - поиск может падать по ошибкам чтения, и тогда сначала снимается образ через ddrescue на исправный носитель, а testdisk работает уже с образом.
Разделы с шифрованием: testdisk находит границы, но содержимое недоступно без ключа, и восстанавливать нужно и раздел, и метаданные шифрования. Массивы RAID: утилита работает с отдельными дисками, и составные структуры требуют отдельного внимания. Все эти ограничения известны заранее, и самое практичное применение статьи - прочитать её до аварии, чтобы в момент X действовать по плану, а не по наитию.
Памятка процедуры
Свод действий: остановить запись на диск, загрузиться с live-носителя при системном диске, запустить testdisk, выбрать Create, выбрать диск, подтвердить тип таблицы, Quick Search, просмотреть содержимое найденного, Deeper Search при необходимости, выбрать правильные разделы, Write, переподключить диск, проверить файлы, сделать бэкап. От начала до конца - меньше часа в типичных случаях, и почти всё это время занимают сканирования, за которыми остаётся только следить.
Особенности GPT и MBR
Тип таблицы разделов влияет на детали процедуры. С MBR всё просто: основная запись живёт в первом секторе, резервной копии нет, и восстановление целиком опирается на сканирование диска. С GPT ситуация интереснее: в конце диска хранится резервная копия заголовка и таблицы, и testdisk умеет восстанавливать разметку именно из неё - это самый быстрый сценарий, когда основная копия повреждена, а диск после неё цел. Поэтому при GPT всегда стоит сначала посмотреть, что нашлось мгновенно, и только потом запускать долгие сканирования.
Практический нюанс GPT: при смешении дисков с разной разметкой утилита может предлагать оба варианта таблицы, и правильный выбирается по совпадению найденных разделов с реальными границами. Указание в том, что GPT всегда содержит 128 слотов под разделы, и лишние записи в списке кандидатов - норма, а не признак катастрофы.
Photorec как план Б для безнадёжных случаев
Когда раздел восстановлен, но файловая система затёрта, в дело вступает родственная утилита photorec: она не работает с таблицами, а ищет сигнатуры файлов по всему диску и извлекает их в указанный каталог. Способ полезный, но последняя мера: имена файлов теряются, структура каталогов исчезает, и вместо восстановленного раздела вы получаете тысячи файлов с именами вида f1234567.jpg. Для документов и фотографий это всё равно лучше, чем ничего, но возвращает от силы половину данных.
Правильная последовательность использования: сначала testdisk - восстановление раздела, затем при неудаче восстановление файловой системы средствами fsck, и только в самом конце photorec. Порядок отражает убывание качества результата, и именно так опытные специалисты рекомендуют двигаться.
Работа с образами дисков
При подозрении на физическую деградацию носителя правильной практикой считается работа с образом, а не с самим диском: ddrescue снимает посекторную копию на исправный носитель, пропуская сбойные области, а testdisk работает с образом напрямую через меню выбора диска. Это медленнее, зато исключает риск усугубить состояние источника: каждый цикл чтения деградирующего диска может стать последним.
Для образов существует и трюк наоборот: при работе с виртуальными машинами образы дисков - это обычные файлы, и testdisk открывает их напрямую, без монтажа через loop-устройства. Восстановление раздела в образе виртуальной машины выполняется в холодном состоянии, без риска для работающей системы.
История из практики
Характерный случай: во время переноса данных на новый NAS инженер перепутал устройства и очистил таблицу на старом диске с семейным фотоархивом. Открытий было два: во-первых, диск продолжал лежать нетронутым, потому что запись сразу прекратили; во-вторых, testdisk восстановил единственный раздел за четыре минуты быстрым поиском, вся файловая система читалась целиком, и через час архив уже лежал в трёх новых местах. Секрет счастливого финала прост: пауза перед действиями, live-флешка под рукой и процедура, прочитанная заранее, - а не в момент паники.
Профилактика на будущее
Любой восстановленный случай заканчивается одинаковым вопросом: что предотвратит повторение? Ответы известны: бэкапы критичных данных по расписанию, отдельные устройства для рабочих операций и экспериментов, а также привычка сверять имена устройств перед разрушительными командами - по сути, две секунды осмотрительности против четырёх минут восстановления в лучшем случае.
И главный вывод всей темы: между "разметка удалена" и "данные удалены" лежит огромная разница, и testdisk - инструмент, который в подавляющем большинстве случаев возвращает вас на правильную сторону этой границы.
Итоговая строка темы
Testdisk остаётся золотым стандартом восстановления разделов уже третий десяток лет, и не в последнюю очередь благодаря своей консервативности: инструмент ничего не пишет на диск до явного подтверждения, показывает найденное до записи таблицы и позволяет сверить каждый раздел по содержимому. В умелых руках это означает, что попытка восстановления почти ничего не стоит и не рискует данными, - и именно поэтому к нему обращаются первым, а не последним.
Финальное напутствие
Храните testdisk в арсенале знаний, а в кабинете - спасательную флешку с ним: эти два условия превращают страшный вечер с удалённым разделом в короткий эпизод с понятным сценарием. Данные почти всегда стоят на вашей стороне - они не исчезают при удалении записи из оглавления, и задача инженера лишь в том, чтобы не мешать им ждать своего восстановления.
Именно поэтому финальный совет выглядит так: держите статью под рукой, а флешку с testdisk - в ящике серверной. Эти два актива весят меньше сотни граммов вместе, но в момент потери раздела стоят дороже всего остального оборудования, потому что возвращают то, что деньгами не измеряется.
Финальная строка
Собранные в статье шаги складываются в короткий путь: пауза, live-носитель, testdisk, проверка содержимого, запись таблицы, бэкап. Путь этот отработан сообществом десятилетиями, и он доступен каждому - от системного администратора до владельца домашнего архива, потому что инструмент бесплатен, работает везде и прощает ошибки лучше любого другого в своём классе.