- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF128:TestDisk
Материал из Linuxformat.
- TestDisk
Содержание |
Спаситель данных
- В потерянном разделе сгинул ваш моджо? Маянк Шарма покажет, как вернуть его с помощью TestDisk.
Чтобы испортить раздел или угробить важные данные, особых усилий не требуется. Случайный пробел в команде rm опустошит ваш домашний каталог с той же легкостью, как нажатие не той клавиши в Fdisk удаляет раздел из MBR. Все, что нужно – доверие этим всесильным утилитам, ложное чувство контроля и спешка. Но если вы спохватились сразу после уничтожения данных, то у вас есть хороший шанс на восстановление, при наличии правильных инструментов. И TestDisk – как раз то, что доктор прописал.
TestDisk – программа восстановления данных, используемая также для их сбора. Она исправит таблицы разделов и сделает незагружаемые диски вновь загружаемыми. TestDisk способен распознать такие распространенные файловые системы, как DOS, FAT16/32, NTFS, exFAT, ext2/3, LVM2, RAID 1,4,5 и 6, карта разделов Apple, JFS, Reiser4, CramFS, и даже метки дисков в Solaris и BSD. Вы можете использовать его на своих домашних компьютерах, где запущен Linux, Windows или Mac OS X, или ZFS RAID на университетском сервере.
Вдобавок TestDisk умеет восстанавливать и перестраивать загрузочные секторы FAT16/FAT32/NTFS и определять резервные суперблоки в ext2/ext3. Самое же в нем приятное – то, что для восстановления данных с помощью TestDisk не нужно понимать механизм этого восстановления. Итак, начнем...
Ставим TestDisk
В примерах этого руководства мы использовали компьютер с двумя дисками. Если у вас тоже такой, установите TestDisk на загрузочный диск, чей раздел является рабочим.
Например, можно инсталлировать TestDisk в Ubuntu на основном диске, чтобы восстановить вторичный диск. Конечно, лучше всего иметь его на Live-дистрибутиве: это позволит работать на всех дисках компьютера, а также восстанавливать файлы на съемных устройствах хранения, вроде жесткого диска, подключаемого к USB.
Для максимального эффекта всегда пользуйтесь свежей версией TestDisk, которой может и не быть в репозитории вашего дистрибутива. Например, новейшая версия TestDisk умеет сама восстанавливать удаленные файлы с разделов NTFS, и PhotoRec вам понадобится лишь при повреждении раздела.
Использование TestDisk
На минуту вообразим, что вы попытались примонтировать раздел NTFS, а ваш дистрибутив его не обнаружил, или Grub жалуется, что не может отыскать место установки Linux. Видимо, вы только что попытались изменить диск или один из его разделов утилитой типа Fdisk или GParted. Время пускать в ход TestDisk. Прежде чем запустить его, запишите информацию о цилиндрах для вашего диска или раздела. Это пригодится позднее, при поиске потерянных разделов, так как здесь говорится о физическом начале и конце диска или отсутствующего раздела. Ее можно получить из fdisk -l:
Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 51 Disk identifier: 0x22122211 Device Boot Start End Blocks Id System /dev/sda1 985 1044 481950 82 Linux swap / Solaris /dev/sda2 1 984 7903948+ 83 Linux Disk /dev/sdb: 2147 MB, 2147483648 bytes 255 heads, 63 sectors/track, 261 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x00096f14 Device Boot Start End Blocks Id System
Наш вторичный диск, sdb, пуст, поскольку (по легенде) мы случайно удалили с него NTFS-раздел. Вспомним, что вывод fdisk -l отражает текущее состояние диска и его разделов. Если на всем диске у вас только один раздел, то его стартовый и конечный цилиндры будут соответствовать границам диска. Однако при наличии нескольких разделов, в особенности логических, от вывода fdisk особого прока не будет – так что неплохо бы сохранить вывод fdisk -l только что размеченного (исправного) диска где-нибудь в удобном месте. В нашем руководстве мы предположим, что таблица неповрежденных разделов вторичного диска имеет пример но такой вид:
Device Boot Start End Blocks Id System /dev/sdb1 1 626 5028313+ 7 HPFS/NTFS /dev/sdb2 627 1598 7807590 83 Linux /dev/sdb3 1599 2610 8128890 5 Extended /dev/sdb5 1599 2610 8128858+ 7 HPFS/NTFS
Пусть мы случайно стерли расширенный раздел NTFS sdb5. Чтобы вернуть его, откройте терминал и запустите TestDisk командой sudo testdisk. Согласившись на ведение журнала (который пригодится в дальнейшем, если восстановление не удастся), вы увидите все диски, присоединенные к компьютеру. Выберите тот, где вы потеряли раздел. Затем вас попросят выбрать тип таблицы раздела – например, Intel, Mac, Sun и т. п.
После этого TestDisk предложит различные опции восстановления. Выберите пункт Analyse, отмеченный по умолчанию. Он считывает структуру разделов и ищет потерянные. Сначала выводится текущая структура раздела – сравните ее с тем, что выдавал fdisk, чтобы найти отсутствующие или продублированные разделы. Если после проверки структуры нажать кнопку Quick Search, то TestDisk спросит, нужно ли искать разделы, созданные под Windows Vista. После завершения вы увидите список потерянных разделов, например, такой:
Partition Start End Size in sectors * HPFS - NTFS 0 1 1 625 254 63 10056627 [Partition1] P Linux 626 0 1 1597 254 63 15615180 [Partition2] L HPFS - NTFS 1598 1 1 2609 254 63 16257717 [Partition5]
На разделы, обозначенные как Partition1 и Partition2, внимания обращать не будем – ведь мы знаем, что они есть на диске; а рассмотрим Partition5. Чтобы убедиться, что это именно тот раздел, что потерялся, сравните стартовый и конечный цилиндры с тем, что выдавал fdisk, когда все было в порядке. Для пущей уверенности выделите этот раздел и нажмите P, чтобы увидеть список файлов (и каталогов) на нем.
Теперь, убедившись, что это именно тот самый случайно удаленный NTFS-раздел, переходите к следующему этапу. Здесь выопять увидите структуру разделов, например:
Partition Start End Size in sectors 1 * HPFS - NTFS 0 1 1 625 254 63 10056627 [Partition1] 2 P Linux 626 0 1 1597 254 63 15615180 [Partition2] 3 E extended LBA 1598 0 1 2609 254 63 16257780 5 L HPFS - NTFS 1598 1 1 2609 254 63 16257717 [Partition5]
Сейчас, с учетом отсутствующего раздела, новая таблица разделов должна походить на первоначальный вывод fdisk. Если это не так, можно проделать углубленный поиск, который мы рассмотрим позднее, при охоте за трудноуловимыми разделами. Поскольку в нашем случае совпадение есть, просто выберем Write, чтобы сохранить таблицу разделов на диск. Выйдите из программы и перезагрузитесь – и ваш раздел будет уже на своем месте.
Расширенный TestDisk
Делайте резервные копии, делайте резервные копии, делайте их снова и снова. Другого пути нет.
Мы разобрали простой и рядовой пример восстановления раздела с помощью TestDisk. Однако бывают ситуации, когда удалено несколько разделов, или таблица разделов неремонтопригодна – тут-то и выходят на арену расширенные опции. Рассмотрим некоторые из них.
Иногда разделы восстанавливаются, но их тип определяется неправильно. При поиске раздела TestDisk отображает его тип в первом столбце, где для загрузочного раздела стоит *, для первичного – P, для логического – L и для расширенного – E, например:
* HPFS - NTFS 0 1 1 625 254 63 10056627 [Partition1] P Linux 626 0 1 1597 254 63 15615180 [Partition2]
Используя курсорные клавиши «вправо» и «влево», можно поменять тип выделенного раздела.
Есть и другие опции для работы с разделами, доступные в самом начале процедуры восстановления, сразу после выбора типа таблицы разделов диска. Непосредственно под Analyse находится вкладка Advanced, которая содержит некоторые продвинутые инструменты для файловых систем. Здесь есть возможность поменять формат раздела, что может оказаться полезным, если восстанавливаемый раздел переформатирован. Также можно создать точную 1:1 копию выбранного раздела, с помощью пункта Image Creation.
Если вы мучили свой диск различными программами для разметки, есть шанс получить в итоге неправильную геометрию диска. TestDisk полагается на эти данные при исследовании разделов, так что очень важно, чтобы они были корректными. Эти числа отображаются при выборе диска. Если они не совпадают с тем, что изначально выдал fdisk, то анализ разделов может пройти неверно. Опция Geometry (расположенная под Advanced) позволит вам ввести правильные значения CHS (Cylinder, Heads, Sector) для диска.
По уши в проблемах
Способов изуродовать таблицу разделов столько, что и не знаешь, к чему это может привести. Иногда опции Quick Search в TestDisk недостаточно, чтобы найти все или некоторые из потерянных разделов. Опция Deeper Search сканирует все цилиндры, а также обращается к резервным загрузочным секторам и суперблокам, чтобы найти побольше разделов.
Не удивляйтесь, если обнаружится больше разделов, чем имелось на жестком диске в самом начале. Многие из них – просто образы-призраки тех разделов, что когда-то существовали; не все они поддаются восстановлению, но нередко занимают одно и то же место на диске, так что будьте осторожны. Для более глубокого поиска разделов, после того, как результаты Quick Search отобразились в новой таблице разделов, выберите Deeper Search вместо записи таблицы на диск. Это займет еще какое-то время, в зависимости от размера вашего диска и от сложности таблицы разделов.
TestDisk также умеет работать с образами, сделанными с помощью dd для тех дисков, что стали сбоить.
В найденном списке разделов некоторые пункты будут зеленого цвета. TestDisk знает, что они восстанавливаемые, так как они присутствуют в резервной копии загрузочного сектора или в суперблока. Проблема будет с разделами, занимавшими одно и то же место, например:
* HPFS - NTFS 0 1 1 625 254 63 10056627 [Partition1] D HPFS - NTFS 0 1 1 625 254 63 10056627 [Partition1] P Linux 626 0 1 1597 254 59 15615176 [Partition2] D Linux 626 0 1 1597 254 59 15615176 [Partition2] L HPFS - NTFS 1598 1 1 2609 254 63 16257717 [Partition5]
Как и в Quick Search, после того, как TestDisk найдет разделы, вы сможете вывести список файлов на каждом из них с помощью клавиши P. На одном или нескольких дубликатах это не выйдет, и TestDisk пожалуется вам, что файловая система повреждена. Пометьте такие разделы как удаленные (D) и продолжайте.
Если вы только что восстановили NTFS-раздел, TestDisk может пожаловаться, что загрузочный сектор поврежден. Он потребует правильный загрузочный сектор NTFS для чтения раздела, даже если тот не является загрузочным. Чтобы исправить это, используйте Backup BS для копирования резервного загрузочного сектора на текущий. После этого TestDisk проверит секторы на совпадение и выдаст сообщение «Structure: OK». Это означает, что TestDisk убедился в отсутствии первичного раздела между двумя расширенными разделами, и не нашел разделов, использующих одно и то же дисковое пространство.
Несмотря на свою мощь, TestDisk не в силах помочь со всеми проблемами, связанными с таблицей разделов. Иногда он не в состоянии сделать диск загружаемым снова. Если загрузочный сектор NTFS-раздела поврежден, то даже Live CD не сможет смонтировать раздел и копировать данные за его пределы. Тут понадобится такая утилита восстановления данных, как PhotoRec от TestDisk.
Кроме чтения незагружаемых дисков, PhotoRec также восстанавливает файлы с отформатированных и «переустановленных» разделов, благодаря тому, что игнорирует файловую систему и работает с данными на низком уровне. Вспомните, что при всяком удалении файла тот не исчезает с диска; просто его место помечается как свободное и готовое к использованию. В зависимости от типа файловой системы и ее применения, PhotoRec с легкостью восстановит файлы, которые вы считали навеки утраченными.
PhotoRec понимает и восстанавливает файлы сотен форматов. Сюда входит все – от архивов 7-Zip, Zip и Tar, до RPM, Deb и почти всех мультимедиа-форматов изображений, звука и видео, а также файлов VMDK виртуальных дисков VMware.
Разберемся
Работа PhotoRec похожа на работу TestDisk. После выбора диска укажите раздел для поиска. Вас спросят, хотите ли вы искать только в незанятом месте диска или на всем разделе, и еще надо будет указать тип файловой системы (NTFS, ext3 и прочее), где содержался файл.
После этого ступайте обедать: PhotoRec очень скрупулезен. Он ищет среди файлов всех поддерживаемых форматов, однако можно ограничить их диапазон в меню File Opt. По окончании работы PhotoRec вы увидите тьму файлов со странными именами, разных форматов, в одном каталоге. PhotoRec дает им имя по мере нахождения, оставляя сортировку за вами. Однако можно упростить себе задачу, покувыркавшись в командной строке – вот, например, команда, распределяющая файлы разных форматов по папкам:
$ find /var/phoenix/ -name “*.jpg” | xargs -I mv {}/var/phoenix/Images
Она предполагает, что вы сохраняете восстанавливаемые файлы в каталоге /var/phoenix, находит все файлы с расширением *.jpg и перемещает их в Images/. Поскольку также будут восстановлены маленькие файлы JPEG и GIF из кэша браузера и миниатюры из каталога .thumbnails, вы, возможно, захотите избавиться от них:
$ find /var/phoenix/Images/ -name “*.jpg” -size -1024k | xargs -i mv {} /var/phoenix/Images/tiny
Эта команда перемещает файлы размером меньше 1 MБ в папку tiny, которую легко удалить после просмотра. Сверх того, можно применить программы типа Jhead и libextractor, которые дадут файлам имена согласно их EXIF-метаданным, например, метке дата/время.
Успех работы TestDisk зависит от того, насколько сильно испорчена ваша таблица разделов. TestDisk умеет восстанавливать отформатированные загрузочные разделы, но его эффективность зависит от типа формата и того, как использовался диск после порчи. Если вы подсели на утилиты типа Fdisk и GParted и у вас кривые руки, побалуйте себя – держите TestDisk невдалеке.
Шаг за шагом: Возродим отформатированный раздел
- 1 Смена типа раздела
- Запустите TestDisk обычным способом, перейдите в Advanced и выделите только что отформатированный раздел. Выберите Type и введите тип файловой системы, соответствующий изначальной.
- 2 Перестройка загрузочного сектора
- В листинге таблицы разделов выберите Boot, чтобы восстановить загрузочный сектор раздела. Rebuild BS перестраивает загрузочный сектор из резервной копии. Для подтверждения перейдите к List.
- 3 Запись таблицы разделов
- Теперь ищите недостающий раздел с помощью опции Analyse. TestDisk без проблем обнаружит его. Просто запишите таблицу разделов и выйдите.
Шаг за шагом: Восстановим файлы с помощью PhotoRec
PhotoRec восстанавливает файлы с любого типа носителей – Compact Flash и SD-карты, флэш-памяти, iPod и многих других.
- 1 Выберите раздел
- Чтобы восстановить файлы с раздела, сначала запустите PhotoRec; потом выберите диск, на котором находится раздел, и укажите тип таблицы разделов.
- 2 Выберите место сканирования
- После выбора типа файловой системы раздела, примите решение, хотите вы сканировать весь раздел или только свободное место.
- 3 Укажите папку восстановления
- Выберите папку (это может быть съемный диск, примонтированный к /media), куда записывать восстановленные файлы. И пусть PhotoRec поколдует.
Понимание разделов
Не нужно быть экспертом в области восстановления данных, чтобы использовать TestDisk, однако следует представлять, как разбит диск. Таблица разделов содержит 4 слота по 16 байт каждый, которые ограничивают количество первичных разделов на один жесткий диск четырьмя штуками. Обычно один из этих разделов помечен как расширенный и содержит несколько логических разделов. У вас может быть три первичных раздела (sda1, sda2, sda3) и четвертый расширенный раздел, содержащий несколько логических разделов (sda5 и так далее).
При поиске разделов вы увидите, что некоторые из них накладываются друг на друга или расположены за пределами таблицы. Иногда TestDisk жалуется на то, что видит первичный раздел между логическими, что невозможно.
Если TestDisk не может пристроить раздел к месту, вам не только придется разместить его самостоятельно, но и определить, первичный он или логический. Первый первичный раздел обычно начинается на цилиндре 0, головка 1, сектор 1. Если у вас есть другие первичные разделы, они начинаются на ненулевом цилиндре (скажем, на 626), головка 0, сектор 1. А вот логические разделы начинаются с ненулевого цилиндра (2231), головка 1, сектор 1. Вы можете упорядочить их, используя координаты конца раздела.