harddisk failed strangely, badly need to recover data

Zhang Weiwu zhangweiwu at realss.com
Tue May 8 08:44:14 UTC 2007


Dear list. I added a 160 GB harddisk to the FreeBSD server several days
ago. I have setup only one slice on it (/dev/ad6s1) and it has two
partitions on it.

/dev/ad6s1c is used as swap
/dev/ad6s1d is used as /var

Today I decided to reboot the FreeBSD server because I messed up nfs
settings. After restart /var/ failed to mount. I was brought to a shell
where I am suggested to do fsck manually. fsck manually couldn't help
either:

        [root at exupery /home/zhangweiwu]# fsck /dev/ad6s1d
        ** /dev/ad6s1d
        Cannot find file system superblock
        
        LOOK FOR ALTERNATE SUPERBLOCKS? [yn] y
        
        32 is not a file system superblock
        28780512 is not a file system superblock
        57560992 is not a file system superblock
        86341472 is not a file system superblock
        115121952 is not a file system superblock
        143902432 is not a file system superblock
        172682912 is not a file system superblock
        201463392 is not a file system superblock
        230243872 is not a file system superblock
        259024352 is not a file system superblock
        287804832 is not a file system superblock
        SEARCH FOR ALTERNATE SUPER-BLOCK FAILED. YOU MUST USE THE
        -b OPTION TO FSCK TO SPECIFY THE LOCATION OF AN ALTERNATE
        SUPER-BLOCK TO SUPPLY NEEDED INFORMATION; SEE fsck(8).

I tried to fix it by do inga harddisk bad-sector checking for the
beginning 1GB of the harddisk (result is successful, no bad sector in
the beginning 1GB). The data on the harddisk is not modified/erased
during checking

Use 'dd if=/dev/ad6 bs=32k | hd -v | grep "19 01 54 19"' to locate the
super block and do some calculation to get the superblock sector number
(following an Internet article) and pass it to fsck_ufs like this:
'fsck_ufs -b 12032 /dev/ad6s1d'. Under a lot of time pressure I
confirmed twice with 'y' for the following questions of whether or not
to set some values to default without fully understanding the questions,
later seeing more questions I stopped fsck by Ctrl+C.

Before running fsck I tried to backup the first 100MB data of /dev/ad6
using dd which should help me recover even if I destroyed superblock
of /dev/ad6s1d. Later I realized I have by mistake only backed up the
beginning 4.0MB of /dev/ad6

Is it possible now for me to recover the data in /var/
(especially /var/backups)? Thanks a lot in advance!

P.S. I am being really unlucky because this harddisk is mostly used for
backup purpose and thus is not backed up (who back up the back-up
harddisk?) and when I today failed to mount this harddisk, 0.5 hour
later the server being backed up by it has got an accident and need the
backup data to recover. 



More information about the freebsd-questions mailing list