What was the default chunk size in previous versions of mdadm? Is there a way to set data/super offset? Trying to recreate a raid 5 md with all spares

mdadmraidraid5software-raid

I have a 6 device raid 5 array which had 1 disk go bad and then due to a power outage, the machine shutdown and when it started all the disks were showing up as spares with the following mdadm -E output.

/dev/sda5:
    Magic : a92b4efc
  Version : 1.2
  Feature Map : 0x0
   Array UUID : b480fe0c:c9e29256:0fcf1b0c:1f8c762c
     Name : GATEWAY:RAID5_500G
Creation Time : Wed Apr 28 16:10:43 2010
   Raid Level : -unknown-
 Raid Devices : 0

Avail Dev Size : 976768002 (465.76 GiB 500.11 GB)
Used Dev Size : 976765954 (465.76 GiB 500.10 GB)
  Data Offset : 2048 sectors
 Super Offset : 8 sectors
        State : active
  Device UUID : a8499a91:628ddde8:1cc8f4b9:749136f9

  Update Time : Sat May 19 23:04:23 2012
 Checksum : 9950883c - correct
   Events : 1


 Device Role : spare
 Array State :  ('A' == active, '.' == missing)`

This md device was part a Physical Volume for a LVM Volume Group.

I am trying to recreate the array using mdadm –create –assume-clean using 1 device as missing. I am checking if the device is getting created correctly by checking the UUID of the created device which would match if the device gets created correctly.

I have tried a few combinations of the disk order that I believe is right however I think I'm getting tripped up by the fact that the mdadm I used to create this md device was some 2.x series and now we are on 3.x (and I may have taken some of the defaults originally which I don't' remember)
What all 'defaults' have changed over the versions so I can try those? Like chunk size? Can we manually configure the super/data offset? Are those significant when we do an mdadm –create –assume-clean?

Thanks,
Anshu

Best Answer

Although in the best of all worlds mdadm should be able to detect your superblock format version when assembling or examining, you could try explicitly specifying an older superblock format version using the -e 0.90 parameter to mdadm and see what --examine has to say about that.

The superblock offset has a hardcoded position relating to the end of the device (in your case the partition), if the device's end has been moved (i.e. by changing the partition size or doing a raw-copy to a larger disk), mdadm would be unable to locate the correct copy.

It also looks a bit like your superblocks were messed with - if this is the case, you would not be able to "assemble" without some manual work. You should check all your drives for a valid superblock - there might be a copy somewhere which would spare you a lot of trial-and-error when re-building the MD array.

The general approach to recovery would be using mdadm --build with a chunk size of 64K (the old mdraid default, it changed to 512K later), the number of your devices and your presumed RAID level as the constant parameters and shuffling the device order unless you get a working filesystem. Needless to say that you should do this with copies of your HDD's data so you would not irrevocably change data by issuing an inexpert command.