Ремонт файловой системы UFS2

Поимел сейчас неясного происхождения баг — домашнее хранилище, организованное на основе неттопа, зависло. Система там стоит на флэшке, на винте только своп и юзерские файлы. Перезагрузил, начал чинить ошибки на файловой системе флэшки. Ну, всё как обычно:

fsck -fy /dev/da0a

...

после одного из разделов fsck доложил, что часть ошибок исправлена, но filesystem is still dirty, please rerun fsck. Я перезапустил, а в ответ мне:

fsck -fy /dev/da0d

ioctl (GCINFO): Inappropriate ioctl for device

fsck_ufs: /dev/da0d: can't read disk label Хотя визуально все разделы на месте, о чём подтверждали все утилиты. Поиск по интернету конкретного рецепта не принёс, но навёл на размышления о повреждённом суперблоке. В итоге вылечил таки.

Сначала надо выяснить, где размещаются копии суперблока. Делаем раз:

newfs -N /dev/da0d

/dev/da0d: 1024.0MB (2097152 sectors) block size 32768, fragment size 4096

    using 4 cylinder groups of 256.03MB, 8193 blks, 32896 inodes.

super-block backups (for fsck -b #) at:

192, 524544, 1048896, 1573248 Нужно починить файловую систему с правильным суперблоком. Сделать это можно командой fsck_ffs::

fsck_ffs -b 1573248 /dev/da0d

Ключ -b 1573248 указывает, что нужно при ремонте ФС нужно использовать не первый суперблок, а тот, который лежит по смещению 1573248. После этого система починилась нормально. указывает, что нужно при ремонте ФС нужно использовать не первый суперблок, а тот, который лежит по смещению 1573248. После этого система починилась нормально.

Comments

Comments powered by Disqus