I'm getting the dreaded "ad1s1a: hard error reading fsbn 524543 of 96-127 (ad1s1 bn 524543; cn 520 tn 6 sn 5) status=59 error=40" errors. Based on what I've read, it means my drive's going bye-bye. As it is, it won't even boot - fortunately I have another FBSD drive to boot from, and I get these errors while trying fsck it. Shame on me for not noticing the errors sooner and an even bigger shame for not having a proper backup.
In any case, the milk is spilled and I need to mop it up as best I can. While I can mount the partition, I can't cd to it (more "hard errors..."),
and since fsck isn't apparently helping, what can I do to recover what's
left? I'm thinking dd's the tool to use, but I'm not really sure how to
go about it. Here's what I get when I try to read from the beginning on
the partition:
# dd if=/dev/ad1s1a bs=64k dd: /dev/ad1s1a: Input/output error
However, when I add "skip=1", the drive spits back data. That leads me to believe that if I skip over the bad sectors, I can read what's left.
I've got a spare drive I can use as a sandbox, but how should I dump the data? Should I label the second drive with the same partition size and "dd if=/dev/ad1s1a of=/dev/ad2s1a"? Is there any chance of recovering filesystem data going this route?
[Quoting myself as it's been 2 weeks since the first post]
Here's what's new:
ad0: 21557MB <IBM-DJNA-372200> [43800/16/63] at ata0-master UDMA66 ad1: 39083MB <Maxtor 5T040H4> [79408/16/63] at ata0-slave UDMA100 ad2: 29311MB <Maxtor 5T030H3> [59554/16/63] at ata1-master UDMA100
ad2 is the 30GB drive reporting errors; ad1 is the new 40GB drive I copied the partition to.
I tried to fdisk the 40G to be identical to the 30G, but I could never get the size to match exactly. In the end, I just set up the 256M swap, and hoped the 524288 offset for the 'a' partition would work. Here's relevant disklabel output:
# disklabel -r /dev/ad1s1 # /dev/ad1s1: type: ESDI disk: ad0s1 label: flags: bytes/sector: 512 sectors/track: 63 tracks/cylinder: 255 sectors/cylinder: 16065 cylinders: 4981 sectors/unit: 80035767 [...] 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 79511479 524288 4.2BSD 2048 16384 89 # (Cyl. 32*- 4981*) b: 524288 0 swap # (Cyl. 0 - 32*) c: 80035767 0 unused 0 0 # (Cyl. 0 - 4981*)
# disklabel -r /dev/ad2s1 # /dev/ad2s1: type: ESDI disk: ad0s1 label: flags: bytes/sector: 512 sectors/track: 63 tracks/cylinder: 16 sectors/cylinder: 1008 cylinders: 59553 sectors/unit: 60030369 [...] 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 59506081 524288 4.2BSD 2048 16384 16 # (Cyl. 520*- 59553*) b: 524288 0 swap # (Cyl. 0 - 520*) c: 60030369 0 unused 0 0 # (Cyl. 0 - 59553*)
I used lewiz' suggestion to add 'conv=noerror,sync' to dd. I was able to copy the readable data from the bad drive to a new one. I changed it to bs=512b (redundant, I know) since if the old disk was bad on 512-byte block 0, I figured dd would skip to the next 64k. Here's what I used:
dd if=/dev/ad2s1a of=/dev/ad1s1a conv=noerror,sync bs=512b
Of course, I got about 165 "ad2s1a: hard error reading fsbn ..." errors, but it appeared to copy everything else okay. The first 16 blocks of ad2s1a are null, but there is 16 blocks of data at block 32, so it appears the first backup superblock survived.
Is there a remote chance that I'll be able to fsck this fs and recover? I know that fsck will complain about the first alternate superblock not matching because the last superblock won't be in the first 30GB. Do the different sized partitions make this impossible?
_______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"