Ремонт разрушенных файловых систем







Практически  единственное  средство  лечения  разрушений файловой системы во
всех Unix - утилита fsck. Если не лечит она, то дело ваше почти  безнадежно.
Я бы посоветовал в морг, но энтузиасты могут еще немного подергаться.

* LINUX *

Примечание: команды приведенные в примерах следует выполнять только внимательно взвесив возможные последствия. Поэтому в примерах реальные имена спецфайлов разделов жесткого диска заменены на /dev/hd-name (в реальной жизни применяется /dev/hda2, /dev/hdb3 /dev/sda1...) Тонкая рихтовка fs tune2fs позволяет поменять настраиваемые параметры файловой системы -c max-mount-counts -m reserved-blocks-percentage и т.п. tune2fs -m 1 /dev/hd-name # найдет вам еще 50Mb свободного места, # и позволит учинить на оставшемся клочке # свободного места катастрофическую фрагментацию Стандартное лечение файловой системы: fsck -y -c -f /dev/hd-name Форсированное лечение с проверкой и "замещением" bad-блоков fsck -y -c -f /dev/hd-name # -y неинтерактивное лечение "yes" на все вопросы # -c найти bad-блоки readonly тестом и перенести в inod bad-блоков # -f форсировать проверку (игнорировать флаг "fs is clean" Если погиб основной суперблок, добавить ключ -b 8193 или -b 16385 ... указав запасную копию. Номера запасных sb сообщает при разметке раздела утилита newfs. (Вы конечно же сохранили ее листинг?) Распечатать размещение служебных структур fs и параметры суберблока могут команды tune2fs -l и dumpe2fs tune2fs /dev/hd-name dumpe2fs /dev/hd-name Если погибли _все_ копии суперблока - последний шанс mke2fs -S прописать _только_ структуры суперблоков и описатели групп, не трогая самих данных mke2fs -S /dev/hd-name # Write superblock and group descriptors only fsck -y /dev/hd-name # сразу всед за этим запустить fsck И даже это еще не конец. Для сильных духом остается отладчик файловой системы debugfs man debugfs

Поведение в авариной ситуации

Естественно, целее будете, если загрузитесь в single-user mode Для этого перехватить при загрузке LILO-промпт (Left-alt) И в команду загрузки добавить параметр single Lilo: linux single В linux'овский single-user можно попасть только зная пароль root. Не зная пароля, надо грузиться так: Lilo: linux init=/bin/sh или даже так (если подготовлена rescue-дискета с файловой системой unix) Lilo: linux init=/bin/sh root=/dev/fd0H1440 Перемонтировать корневой раздел из readonly в write mount -t ext2 -n -o remount,rw /dev/hd-root / Смонтировать разрушенную fs, используая альтернативный суперблок mount -t ext2 -o sb=8193,nocheck /dev/hd-name /mntname Пдробности (вы будете смеяться): man mount