Ремонт разрушенных файловых систем
Практически единственное средство лечения разрушений файловой системы во
всех Unix - утилита
fsck. Если не лечит она, то дело ваше почти безнадежно.
Я бы посоветовал в морг, но энтузиасты могут еще немного подергаться.
Примечание: команды приведенные в примерах следует выполнять только
внимательно взвесив возможные последствия. Поэтому в примерах реальные
имена спецфайлов разделов жесткого диска заменены на
/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 /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
Комментариев нет:
Отправить комментарий