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

Re: Does mdadm in the installer read its config file?



On Fri, Sep 11, 2020 at 04:56:34AM +0000, Andy Smith wrote:
> Hello,
> 
> TL;DR: the Debian installer uses an mdadm.conf located at
> /tmp/mdadm.conf.
> 
> On Thu, Sep 10, 2020 at 04:18:27PM +0000, Andy Smith wrote:
> > I have confirmed that creating a new array from the d-i shell using
> > mdadm commands manually does result in a new array without a bbl (so
> > this invocation of mdadm did read /etc/mdadm/mdadm.conf):
> 
> I made a shell history mistake and ended up examining the wrong
> device, so in fact I did not confirm this. I ended up testing a
> device that I had previously forced to have its bbl removed, that's
> why the bbl was gone.
> 
> > ~ # mdadm -v --create /dev/md2 --assume-clean --level=1 --raid-devices=2 /dev/sd[ab]3
> 
> …array made with /dev/sd[ab]3…
> 
> > ~ # mdadm --examine /dev/sda1
> 
> …but I examined sda1 by mistake.
> 
> So. Going through this manual creation again, what I see is that
> if I force mdadm to read its config file then:
> 
> ~ # swapoff /dev/md2
> ~ # mdadm --stop /dev/md2 
> mdadm: stopped /dev/md2
> ~ # mdadm --zero-superblock /dev/sda3
> ~ # mdadm --zero-superblock /dev/sdb3
> ~ # mdadm --create -v --config=/etc/mdadm/mdadm.conf /dev/md2 --assume-clean --level=1 --raid-devices=2 /dev/sd[ab]3
> mdadm: Note: this array has metadata at the start and
>     may not be suitable as a boot device.  If you plan to
>     store '/boot' on this device please ensure that
>     your boot-loader understands md/v1.x metadata, or use
>     --metadata=0.90
> mdadm: size set to 1951744K
> Continue creating array? y
> mdadm: Defaulting to version 1.2 metadata
> mdadm: array /dev/md2 started.
> ~ # mdadm --examine /dev/sda3
> /dev/sda3:
> …
> (no bbl)
> …
> 
> but if I just call mdadm as normal, it does not read its config
> file:
> 
> ~ # mdadm --stop /dev/md2 
> mdadm: stopped /dev/md2
> ~ # mdadm --zero-superblock /dev/sda3
> ~ # mdadm --zero-superblock /dev/sdb3
> ~ # mdadm --create -v /dev/md2 --assume-clean --level=1 --raid-devices=2 /dev/sd[ab]3
> mdadm: Note: this array has metadata at the start and
>     may not be suitable as a boot device.  If you plan to
>     store '/boot' on this device please ensure that
>     your boot-loader understands md/v1.x metadata, or use
>     --metadata=0.90
> mdadm: size set to 1951744K
> Continue creating array? y
> mdadm: Defaulting to version 1.2 metadata
> mdadm: array /dev/md2 started.
> ~ # mdadm --examine /dev/sdb3
> …
>   Bad Block Log : 512 entries available at offset 72 sectors
> …
> 
> So that'd explain why d-i's usage of mdadm doesn't obey the config
> file. Yet the man page for mdadm says:
> 
>     --config=
>         Specify   the   config   file  or  directory.   Default  is
>         to use /etc/mdadm/mdadm.conf…
> 
> I have now tried this in a real system and there the config file is
> respected. I am really confused at this point.
> 
> So I installed strace in the d-i shell, and…
> 
> ~ # strace -e trace=open -o strace.log mdadm --create -v /dev/md2 --assume-clean --level=1 --raid-devices=2 /dev/sd[ab]3
> …
> ~ # grep .conf strace.log 
> open("/tmp/mdadm.conf", O_RDONLY)       = 3
> open("/tmp/mdadm.conf.d", O_RDONLY)     = -1 ENOENT (No such file or directory)
> 
> Uh, alright then.
> 
> ~ # cp /etc/mdadm/mdadm.conf /tmp/
> ~ # mdadm --create -v /dev/md2 --assume-clean --level=1 --raid-devices=2 /dev/sd[ab]3
> ~ # mdadm --examine /dev/sda3
> /dev/sda3:
> (no bbl)
> 
> I assume there is a good reason for d-i having an mdadm binary that
> wants to use /tmp/ and not /etc/mdadm/ for its config directory.

/tmp is probably a writable tmpfs and /etc is probably a read only CD filesystem.

-- 
Len Sorensen


Reply to: