Re: RAID50 boot problems

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

 



On Wed, 24 Apr 2013 23:44:20 +0100 Dmitrijs Ledkovs <xnox@xxxxxxxxxx> wrote:

> On 24 April 2013 07:52, NeilBrown <neilb@xxxxxxx> wrote:
> > On Tue, 23 Apr 2013 19:34:19 +0200 (CEST) Roy Sigurd Karlsbakk
> > <roy@xxxxxxxxxxxxx> wrote:
> >
> >> > > > Please see http://paste.ubuntu.com/5721934/ for the full list,
> >> > > > taken
> >> > > > with network console. This is with rootdelay=10
> >> > >
> >> > > The "bind" messages are in random order so presumably udev running
> >> > > 'mdadm -I'
> >> > > on each device as it appear to add it to an array.
> >> > > However when the md0 and md1 devices appear, udev isn't being run on
> >> > > that.
> >> > > So it looks like your udev rules file is wrong.
> >> > > Find out which file(s) in /{etc,lib,usr/lib}/udev/rules.d mention
> >> > > mdadm and
> >> > > post them.
> >> >
> >> > /lib/udev/rules.d/64-md-raid.rules is here
> >> > http://paste.ubuntu.com/5592227/
> >>
> >> Bug tested positive also on Ubuntu Precise (12.04) and reported to https://bugs.launchpad.net/ubuntu/+source/mdadm/+bug/1171945
> >>
> >> Vennlige hilsener / Best regards
> >>
> >>
> >
> > This will run "mdadm --incremental $tempnode" on any device for which
> > ID_FS_TYPE is set to "linux_raid_member", which certainly seems reasonable.
> >
> > What does:
> >    udevadm info --query=property --path=/dev/mdXXX | grep ID_FS_TYPE
> >
> > report for the raid5 arrays?
> >
> > Looking bug report I see that md0 and md1 have
> >    ID_FS_TYPE=linux_raid_member
> >
> > So that should be working.
> >
> > The fact that rootdelay=10 makes a difference suggests that it is
> > successfully assembling the raid0, but just taking a bit too long.
> > Maybe the script in the initrd needs "udevadm settle" just before it attempts
> > to mount.
> >
> > Can you look inside the initrd and see if "udevadm settle" is used anywhere?
> >
> 
> Yes, we do call and wait for udevadm to settle a few times, but it is
> still too short and may not be long enough to detect nested raid
> volumes and mount them properly in the correct order and non-degraded.
> I have a few thoughts on using a strategy similar to that in dracut /
> fedora to pass ids of the md arrays to assemble for rootfs device, and
> keep trying to assemble the rest of mdadm "on best effort" basis
> during boot.
> That way I am also hoping to finally get rid of the dreaded "boot
> degraded" boot option / question / prompt.
> This is still just design in progress and hasn't been implemented yet.
> I will be contacting this mailing list once I have something ready to
> improve raid assembly in ubuntu.
> 

My current thinking is that the initramfs should *only* assemble arrays needed
to mount the root filesystems.  All other arrays should wait for root to be
mounted so that real /etc/mdadm.conf (or /etc/mdadm/mdadm.conf) can be
consulted.
This can be achieved by putting
  auto -all
in mdadm.conf on the initramfs, then listing the arrays that are needed.

I'm not convinced that your boot-degraded option is a bad thing.  Certainly
it should be optional so unattended boot is possible, and we should do our
best to minimise the number of times that it is consulted.  But there are
times when it is better to know that something is wrong, than to proceed and
do the wrong thing.

A particularly bad case is a RAID1 pair where one device failed a few days
ago.
If after a reboot the good device is missing (cable problem?) and the bad
device is visible, it could be best not to boot rather than to boot with an
old root based on the old  'failed' device.

NeilBrown

Attachment: signature.asc
Description: PGP signature


[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