On Fri, Nov 18 2016, Andy Smith wrote: > Hi Neil, > > On Thu, Nov 17, 2016 at 05:09:28PM +1100, NeilBrown wrote: >> On Thu, Nov 17 2016, Andy Smith wrote: >> > After install the name of the server was changed from "tbd" to >> > "jfd". Another array was then created (md5), added to >> > /etc/mdadm/mdadm.conf and the initramfs was rebuilt >> > (update-initramfs -u). >> > >> > md5 does not auto-assemble. It can be started fine after boot with: >> > >> > # mdadm --assemble /dev/md5 >> > >> > or: >> > >> > # mdadm --incremental /dev/sdc >> > # mdadm --incremental /dev/sdd >> >> This is almost exactly what udev does when the devices are discovered, >> so if it works here, it should work when udev does it. > > Indeed. So confusing. :( > >> My only guess is that maybe the "DEVICE /dev/sd*" line in the mdadm.conf >> is causing confusion. udev might be using a different name, though that >> would be odd. >> >> Can you try removing that line and see if it makes a difference? > > I've now tried that and it hasn't made a difference. > > I don't know anything about udev but I guess that assembly is > handled by /lib/udev/rules.d/64-md-raid-assembly.rules whose only > relevant ACTION lines are: > > # remember you can limit what gets auto/incrementally assembled by > # mdadm.conf(5)'s 'AUTO' and selectively whitelist using 'ARRAY' > ACTION=="add|change", IMPORT{program}="/sbin/mdadm --incremental --export $tempnode --offroot ${DEVLINKS}" > ACTION=="add|change", ENV{MD_STARTED}=="*unsafe*", ENV{MD_FOREIGN}=="no", ENV{SYSTEMD_WANTS}+="mdadm-last-resort@$env{MD_DEVICE}.timer" > > …but I can't work out why they wouldn't be working here. > > Time for a Debian bug report? Maybe, though as they are using *exactly* the upstream mdadm-udev files it probably isn't something they've broken. Something you could try, after boot and while the arrays are still not assembled, is echo change > /sys/block/sdc/uevent echo change > /sys/block/sdd/uevent That should cause udev to assemble the array. If you had "udevadm monitor" running at the same time, you would even see the events. Alternately you could use "udevadm trigger" instead of the "echo" commands. That effectively sends 'change' to all devices. If that doesn't work, the looking over the udev logs, and possibly turning on extra udev logging, might lead to an answer. If it does work, then we need to work out why it doesn't work earlier in boot. /etc/init.d/udev runs "udevadm trigger --action=add" which should pick up anything that the initrd missed. Maybe adding some tracing around that would help. NeilBrown
Attachment:
signature.asc
Description: PGP signature