On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru






 

Об умножении ошибок

А. Захарченко

Потеря информации на жестком диске далеко не всегда связана с механическими повреждениями или вирусами. Попадая в нестандартную ситуацию, программы контроля за целостностью информации могут учудить такое, что никакому вирусу не снилось.

Репутация у Norton Disk Doctor (NDD) давно была скверной. Еще во времена DOS, обнаружив нетипичную главную загрузочную запись (MBR), он начинал мигать красными экранами и настаивать на "восстановлении". Попадавшиеся на эту уловку могли потерять всю информацию на винчестере. Вместо интеллектуального решения этой проблемы в настройки NDD была введена возможность отключения теста критических областей жесткого диска и на этом "классики программирования" успокоились.

Win9x требует значительно более частого обслуживания диска  чем MS DOS. Помимо потерянных кластеров и обрывков временных файлов досаждают еще ошибки в длинных именах. Хотя в формате имен использование спецсимволов (> : ? и т.д.) не допускается, но иногда Windows умудряется их принять (хуже того – воткнуть в имя MS DOS) и тогда файл невозможно ни переименовать ни удалить. Scandisk от Microsoft не справляется со многими проблемами в именах, в отличии от Доктора, почивающего теперь на лаврах Symantec.

Один из законов поведения ошибок программирования утверждает, что две ошибки взаимно компенсируются. Однако, когда сталкиваются просчеты из разных программ, то их убойная сила значительно возрастает.

Все началось с того, что MBR и таблица частей (Partition Table) 6-гигабайтного диска оказались затерты мусором. Это событие не вызвало особых волнений поскольку Microsoft давно научила свою fdisk справляться с такими ситуациями. Команда fdisk /mbr вернула жизнь винчестеру, а тесты Scandisk не обнаружили никаких проблем.

Первый звонок прозвучал с запуском NDD из комплекта NU 2000. Выставив окно, сообщающее об ошибке в загрузчике DOS (DOS Boot Record), он пару минут шуршал диском, а затем сообщил, что не может внести исправления и прекратил работу. Вспомнив прошлое, доктору немедленно запретили тесты загрузочных областей. Но не тут-то было. При следующем старте NDD запрет проигнорировал и сообщил, что ошибка в загрузчике исправлена и для дальнейшей работы нужно перезагрузить PC. Финал – Invalid system disk or disk I/O error – и мертвый винчестер.

Загрузка с CD или дискеты доступа к винчестеру не дала. Пришлось использовать Norton Disk Editor (NDE) в режиме физических дисков. Оказалось, что загрузочная запись FAT32 изменена под FAT16 для диска емкостью около 250 МБайт. Ладно, в системной области диска храниться резервная копия DOS загрузчика. Но NDD тоже знал об этом – и преобразовал также и вторую копию. Поиск самих FAT дал еще более удивительные результаты: обнаружилось 4-е подписи FAT: две 32-хразрядных и две 16-и, причем последнюю нелегкая занесла в первую 32-х разрядную FAT.

До команды format оставалось полшага, но еще жила надежда, что возможно сохранились 2-я копия FAT и корневой каталог (root). С помощью NDE обе копии FAT синхронизировали, но попытка использовать расширенный режим восстановления (Advanced Recovery Mode) для восстановления загрузчика DOS оказалась безрезультатной: он упорно превращался b 16-битный. Пришлось переносить его с другой машины и подбирать параметры вручную. Благо NDE имеет режим с показом названий параметров.

DOS запустилась, но проверка диска показала, что практически отсутствует свободное место: вместо ожидаемых 1,5 ГБайт оставалось около 70 МБайт. Scandisk обнаружил ошибки в элементах подкаталогов и ничего исправить не смог. С дрожью в коленях запустили вариант NDD для DOS – как ни странно ошибки исчезли и восстановился правильный объем свободного места.

Тем не менее Windows отказалась запускаться даже в безопасном режиме и предложила себя переустановить. Поскольку анализ Registry с помощью Regedit ошибок не показал, пришлось подчиниться. И тут круг замкнулся – Setup отказался распознавать установочный раздел как первичный раздел DOS. Вместо 0Bh (FAT32, первичный) значением параметра код раздела из таблицы разделов диска оказался 0Ch (NDE определяет его как FAT32x - расширенный что ли?), явно занесенный туда при первом восстановлении MBR с помощью fdisk. Но для fdisk, ни для DOS, ни для Windows это проблем не создавало. А вот Доктор явно не выносит никаких отступлений от стандарта и проводит немедленную ампутацию.

Happy-end: После переустановки Windows потребовалось переустановить отдельные приложения, трепетно относящиеся к авторскому праву (MATLAB, PROMT, мелкие утилитки). Остальные продолжили работу без проблем (Corel, Delphi, Builder, Visual C++ и т.п.). Среди данных обнаружились два пострадавших файловых имени. В общем повезло.



Литература по накопителям


 
Компьютеры |  Кулинария |  Медицина |  Нормативная литература |  Типовые договора |  Общие темы