Когда делаем fsck вручную, оно нам предлагает указать альтернативный суперблок, так как оригинал испорчен.
Man fsck нам говорит, что “An alternate super block is usually located at block 32 for UFS1, and block 160 for UFS2” Но часто это не так
Чтобы узнать, где находятся бэкапные копии суперблока, запускаем программу форматирования вольюма, но без реальной записи.
Разумеется, “форматировать” надо в тот же формат, в котором было.
Узнать формат “какой было”, можно либо в /etc/fstab, либо с помощью gpart list, gpart show, либо blkid
Например:
gpart show ada1
=> 34 5860533101 ada0 GPT (2.7T)
34 94 - free - (47k)
128 4194304 1 freebsd-swap (2.0G)
4194432 5856338696 2 freebsd-ufs (2.7T)
Теперь мы имеем все основания предполагать, что формат был UFS.
По дефолту последние 5 лет используется UFS2
newfs покажет немалый список блоков, содержащих бэкап суперблока.
Опция -O позволяет задать версию UFS; в реалии же, использование -O имеет смысл только тогда, когда ковыряем “чужой” диск, форматированный на другой системе.
-O1 дает UFS1, ныне используемую крайне редко. Итак:
newfs -N /dev/ad4p2
/dev/ad4p2: 2859540.5MB (5856338696 sectors) block size 32768, fragment size 4096
using 4568 cylinder groups of 626.09MB, 20035 blks, 80256 inodes.
super-block backups (for fsck_ffs -b #) at:
192, 1282432, 2564672, 3846912, 5129152, 6411392, 7693632, 8975872, 10258112, 11540352, 12822592, 14104832,
15387072, 16669312, 17951552, 19233792, 20516032, 21798272, 23080512, 24362752, 25644992, 26927232, 28209472,
29491712, 30773952, 32056192, 33338432, 34620672, 35902912, 37185152, 38467392, 39749632,....
Теперь можно делать (например)
fsck -t ufs -v -b 15387072 /dev/ad4p2
В этом примере я очень осторожно убрал опцию -y, и поставил -v (запрашивать разрешения на любую операцию) т.к. я не уверен, что файловая система проблемного диска именно UFS2, т.е. хочу выполнить только проверку;
если оно выдаст сразу массу проблем, а мы не уверены в разновидности формата файловой системы, то имеет смысл попробовать поискать адрес альтернативного суперблока не для UFS2, а для UFS1 и снова запустить проверку:
newfs -N -O1 /dev/ad4p2
/dev/ad4p2: 2859540.5MB (5856338696 sectors) block size 32768, fragment size 4096
using 11259 cylinder groups of 254.00MB, 8128 blks, 32512 inodes.
super-block backups (for fsck_ffs -b #) at:
64, 520256, 1040448, 1560640, 2080832, 2601024, 3121216, 3641408, 4161600, 4681792, 5201984, 5722176,
6242368, 6762560, 7282752, 7802944, 8323136, 8843328, 9363520, 9883712, 10403904, 10924096, 11444288,
11964480, 12484672, 13004864, 13525056, 14045248, 14565440, 15085632, 15605824, 16126016, 16646208,...
А теперь снова пускаем проверку:
fsck -t ufs -v -b 6242368 /dev/ad4p2
Но, опять без флага -y: а вдруг проблем будет еще больше?