From: NeilBrown <neilb@suse.de>
To: Dmitrijs Ledkovs <xnox@debian.org>
Cc: Roy Sigurd Karlsbakk <roy@karlsbakk.net>,
Roman Mamedov <rm@romanrm.ru>,
linux-raid <linux-raid@vger.kernel.org>,
Alexander Zvyagin <zvyagin.alexander@gmail.com>
Subject: Re: RAID50 boot problems
Date: Thu, 25 Apr 2013 09:44:17 +1000 [thread overview]
Message-ID: <20130425094417.4882607e@notabene.brown> (raw)
In-Reply-To: <CANBHLUikjsxOvBLkgAk4UDzwa3UPZ=jmTGhDzuMW31HLPCCu8Q@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3638 bytes --]
On Wed, 24 Apr 2013 23:44:20 +0100 Dmitrijs Ledkovs <xnox@debian.org> wrote:
> On 24 April 2013 07:52, NeilBrown <neilb@suse.de> wrote:
> > On Tue, 23 Apr 2013 19:34:19 +0200 (CEST) Roy Sigurd Karlsbakk
> > <roy@karlsbakk.net> 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 #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 828 bytes --]
next prev parent reply other threads:[~2013-04-24 23:44 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CAGqvA+t8Nr7D6h35ZKVi5Wa0tF46TQHK_Af_mXO2=ByRjWRQag@mail.gmail.com>
2013-04-17 18:45 ` RAID50 boot problems Alexander Zvyagin
[not found] ` <CAGA4a+GQp1RV_1pA6PBP=dbXV3MHhU74=Mo24xqqjKfWfoWXJA@mail.gmail.com>
2013-04-19 9:40 ` Alexander Zvyagin
2013-04-19 10:35 ` Roy Sigurd Karlsbakk
2013-04-19 10:42 ` Tommy Apel
2013-04-19 10:51 ` Roy Sigurd Karlsbakk
2013-04-19 11:38 ` Alexander Zvyagin
2013-04-19 10:45 ` Roy Sigurd Karlsbakk
2013-04-19 11:45 ` Roman Mamedov
2013-04-19 15:58 ` Roy Sigurd Karlsbakk
2013-04-21 22:10 ` NeilBrown
2013-04-22 11:02 ` Roy Sigurd Karlsbakk
2013-04-23 17:34 ` Roy Sigurd Karlsbakk
2013-04-24 6:52 ` NeilBrown
2013-04-24 11:19 ` Roy Sigurd Karlsbakk
2013-04-24 12:12 ` NeilBrown
2013-04-24 12:29 ` Roy Sigurd Karlsbakk
2013-04-24 20:01 ` Roy Sigurd Karlsbakk
2013-04-24 23:35 ` NeilBrown
2013-04-24 22:44 ` Dmitrijs Ledkovs
2013-04-24 23:44 ` NeilBrown [this message]
2013-04-26 19:10 ` Roy Sigurd Karlsbakk
2013-04-26 19:24 ` Dmitrijs Ledkovs
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130425094417.4882607e@notabene.brown \
--to=neilb@suse.de \
--cc=linux-raid@vger.kernel.org \
--cc=rm@romanrm.ru \
--cc=roy@karlsbakk.net \
--cc=xnox@debian.org \
--cc=zvyagin.alexander@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox