Как я оживлял Linux
Житейский случай восстановления случайно стертых разделов жесткого
диска
Как и у многих пользователей, на одном винчестере у меня
содержится несколько различных ОС. В данном случае - ASP Linux 9.2 и
Windows XP (да, вы правильно догадались: "пингвин" для работы, а "окошки"
для экспериментов).
И вот в один прекрасный день возникло у меня желание
познакомиться с wine - утилитой, которая способна запускать программы
win32 из-под Linux. Пришла мысль подключить еще один винчестер и - для
чистоты эксперимента - поставить туда "винду". Вот тут-то все и началось:
Я отвлекся и при инсталляции W2K, конечно же, поубивал все разделы не
на том диске. А разделы были такие:
- hdb1(ext3) под корневой раздел "/", размер 5 Гб;
- hdb2 своп (512 Мб);
- hdb3(ext3) для пользовательских данных; его величина составляла 9
Гб, и он существовал уже несколько лет - "бэкапы" с него хоть и
делались, но не ежедневно. А ведь жаль было расставаться с наработками
за последние несколько дней!
- hdb4(NTFS) с Windows XP - в этом разделе было много ерунды. И я был
бы, в общем-то, рад переустановить эту ОС начисто, да вот только это
означало потерять базу программы 1C.
Один знакомый посоветовал воспользоваться замечательной
утилитой EasyRecovery: "Я сам ею пользовался при нужде. И мне он помог
спасти файлы!". Ну, взял я эту программку, установил (под Windows 98),
запустил. Да - красиво! Я так понимаю, она предназначена для комплексного
обслуживания HDD-носителя. Но вот разочарование: среди упомянутых типов
файловых систем, которые понимает EasyRecovery, ни слова о ext2-3.
"Хорошо,- думаю,- хоть NTFS спасу. А потом что-то придумаем:". Каким же
было мое разочарование, когда эта утилита с проработанным до мелочей GUI
не смогла найти ни малейших следов удаленного раздела!
Пришлось запасаться терпением и более детально изучать способы решения
проблемы.
GPART: все лучшее - бесплатно!
Начну именно с той утилиты, которая мне помогла и вообще
понравилась. Найдена она была по адресу. Я взял файл для Линукс - gpart.linux.
Переименовал в gpart и записал на дискету (размер файла - 265 364
байт). После чего загрузился с ASP Linux CD-ROM в режиме консоли
восстановления. Выполнил dmesg, чтобы еще раз убедиться, что винчестер у
меня это устройство hdb: hdb: MAXTOR 6L040J2, ATA DISK drive
hdb: 66055248 sectors (33820 MB) w/1819KiB Cache, CHS=65531/16/63, UDMA (100)
Теперь нужно смонтировать дискету и запустить утилиту: /mnt/floppy/gpart /dev/hdb
После краткого "раздумья" на экран буде выведена информация о возможном
размещении стертых разделов. Вот в таком виде: Primary partition (1)
type: 131(0x83)(Linux ext2 filesystem)
size: 5004mb #s (10249400) s (63-10249462)
chs: (0/1/1)-(1023/15/63) d (0/1/1)-(10168/1/56) r
::
Primary partition (4)
type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
size: 16731mb #s (34266640) s (31760505-66027144)
chs: (1023/15/63)-(1023/15/63)
d (31508/7/1)-(65503/1/58) r
Несколько слов о полученной информации. В строку,
помеченной type, указан тип файловой системы, в коде и символическом
представлении. Вообще, эта утилита "понимает" следующие системы:
- DOS/Windows FAT (FAT 12/16/32) Linux ext2;
- Linux swap, версии 0 and 1 (Linux >= v2.2.X);
- OS/2 HPFS;
- Windows NT/2000 FS;
- BSD метки дисков;
- Solaris/x86 метки дисков;
- Minix FS;
- Reiser FS;
- Linux LVM дисковый массив;
- SGI XFS on Linux;
- BeOS filesystem;
- QNX 4.x filesystem.
В строке size находится информация, касающаяся "секторной приписки"
раздела и количества секторов, занимаемых им. То есть строка: size: 16731mb #s (34266640) s (31760505-66027144)
означает, что размер диска - 16731 Мб, занимает он 34 266 640
секторов, с 31 760 505 по 66 027 144.
Последняя строка - chs - предоставляет нам данные о
топологическом размещении разделов, в координатах "цилиндр/головка/сектор"
(в нашем случае это не так важно).
И что теперь? Теперь мы можем просто восстановить таблицу размещения
разделов при помощи команды: gpart -W /dev/hdb /dev/hdb
Такой синтаксис предписывает утилите "вычислить" таблицу
разделов на устройстве hdb и вписать его туда же (то есть восстановить).
Но, в принципе, нам предоставляются и другие возможности: сохранить эти
данные про запас (gpart -W /dev/fd0 /dev/hdb, на дискету. На тот случай
если придется ее восстанавливать) или разбить другой диск по образу и
подобию текущего (gpart -W /dev/hda /dev/hdb). Если вы любите делать все
своими руками - из осторожности, например (все-таки восстанавливать
партиции - дело не тривиальное) - можно воспользоваться традиционным
fdisk. Не забудьте только добавить ключ -u - тогда при построении таблицы
разделов можно оперировать номерами секторов.
Восстанавливаем загрузчик Линукс
Разработчики дистрибутива ASP Linux предлагают вместо
традиционного LILO использовать для загрузки ОС их детище - ASP Loader.
Суть в том, что все загрузчики ОС прописывают себя в MBR.
После того как были воссозданы, как описано выше,
потерянные разделы, компьютер все-таки отказался грузиться. Ну, не
получилось у gpart в первозданной целостности реанимировать такую тонкую
вещь, как первый сектор диска.
Не беда, снова загружаемся с компакт-диска в режиме
восстановления. Что нужно сделать, так это подмонтировать раздел диска,
являющийся корневым при нормальной работе ОС в "/". Для этого и
предусмотрена специальная утилита pivot_root.
Хорошо. Монтируем /dev/hdb1 куда-нибудь: mount -t ext3 /dev/hdb1 /tmp/hdb1
Создаем вспомогательную папку tmp/old-root. И теперь: cd /tmp/hdb1
/tmp/hdb1/sbin/pivot_root. tmp/old-root
Все, мы воссоздали ту файловую структуру, которая
соответствует обычной загрузке ОС. Осталось выполнить команду aspldr (или
lilo, если использовался этот загрузчик). Осталось перегрузить систему.
Ключи утилиты gpart
При работе с описанной утилитой, полезными могут оказаться и другие
опции ее работы:
- -b backupfile: позволяет перед тем, как переписывать MBR, сохранить
его в определенном файле.
- -C c, h, s: можно вручную указать геометрию винчестера, если ее не
удается корректно определить через ОС.
- -f: без этого ключа gpart находит раздел, а потом продолжает
сканирование от его конца. В этом-же случае производится полное,
посекторное сканирование, что может кстати, занять продолжительное
время.
- -L: вывести список поддерживаемых типов файловых систем.
Красота требует: денег
Наверное, вы удивитесь, но средства восстановления
утерянных разделов существуют не только для Линукс но и для Windows всех
модификаций:-). Одним из лучших считается Acronis
RecoveryExpert (стоимость - около $15).
Эта программа испытывалась в следующих условиях. Было
создано три раздела: Linux ext3, Windows Extended и NTFS. Они были
отформатированы соответствующим образом и на них были скопированы файлы.
Поле этого из-под Windows 98 утилитой fdisk эти разделы были удалены.
Дальше за дело взялся RecoveryExpert. Сразу скажу: работать с ним легко -
весь процесс восстановления сопровождался короткими, но понятными
подсказками. Если отбросить традиционные для коммерческих продуктов
диалоги приветствия и поздравления с завершением, то работа программы
состояла из трех частей: выбора винчестера, на котором нужно восстановить
данные, анализа диска и самого восстановления.
В самом начале пользователю представляется выбор:
контролировать весь процесс работы или понадеяться на интеллектуальные
способности программы. Рекомендую выбрать ручной режим. Далее требуется
более точно указать пространство диска (рис. 1), на котором следует
искать утерянные данные. Если в следующем диалоговом окне вы выберете
полный, а не быстрый анализ винчестера, то наверняка успеете попить пивка
и даже выкурить трубочку. Ведь программа будет вынуждена сканировать
каждый сектор на предмет наличия метки файловой системы - тогда как при
быстром анализе предполагается, что раздел начинается с первого сектора
цилиндра, а это дает значительный рост производительности.
Когда процесс сканирования подойдет к концу, укажите те
разделы, которые, собственно, нуждаются в восстановлении (рис. 2).
Как я говорил, на диске существовал расширенный раздел с логическим
диском. В документации к gpart этот случай описывался как не вполне
тривиальный. Интересно, что RecoveryExpert (эксперт?) отреагировал на
данную ситуацию подобным же образом (забегая наперед, скажу, что раздел
все же был восстановлен и данные не потерялись).
Следующим делом пользователю представляется случай
полюбоваться на графическое представление структуры диска после его
успешного восстановления. Потом - то же самое, но в текстовом виде
(рис. 3).
Осталось нажать кнопку Приступить и пожелать себе удачи.
Как организован диск
Почему вообще оказывается возможным спасти стертые программой типа
fdisk разделы?
Современные винчестеры имеют объем 40:120 Гб. Все
дисковое пространство одного физического устройства принято (и это
разумно) делить на несколько частей, называемых разделами (партициями,
partition). Зачем? Во-первых, некоторые операционные системы
(UNIX-подобные) требуют этого сами по себе, в других случаях удобно
"территориально" разделить программы и данные.
Подобно содержанию
обычной книги, дающему информацию о размещении глав и разделов, на
винчестере содержится специальный объект - MBR (Master Boot Record,
основная загрузочная запись). Как раз там и описывается, как поделен
диск,- точнее, какой номер первого сектора раздела, каково количество
секторов, ему принадлежащих, предоставляется также некоторая другая
информация. При включении компьютера BIOS считывает эту запись, загружает
ее в память (а на самом деле это маленькая программка! вот поэтому и
существуют загрузочные вирусы) и передает ей управление. В стандартном
случае MBR просто загружает операционную систему, находящуюся в "активном"
разделе. В другом случае - при использовании Linux и Windows 2000/XP -
пользователю предлагается меню, позволяющее загружать ОС по выбору.
Кроме регистрации в MBR, первый блок (несколько секторов) каждого
логического диска, имеет специальную метку. Эта метка не стирается, когда
вы удаляете раздел, скажем, с помощью fdisk,- она будет затерта позднее,
когда на данном логическом диске будет создана файловая система. Таким
образом, просмотрев последовательно сектора на винчестере, с большой
вероятностью можно найти все уделенные разделы. Это не очень сложно, тем
более что для этих целей создано несколько программных решений.
Автор: Николай Ткаченко
Источник: www.comizdat.com
|