I used to have the following array:

# mdtab entry for /dev/md0
/dev/md0 raid5,128k,0,93fa4522 /dev/hda3 /dev/hdb1 /dev/hdc1 /dev/hdd1

This ran on linux 2.2.17 and raidtools 0.42. When upgrading the kernel to 2.4.22
and raid-tools 0.90 I understood that it would be necessary to run mkraid
--upgrade on the device. So I run it on the following raidtab:

raiddev /dev/md0
raid-level 5
nr-raid-disks 4
nr-spare-disks 0
persistent-superblock 1
parity-algorithm left-symmetric
chunk-size 32
device /dev/hda3
raid-disk 0
device /dev/hdb1
raid-disk 1
device /dev/hdc1
raid-disk 2
device /dev/hdd1
raid-disk 3

This one was copied straight from Software-RAID HOWTO, unfortunately I noticed
only afterwards that the chunk-size was different than it was before. Anyway,
mkraid seemed to convert the array; it printed out many pages of information
which I didn't yze further, but apparently it left the raid in a somehow
bad state, because:

# raidstart /dev/md0
/dev/md0: Invalid argument

# cat /proc/mdstat
Personalities : [raid5]
read_ahead not set
unused devices: <none>

I learned that mdadm would apparently be a good tool for ysing the
situation, but I had no success there:

# mdadm --examine /dev/md0
mdadm: /dev/md0 is too small for md

Trying to --upgrade with the correct chunk 128kb size set in /etc/raidtab just

handling MD device /dev/md0
yzing super-block
disk 0: /dev/hda3, 78935377kB, raid superblock at 78935296kB
array needs no upgrade
mkraid: aborted, see the syslog and /proc/mdstat for potential clues.

And trying to go back to kernel 2.2.17 and raidtools 0.42 causes the following
havoc in /etc/init.d/raid start:

Adding md devices.
/dev/md0: Invalid argument
Some of the RAID devices have errors:
Checking "md0":
ckraid: aborted
ckraid version 0.36.4
parsing configuration file
handling MD device /dev/md0
yzing super-block
disk 0: /dev/hda3, 78935377kB, raid superblock at 78935296kB
disk 1: /dev/hdb1, 80035798kB, raid superblock at 80035712kB
disk 2: /dev/hdc1, 80035798kB, raid superblock at 80035712kB
disk 3: /dev/hdd1, 80035798kB, raid superblock at 80035712kB
reading raid superblock
unsupported raid array version 0.90.0
/dev/md0: Invalid argument
WARNING: unrecovered RAID errors!

So apparently the superblocks _are_ there but the kernel just cannot read them.

Is there any way to correct the situation without remaking the array?

I'd just like to know if the data is definitely gone forever after specifying
the wrong chunk size, or is there still hope to recover it.

Any help would be greatly appreciated!


John Doe <public_address_911hotmail.com>