И вот в один прекрасный день возникло у меня желание познакомиться с 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), на котором следует искать утерянные данные. Если в следующем диалоговом окне вы выберете полный, а не быстрый анализ винчестера, то наверняка успеете попить пивка и даже выкурить трубочку. Ведь программа будет вынуждена сканировать каждый сектор на предмет наличия метки файловой системы - тогда как при быстром анализе предполагается, что раздел начинается с первого сектора цилиндра, а это дает значительный рост производительности. Выбрать для восстановления расширенный раздел MS-DOS не получается:-( Когда процесс сканирования подойдет к концу, укажите те разделы, которые, собственно, нуждаются в восстановлении (рис. 2). Как я говорил, на диске существовал расширенный раздел с логическим диском. В документации к gpart этот случай описывался как не вполне тривиальный. Интересно, что RecoveryExpert (эксперт?) отреагировал на данную ситуацию подобным же образом (забегая наперед, скажу, что раздел все же был восстановлен и данные не потерялись). Лучше потратьте несколько секунд на изучение информации. Параметры всех разделов верны? Следующим делом пользователю представляется случай полюбоваться на графическое представление структуры диска после его успешного восстановления. Потом - то же самое, но в текстовом виде (рис. 3). Осталось нажать кнопку Приступить и пожелать себе удачи. Как организован диск Почему вообще оказывается возможным спасти стертые программой типа fdisk разделы? Современные винчестеры имеют объем 40:120 Гб. Все дисковое пространство одного физического устройства принято (и это разумно) делить на несколько частей, называемых разделами (партициями, partition). Зачем? Во-первых, некоторые операционные системы (UNIX-подобные) требуют этого сами по себе, в других случаях удобно "территориально" разделить программы и данные. Подобно содержанию обычной книги, дающему информацию о размещении глав и разделов, на винчестере содержится специальный объект - MBR (Master Boot Record, основная загрузочная запись). Как раз там и описывается, как поделен диск,- точнее, какой номер первого сектора раздела, каково количество секторов, ему принадлежащих, предоставляется также некоторая другая информация. При включении компьютера BIOS считывает эту запись, загружает ее в память (а на самом деле это маленькая программка! вот поэтому и существуют загрузочные вирусы) и передает ей управление. В стандартном случае MBR просто загружает операционную систему, находящуюся в "активном" разделе. В другом случае - при использовании Linux и Windows 2000/XP - пользователю предлагается меню, позволяющее загружать ОС по выбору. Кроме регистрации в MBR, первый блок (несколько секторов) каждого логического диска, имеет специальную метку. Эта метка не стирается, когда вы удаляете раздел, скажем, с помощью fdisk,- она будет затерта позднее, когда на данном логическом диске будет создана файловая система. Таким образом, просмотрев последовательно сектора на винчестере, с большой вероятностью можно найти все уделенные разделы. Это не очень сложно, тем более что для этих целей создано несколько программных решений.
Источник: http://www.codingclub.net/ |