Re: raid0 layout issue documentation / confusions

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

 



On Tue, Oct 29, 2019 at 10:21:25PM +0100, Andreas wrote:
> (I wanted to react to the thread "admin-guide page for raid0 layout issue", but I just registered and I don't know how to respond to
> existing messages.)
> 
> I would like to make some suggestions regarding the recent
> raid0 layout patch, as it made my system unbootable, and
> it took me quite some time to figure out what was wrong
> and how to fix it. I also encountered  confusion on the
> web. I am just a regular user, not a programmer or linux
> guru, so take my suggestions as such.
>
> * Everywhere where the values are documented, all three of
> 0, 1, and 2 should be explicitly documented (not only two
> of them). If I am not mistaken, 0 means "unset", 1 means
> "old layout" (kernel 3.14 and older), 2 means "new layout"
> (3.15 and later).

Off-by-one there - it is older than 3.14 vs. 3.14 and later.

> * When trying to assemble existing array but without the
> kernel parameter set (i.e. set to 0) it silently fails.
> Only in the kernel ring buffer there is a message:
>  md/raid0:md0: cannot assemble multi-zone RAID0 with default_layout setting
>  md/raid0: please set raid.default_layout to 1 or 2
> 
>   When trying to create a raid0 array, it gives an error, but it is not helpful:
>     mdadm: Defaulting to version 1.2 metadata
>     mdadm: RUN_ARRAY failed: Unknown error 524
> 
> For both cases, and both places (mdamd and dmesg) should be more informative.
> 
> * The recommended parameter value for new raid0 arrays should be made clear. I guess it's 2.

Thanks for mentioning this - my understanding is that neither is
inherently better than the other, and I've noted as much in my patch.

> * Various places where documentation could (or should) be added:
> 	- mdamd error messags
> 	- kernel ring buffer messages
> 	- mdadm man page
> 	- mdadm wiki
> 	- kernel parameter documentation pages
> 
> Confusions:
> * The definition of the parameter values is wrong in the patch description:
> https://github.com/torvalds/linux/commit/c84a1372df929033cb1a0441fb57bd3932f39ac9#diff-158c54ea7ccae01a77ae3f5d44ab0f94
> it says 0 is old, 1 is new. Please fix, because this
> contributes to confusion, and may even lead to data
> corruption.

Sorry, we can't retroactively change a commit message.

> * On the raid mailing list
> https://www.spinics.net/lists/raid/msg63337.html someone
> said "new (1) and old (2) vs. unset (0)". No one objected,
> but I guess that this is also wrong?
> 
> * Two webpages (of the rare ones on this issue) are conflicting on what is the meaning of parameter 1 and 2.
>         https://blog.icod.de/2019/10/10/caution-kernel-5-3-4-and-raid0-default_layout/ says 1 is old, 2 is new.
>         https://www.reddit.com/r/linuxquestions/comments/debx7w/mdadm_raid0_default_layout/ says 2 is old, 1 is new.
> 
> * https://blog.icod.de/2019/10/10/caution-kernel-5-3-4-and-raid0-default_layout/
> suggests that the kernel parameters should be set in GRUB
> as GRUB_CMDLINE_LINUX_DEFAULT="raid0.default_layout=2" (or
> 1), but in my opinion it should set
> GRUB_CMDLINE_LINUX_DEFAULT because
> GRUB_CMDLINE_LINUX_DEFAULT is not used in recovery mode,
> but GRUB_CMDLINE_LINUX is. So, please document all
> possible (recommended) ways to set the parameter: GRUB,
> /etc/modprobe.d/00-local.conf, and
> /sys/module/raid0/parameters/default_layout.

Getting into the specifics of configuring individual bootloaders in
the kernel docs is a slippery slope. We can tell you what to set, but your
bootloader docs (or pages like the above) need to tell you how to set it.
That said, if you find incorrect documentation out there, it would be
appreciated if you could ask the site owner to correct it.

> * I was also wondering why the patch had to disable
> assembling if it was a working array on my system. Isn't
> it obvious, based on the kernel version with which it
> worked before the update, whether it should be 1 or 2? Why
> wasn't it possible to first automatically set the default
> kernel variable in grub.cfg and then do the update?

IMO, that's really an issue for distributions to consider, as the kernel
doesn't know what version you previously booted. However, note that
just because you're upgrading from say 5.0.1 to 5.0.2, doesn't mean
that you hadn't written to your array with, say, 3.12 in the past. And
maybe all of your data was written w/ 3.12 and layout=1 is the best
choice.

> * Why is this parameter actually a *kernel* parameter.
> While not very likely, it is possible that two arrays with
> different layouts (needing different parameter settings)
> will end up in the same machine. In such a case any
> parameter choice may lead to data corruption. I would
> think that the layout parameter is a property of the
> specific array, so it should be in the meta-data of the
> array itself.

It is - as noted in my admin-guide patch, you can also set this on a
per-array basis via sysfs while the array is stopped.

  -dann



[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