initramfs/udev/mdadm/lvm2 integration

Jerome Haltom jhaltom at isillc.com
Thu Sep 6 23:14:53 BST 2007


Howdy. Currently on Gutsy, and also on Feisty, at least on the two
system's I've installed in the last month, the initramfs boot procedure
for booting off of LVM layered on top of MD does not work properly.
Basically it appears that the MD volumes simply never get assembled.

Up until now I've been manually patching some scripts in local-top which
simply run 'mdadm' and 'vgchange -a y' on their own to circumvent the
issue. I'd like to spend some time this week to actually fix it
properly, as I think it needs to be fixed.

Currently there are udev rules which look like they SHOULD work. They
don't. Regardless whether they do or don't, they're not exactly
adequate, in my opinion. The simply attempt to activate all non-degraded
volumes.

What SHOULD happen is they should attempt to activate only non-degraded
volumes until some timeout is reached, at which time they should
activate degraded volumes too.

Even above and beyond that, they should only activate volumes which
directly contribute to ROOT being made available. However, this is
probably not the best solution until a similar procedure is in place for
accomplishing the same procedure during mountall.sh. So I will forget
about it for now.

I'm posting this for two reasons. First, I want to ask whatever parties
are working on initramfs whether they are already working on solving
this. Second, I'd like advice from those same people if not.

I think udev should only automatically activate non-degraded volumes.
This should probably be a blanket rule of some sort. This is pretty easy
to accomplish with MD since by default it only does this. Fixing the
initramfs in this manner is probably a simple matter of just identifying
why the udev rules aren't firing properly.

Second in that is the best way to deal with the degraded timeout.
Currently the initramfs spins for 5 minutes or something before dropping
to a console. I think I'd like to alter this so it only spins for 1
minute or so, after which it attempts to execute scripts
in /scripts/local-timeout. Basically this would introduce local-timeout
along with local-top, local-bottom, and folks. mdadm will then install a
file into here which force activates all arrays whether degraded or not.
After this script the local script will attempt to find ROOT again, if
not, it drops to console as usual, if so it can proceed.

Is this a good plan? Does anybody object?

-- 
Jerome Haltom <jhaltom at isillc.com>
Institution Solutions LLC



More information about the ubuntu-devel mailing list