woes with... mdadm ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Hi Folks,

I'm having no end of trouble with a freshly built x86_64 system. After reboots checksums are corrupted, I cannot add drives back in, etc. I've downgraded from mdadm 3.0 to 2.6.8 but that doesn't change anything. First of all, maybe I'm missing something obvious. Does anyone spot an error in the following ?

I have made a raid-1 array of two members, /dev/sdd1 and /dev/sdg1. After reboot /dev/sdd1 was not part of the array anymore, but had not 'quite' been rejected either looking at for instance the events counter:

mouse ~ # mdadm --examine /dev/sdd1
/dev/sdd1:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 4eee1ddc:8bcacb4d:83e6059e:a5fcaf2c (local to host mouse)
  Creation Time : Mon Jan 25 20:52:23 2010
     Raid Level : raid1
  Used Dev Size : 311660864 (297.22 GiB 319.14 GB)
     Array Size : 311660864 (297.22 GiB 319.14 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 3

    Update Time : Tue Jan 26 21:49:21 2010
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
       Checksum : 5717cb26 - expected 5717ca46
         Events : 18


      Number   Major   Minor   RaidDevice State
this     1       8       49        1      active sync   /dev/sdd1

   0     0       8       17        0      active sync   /dev/sdb1
   1     1       8       49        1      active sync   /dev/sdd1

mouse ~ # mdadm --examine /dev/sdg1
/dev/sdg1:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 4eee1ddc:8bcacb4d:83e6059e:a5fcaf2c (local to host mouse)
  Creation Time : Mon Jan 25 20:52:23 2010
     Raid Level : raid1
  Used Dev Size : 311660864 (297.22 GiB 319.14 GB)
     Array Size : 311660864 (297.22 GiB 319.14 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 3

    Update Time : Tue Jan 26 21:49:21 2010
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
       Checksum : 5717cb04 - correct
         Events : 18


      Number   Major   Minor   RaidDevice State
this     0       8       17        0      active sync   /dev/sdb1

   0     0       8       17        0      active sync   /dev/sdb1
   1     1       8       49        1      active sync   /dev/sdd1


Obviously, there now is a problem with the checksum. So I opted to reinsert the sdd1. Which proves impossible. I've tried to re-add it [fails], first remove+fail it [unnecessary since /proc/mdstat no longer lists it, but] and re-add it [fails], '--zero-superblock --force' it and re-add it [fails]. At all those times this is logged in syslog:

md: invalid superblock checksum on sdd1
md: sdd1 does not have a valid v0.90 superblock, not importing!
md: md_import_device returned -22

Getting more desperate, I googled around and found that other people reporting this error found their device was a tad smaller/too small. However that is not the case here, as witnessed by: (sdg1 is active member and is smaller than sdd1)

mouse ~ # fdisk -l /dev/sdg

Disk /dev/sdg: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdg1 1 38800 311660968+ fd Linux raid autodetect
mouse ~ # fdisk -l /dev/sdd

Disk /dev/sdd: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1 1 38890 312383893+ fd Linux raid autodetect

Getting more desperate still: using fdisk to clear partitions and make a /dev/sdd2 instead of sdd1. Upon exiting fdisk I get NO warning about the kernel not using the new table, so there is nothing locking/using it.

Still mdadm categorically refuses to use the device:

mouse ~ # cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md3 : active raid1 sdg1[0]
      311660864 blocks [2/1] [U_]

mouse ~ # mdadm -a /dev/md3 /dev/sdd2
mdadm: add new device failed for /dev/sdd2 as 2: Invalid argument


Further into despair: a reboot helps perhaps ? Nope, doesn't help.
Zero the drive with dd and retry ? Nope, no luck either...:

mouse ~ # dd if=/dev/zero of=/dev/sdd
^C
21733888 bytes (22 MB) copied, 1.29476 s, 16.8 MB/s

mouse ~ # fdisk  /dev/sdd

<snip>

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

mouse ~ # fdisk -l /dev/sdd

Disk /dev/sdd: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xdb7c6eb0

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1       38913   312568641   83  Linux


mouse ~ # mdadm -a /dev/md3 /dev/sdd1
mdadm: add new device failed for /dev/sdd1 as 2: Invalid argument

mouse ~ # cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md3 : active raid1 sdg1[0]
      311660864 blocks [2/1] [U_]

mouse ~ # mdadm --detail /dev/md3
/dev/md3:
        Version : 0.90
  Creation Time : Mon Jan 25 20:52:23 2010
     Raid Level : raid1
     Array Size : 311660864 (297.22 GiB 319.14 GB)
  Used Dev Size : 311660864 (297.22 GiB 319.14 GB)
   Raid Devices : 2
  Total Devices : 1
Preferred Minor : 3
    Persistence : Superblock is persistent

    Update Time : Tue Jan 26 23:27:35 2010
          State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           UUID : 4eee1ddc:8bcacb4d:83e6059e:a5fcaf2c
         Events : 0.24

    Number   Major   Minor   RaidDevice State
       0       8       97        0      active sync   /dev/sdg1
       1       0        0        1      removed



Now what puzzles me further is the superblock behaviour I observe:

mouse ~ # mdadm --zero-superblock --force /dev/sdd1
mouse ~ # mdadm --examine /dev/sdd1
mdadm: No md superblock detected on /dev/sdd1.

So far so good. It's really gone now. Re-add the drive and reexamine:

mouse ~ # mdadm -a /dev/md3 /dev/sdd1
mdadm: add new device failed for /dev/sdd1 as 2: Invalid argument
mouse ~ # mdadm --examine /dev/sdd1
/dev/sdd1:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 4eee1ddc:8bcacb4d:83e6059e:a5fcaf2c
  Creation Time : Mon Jan 25 20:52:23 2010
     Raid Level : raid1
  Used Dev Size : 311660864 (297.22 GiB 319.14 GB)
     Array Size : 311660864 (297.22 GiB 319.14 GB)
   Raid Devices : 2
  Total Devices : 1
Preferred Minor : 3

    Update Time : Tue Jan 26 23:55:00 2010
          State : clean
 Active Devices : 1
Working Devices : 1
 Failed Devices : 1
  Spare Devices : 0
       Checksum : 5717e8f6 - correct
         Events : 26


      Number   Major   Minor   RaidDevice State
this     2       8       49       -1      spare   /dev/sdd1

   0     0       8       97        0      active sync   /dev/sdg1
   1     1       0        0        1      faulty removed

So what happened ? Re-adding failed but wrote the superblock, which upon examination is now exactly equal to the valid current array member sdg1:

 mouse ~ # mdadm --examine /dev/sdg1
/dev/sdg1:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 4eee1ddc:8bcacb4d:83e6059e:a5fcaf2c
  Creation Time : Mon Jan 25 20:52:23 2010
     Raid Level : raid1
  Used Dev Size : 311660864 (297.22 GiB 319.14 GB)
     Array Size : 311660864 (297.22 GiB 319.14 GB)
   Raid Devices : 2
  Total Devices : 1
Preferred Minor : 3

    Update Time : Tue Jan 26 23:55:00 2010
          State : clean
 Active Devices : 1
Working Devices : 1
 Failed Devices : 1
  Spare Devices : 0
       Checksum : 5717e8ef - correct
         Events : 26


      Number   Major   Minor   RaidDevice State
this     0       8       97        0      active sync   /dev/sdg1

   0     0       8       97        0      active sync   /dev/sdg1
   1     1       0        0        1      faulty removed

Magic: OK, UUID: OK, Events counter: both 26. Checksums: Correct. WTF ??

Still, not part of the array obviously:

mouse ~ # cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md3 : active raid1 sdg1[0]
      311660864 blocks [2/1] [U_]

Now, if I try one more time to re-add it, no event counters are updated on either member, but the checksum of sdd1 now goes to

       Checksum : 5717e8f6 - expected 5717e896

I'm really at a loss here with this. The day before yesterday I had similar results with a much more complex raid-6 created-degraded array with 5 members. I'm sort of relieved I can reproduce it with a plain raid-1 array to avoid all that added complexity.

Now for the ''funny'' part. If I take another identical disk, sdc, partition it and add it to the array it works. Without waiting for the sync to finish I reboot. After, I find that sdc has suffered the same fate as sdd, ie.:
* It is not listed in /proc/mdstat
* mdadm --examine lists checksum as being wrong

In addition, stuff is now REALLY confused. /proc/mdstat lists no other members belonging to md3 and mdadm --detail agrees. However, mdadm --examine on all disks, active and otherwise, disagrees completely:

  mouse ~ # mdadm --detail /dev/md3
/dev/md3:
        Version : 0.90
  Creation Time : Mon Jan 25 20:52:23 2010
     Raid Level : raid1
     Array Size : 311660864 (297.22 GiB 319.14 GB)
  Used Dev Size : 311660864 (297.22 GiB 319.14 GB)
   Raid Devices : 2
  Total Devices : 1
Preferred Minor : 3
    Persistence : Superblock is persistent

    Update Time : Wed Jan 27 00:28:21 2010
          State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           UUID : 4eee1ddc:8bcacb4d:83e6059e:a5fcaf2c
         Events : 0.28

    Number   Major   Minor   RaidDevice State
       0       8       97        0      active sync   /dev/sdg1
       1       0        0        1      removed


mouse ~ # mdadm --examine /dev/sdg1
/dev/sdg1:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 4eee1ddc:8bcacb4d:83e6059e:a5fcaf2c
  Creation Time : Mon Jan 25 20:52:23 2010
     Raid Level : raid1
  Used Dev Size : 311660864 (297.22 GiB 319.14 GB)
     Array Size : 311660864 (297.22 GiB 319.14 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 3

    Update Time : Wed Jan 27 00:28:21 2010
          State : clean
 Active Devices : 1
Working Devices : 2
 Failed Devices : 1
  Spare Devices : 1
       Checksum : 5717f0f4 - correct
         Events : 28


      Number   Major   Minor   RaidDevice State
this     0       8       97        0      active sync   /dev/sdg1

   0     0       8       97        0      active sync   /dev/sdg1
   1     1       0        0        1      faulty removed
   2     2       8       33        2      spare   /dev/sdc1
mouse ~ # mdadm --examine /dev/sdc1
/dev/sdc1:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 4eee1ddc:8bcacb4d:83e6059e:a5fcaf2c
  Creation Time : Mon Jan 25 20:52:23 2010
     Raid Level : raid1
  Used Dev Size : 311660864 (297.22 GiB 319.14 GB)
     Array Size : 311660864 (297.22 GiB 319.14 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 3

    Update Time : Wed Jan 27 00:28:21 2010
          State : clean
 Active Devices : 1
Working Devices : 2
 Failed Devices : 1
  Spare Devices : 1
       Checksum : 5717f0b2 - expected 5717f072
         Events : 28


      Number   Major   Minor   RaidDevice State
this     2       8       33        2      spare   /dev/sdc1

   0     0       8       97        0      active sync   /dev/sdg1
   1     1       0        0        1      faulty removed
   2     2       8       33        2      spare   /dev/sdc1

How is it even possible that --detail on the array disagrees with --examine on its sole active member ? Is it not read from the same SB ?

Contrary to the expectations perhaps: mdadm refuses to add /dev/sdc1 to /dev/md3. However, /dev/sdd1 is now happily accepted... (yes, really!!)

mouse ~ # cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md3 : active raid1 sdd1[2] sdg1[0]
      311660864 blocks [2/1] [U_]
[>....................] recovery = 2.4% (7567360/311660864) finish=75.9min speed=66768K/sec

I'm really hitting the wall. :-(
Can anyone even explain what I'm seeing, or help to find the cause ?


To finish off, some details about the system:
OS Gentoo, kernel 2.6.31-gentoo-r6, SMP, Athlon X2, x86_64.
All SATA controllers used are SIL, with one SATA port replicator
Initial mdadm version used: 3.0, current version 2.6.8
System was specially built for 15-disk operation but has currently only 6 disks attached. The 7-hour resync of the raid6 array (and the quicker raid1 resync) was succesfully passed without glitches. System was shut down properly, no crashes.
System is not in production, I can do/try whatever is necessary.
If anyone suspects the SATA port replicator I'm happy to take it out.
Neither onboard VIA nor Marvell SATA channels are used, only SIL.

mouse ~ # lspci |grep -i ata
00:0f.0 IDE interface: VIA Technologies, Inc. VT8237A SATA 2-Port Controller (rev 80) 05:00.0 RAID bus controller: Silicon Image, Inc. SiI 3132 Serial ATA Raid II Controller (rev 01) 06:00.0 SATA controller: Marvell Technology Group Ltd. 88SE6121 SATA II Controller (rev b0) 07:06.0 RAID bus controller: Silicon Image, Inc. SiI 3112 [SATALink/SATARaid] Serial ATA Controller (rev 02) 07:07.0 RAID bus controller: Silicon Image, Inc. SiI 3112 [SATALink/SATARaid] Serial ATA Controller (rev 02) 07:08.0 RAID bus controller: Silicon Image, Inc. SiI 3112 [SATALink/SATARaid] Serial ATA Controller (rev 01) 07:09.0 RAID bus controller: Silicon Image, Inc. SiI 3124 PCI-X Serial ATA Controller (rev 02)

Regards,
Maarten
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux