Re: Accesses to not yet running array

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

 



Hello Martin,

On Sat, Aug 24, 2013 at 8:41 PM, Martin Wilck <mwilck@xxxxxxxx> wrote:
> On 08/24/2013 02:42 PM, Francis Moreau wrote:
>> On Sat, Aug 24, 2013 at 2:40 PM, Francis Moreau <francis.moro@xxxxxxxxx> wrote:
>>> Hello Martin,
>>>
>>> On Fri, Aug 23, 2013 at 9:09 PM, Martin Wilck <mwilck@xxxxxxxx> wrote:
>>>> On 08/23/2013 12:00 PM, Francis Moreau wrote:
>>>>
>>>>> [ adding Martin in CC since it seems related to DDF... ]
>>>>
>>>> I reproduced it here. The problem is that mdmon isn't running. Simply
>>>> try running "mdmon /dev/md127", and the mount should proceed.
>>>>
>>>
>>> oh, ok, I should have noticed.
>>>
>>>> You'd avoid the problem by running "mdadm -IR /dev/sda" in the first place.
>>>
>>> Actually this is how arrays are assembled during boot on some
>>> distributions (Fedora for example).
>>
>> I meant the sequence:
>>
>> mdadm -I /dev/sda
>> mdadm -I /dev/sdb
>> mdadm -R /dev/mdxxx
>>
>> is used by distribution.
>
> CentOS 6 uses the following sequence:
>
> mdadm -I /dev/sda
> mdadm -I /dev/sdb
> mdadm -I /dev/mdXXX
>
> I don't see mdadm -R anywhere on CentOS.

After digging into the code of dracut, it seems that the bug (mdmon
not started by mdadm -R /dev/mdxxx on incomplete array) seems to be
known and a workaround exists.

Basically the script which starts MD arrays (slightly modified by me
to make it easier to read) does:

for md in /dev/md[0-9_]*; do

    ...

    [ $(cat $md/array_state) != inactive ] && continue

    mdadm --offroot -R $md

    [ $(cat $md/array_state) = inactive ] && continue

    # workaround for mdmon bug
    [ $(cat $md/degraded) -gt 0 ] && mdmon --offroot --takeover $md
done

In theory this should fix the bug but it doesn't (looks like I'm
really unlucky). Indeed at the time the script is run, the container
device doesn't exist in /dev. Therefore the workaround is only
executed on the MD array device. I can see the following message
during the boot: "mdmon: md126 is not a container - cannot monitor"

I tried to add "udevadm settle" before executing the workaround but
that doesn't help.

> You could change your udev rules to run "mdadm -IR /dev/mdXXX" instead.
> Have you tried that?

I tried and it works fine.

Thanks
-- 
Francis
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[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