Bad Super Block: Magic Number Wrong

I had a power outage a day ago and when the power came back on my FreeBSD 4.6 webserver had problems. It said it was unable to mount /var and made me start in single user mode and said to run fsck MANUALY. So i did and this is now what i get.

www# fsck /dev/ad0s1e
** /dev/ad0s1e
BAD SUPER BLOCK: MAGIC NUMBER WRONG
/dev/ad0s1e: INCOMPLETE LABEL: type 4.2BSD fsize 16384, frag 0, cpg 64, size 39102273

So i did some research and found a few places that told we me to fix the Super Block with the alternative super block. So i ran this.

www# newfs -N /dev/ad0s1e
Warning: Block size and bytes per inode restrict cylinders per group to 385.
Warning: 2240 sector(s) in last cylinder unallocated
/dev/ad0s1e: 39102272 sectors in 9547 cylinders of 1 tracks, 4096 sectors
19092.9MB in 25 cyl groups (385 c/g, 770.00MB/g, 12288 i/g)
super-block backups (for fsck -b #) at:
32, 1576992, 3153952, 4730912, 6307872, 7884832, 9461792, 11038752, 12615712, 14192672, 15769632, 17346592, 18923552, 20500512, 22077472, 23654432, 25231392, 26808352, 28385312,
29962272, 31539232, 33116192, 34693152, 36270112, 37847072

Once I found the alternative blocks I tried this.

www# fsck -b 34693152 /dev/ad0s1e
Alternate super block location: 34693152
** /dev/ad0s1e
BAD SUPER BLOCK: MAGIC NUMBER WRONG

Running FreeBSD 4.6 on PIII 450
The System has 2 drives
Root is at /dev/da0 a 4.3 GB SCSI drive
And I am missing my /var that was on a 20GB IDE drive /dev/ad0

So I still can not fix or mount the /dev/ad0s1e drive. How do I fix BAD SUPER BLOCK: MAGIC NUMBER WRONG and mount the drive?
how can I fix INCOMPLETE LABEL? Is the drive file system toast? or can I recover the files?
Is there a way to recover the drive data and move it to the good drive?
Thank you for any help.

I would try two more things.

Use the fsck with the full option on the volume name not on the disk.

fsck -F <fstype> -o full < raw volume/slice name>

Also, you might try adding a new superblock. You should have a file that lists Alt superblocks. On my HPUX system it is under /var/adm/sbtab. Try 16, I believe there is an extra one there.

fsck -F <fstype> -b 16 <raw volume/slice name>

Failing all that, you may have to restore the disk.

Hope this helps!!

:wink:

Um, no there's not. We need to remember that the various versions of unix do have some differences. On his system, that "newfs -N" did not actually modify the disk, but it did produce a list of alternate superblocks for him. His first was at 32.

I do agree that having come this far I would certainly try a few more superblocks, just to explore the depth of the disaster if nothing else. But on the other hand, I would not trust a filesystem after a disaster that was so severe that two superblocks were trashed.

Thank you for the replies. FreeBSD version of fsck is a bit diffrent than that of Linux of other *nxs.
I have found a site that says try the...
# fsck -F ufs -o /dev/ad0s1e
option but FreeBSD does not use the switches -F or -o all i get is
fsck: illegal option -- F
fsck: ? option?

I will try and use all the alt super blocks option. That might do some good. Also I read last night that i might beable to extract the data of the disk buy using..

# dd if=/dev/ad0s1e of=test2 bs=2k

Has anyone used this with FreeBSD and does it work? I do not know the right use of dd.

I also found a place that said to use this to fix the disk...
# newfs -o b=32 /dev/ad0s1e
But with that I get this...

newfs: ime: unknown optimization preference: use `space' or `time'.

So I am still at a loss. Thank you.

Hello to all that find this thread through Google :slight_smile:

I had a similar problem with my HDD and FreeBSD saying there was a bad superblock.
I followed the first step of the procedure and discovered (to my relief) the backup superblocks.

Once past this point the next reccomendation was to use fsck -b 160 /dev/"my partition"
This doesn't work as FreeBSD's fsck command doesn't acknowledge the -b flag as valid.

The trick is to use fsck_ffs which *does* recognise the -b flag and takes the appropriate action. i.e. fsck_ffs -b 160 /dev/"my partition"

Second tip (don't flame me for it's obviousness, not everyone is a super sysop). Make sure you are have root access otherwise no errors will be corrected.

Third Tip. If it looks like your filesystem is in a really bad way, look at the -y flag in the man page. i.e. read man fsck_ffs looking for -y :slight_smile:

I hope this is usefull for anyone else that has the problem.

Cheers,
Neil S Davenport