From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tim Small Subject: Manually reconstructing a RAID5 array from a Dell PERC3/Di (Adaptec) Date: Wed, 05 May 2010 23:35:50 +0100 Message-ID: <4BE1F2C6.1070703@seoss.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: Sender: linux-raid-owner@vger.kernel.org To: linux-raid@vger.kernel.org List-Id: linux-raid.ids Hi, I'm trying to reconstruct/recover data from a raid array for a friend of mine - it's a 5x 36G RAID5 array built using a Dell PERC3/Di (Adaptec ultra scsi RAID card). My guess is that it suffered two successive failures, although none of the drives seem to be 100% dead (only failed to read 60k on one drive out of 140G+ so-far). I'm currently taking raw disk images of the 5 drives (with dd_rescue and a non-RAID SCSI controller), and after that plan to try to reconstruct the data either using the PERC 3 card itself, or using Linux software RAID. ... However, I've no idea what the metadata format of this HW RAID card is - it doesn't seem to be ddf, or anything else that's recognised by either dmraid or mdadm. Any tips? Any idea of the RAID5 layout used by these controllers? I don't think I've ever used a PERC3 before... Apart from anything else, it'd be nice to try to work out which drive failed first, so that I only use data from it if absolutely-necessary (although I can take a guess at that from the SMART data). Anyway to force the controller to consider the array to be good (although again, there is the problem of which drive failed first....)? With the 3 of the drives read (and the start of the 4th one read too), I get this output from the following command: root@netboot:~# for f in /mnt/tmp/*.raw ; do for i in {0..1000} ; do echo -n $f $i " - " ; dd if=$f skip=$i | file - ; done | grep -v '/dev/stdin: data' | grep -v '/dev/stdin: ACB archive data' ; done /mnt/tmp/scsi-20010b9fd0817563a.raw 128 - /dev/stdin: x86 boot sector; partition 1: ID=0x4c, active, starthead 1, startsector 131568, 272735517 sectors; partition 2: ID=0x5, starthead 222, startsector 272735505, 11614995 sectors; partition 3: ID=0xcf, starthead 0, startsector 2147615183, 463 sectors, code offset 0x48 /mnt/tmp/scsi-20010b9fd0817563a.raw 129 - /dev/stdin: GRand Unified Bootloader stage1_5 version 219.3, installed partition 19398653, saved entry 536870912, identifier 0x2, GRUB version 0.97, configuration file \377 /mnt/tmp/scsi-20010b9fd0817563a.raw 137 - /dev/stdin: SysEx File - /mnt/tmp/ST336607LC_3JA7621B.raw 128 - /dev/stdin: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, stage2 address 0x2000, stage2 segment 0x200; partition 1: ID=0x83, active, starthead 1, startsector 63, 272735442 sectors; partition 2: ID=0x5, starthead 254, startsector 272735505, 11614995 sectors, code offset 0x48 /mnt/tmp/ST336607LC_3JA7621B.raw 129 - /dev/stdin: GRand Unified Bootloader stage1_5 version 3.2, identifier 0x2, GRUB version 0.97, configuration file \377 /mnt/tmp/ST336607LC_3JA7621B.raw 137 - /dev/stdin: SysEx File - /mnt/tmp/ST336607LC_3JA7621B.raw 191 - /dev/stdin: Linux rev 1.0 ext3 filesystem data, UUID=d02fc77c-b6a0-4c40-8e36-c172c7d7d07d (needs journal recovery) (large files) /mnt/tmp/ST336607LC_3JA7621B.raw 199 - /dev/stdin: shared library Here's a diff between the hex-dump of the first 128 sectors of two of the drives.... --- /tmp/scsi-SSEAGATE_ST336607LC_3JA760WM.raw.hd 2010-05-05 22:18:02.000000000 +0000 +++ /tmp/scsi-SSEAGATE_ST336607LC_3JA763SY.raw.hd 2010-05-05 22:18:02.000000000 +0000 @@ -1,56 +1,54 @@ 00000000 56 19 02 00 1e 00 00 00 10 00 00 00 f6 cd 3c 04 |V.............<.| -00000010 00 00 02 00 7d d3 9e 6c 00 00 00 00 00 00 00 00 |....}..l........| +00000010 00 00 02 00 5a 96 f3 61 00 00 00 00 00 00 00 00 |....Z..a........| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * -000001f0 00 00 00 00 00 00 00 00 00 00 00 00 9e 55 f8 0a |.............U..| -00000200 c4 55 00 00 d3 30 04 bd 01 f0 fa fa 33 03 00 00 |.U...0......3...| +000001f0 00 00 00 00 00 00 00 00 00 00 00 00 14 8f e2 44 |...............D| +00000200 c4 55 00 00 d3 30 04 bd 01 f0 fa fa 2c 03 00 00 |.U...0......,...| 00000210 00 00 00 00 2c 00 00 00 00 00 00 00 2c 00 00 00 |....,.......,...| -00000220 00 00 00 00 32 03 00 00 00 00 00 00 00 00 00 00 |....2...........| +00000220 00 00 00 00 2b 03 00 00 00 00 00 00 00 00 00 00 |....+...........| 00000230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * -000003f0 00 00 00 00 00 00 00 00 00 00 00 00 72 3c 4f d8 |............r