mdadm assembles with drives instead of partitions

Do not zero the super block. Edit as mdadm suggested /etc/mdadm.conf or /etc/mdadm/mdadm.conf and change DEVICE .... to:

DEVICE /dev/sda1
DEVICE /dev/sdb1
DEVICE /dev/sdc1
DEVICE /dev/sdd1
DEVICE /dev/sde1

What seems to happen is MD sees the same superblock from two devices (sdb1 is a subset of sdb). Killing the superblock would kill the real superblock so don't do that.

MD v0.90 superblocks are stored at the end of the device on a 64k-aligned block. In your case sdb1 is the only partition and the superblock can be found at the end of both sdb and sdb1. Somehow (this appears to be an an old issue, see link at the end) MD got confused and started to think you have two copies of the superblock on two separate devices.

The fix is easy if you have some extra space on that partition - you can simply wipe the superbblock then repartition the disk ending the partition 64k before the end of the disk; MD won't see a suberblock on sdb and assemble the array properly using sdb1. If you cannot take out 64k from sdb, you'll have to rebuild the array. If this isn't your boot disk, you can also use a newer superblock version. v.1.1 and v.1.2 both store the superblock somewhere on the beginning of the array, which will solve this specific problem.

I've just experienced the exact same problem on a raid1. Using "fdisk -u" (use sectors as units) the partition was ending on sector 143374743. I subtracted 128 from this number (128 512-byte sectors = 64k) and used the resulting number as the end of the partition. I could then verify that MD wouldn't see the superblock on sda with:

# mdadm --misc -E /dev/sda

It seems the recent behavioral change of using sectors and dropping DOS compatibility in partitioning tools led to having the last partition always end at the very end of the disk (rather than on a cylinder boundary). Some other parameters may come into play as - for instance - I have a running system which does show the duplicate superblocks when disks are queried directly, and still mounts its array properly.

For more info on MD superblock formats, see:

https://raid.wiki.kernel.org/index.php/RAID_superblock_formats#The_version-0.90_Superblock_Format

The Debian FAQ (point 11.) mention this issue:

http://git.debian.org/?p=pkg-mdadm/mdadm.git;a=blob_plain;f=debian/FAQ;hb=HEAD