help-guix
[Top][All Lists]
Advanced

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

PSA for RAID users in Guix System (mdadm)


From: Felix Lechner
Subject: PSA for RAID users in Guix System (mdadm)
Date: Mon, 3 Apr 2023 09:50:39 -0700

Hi,

If you came from another GNU/Linux distribution and use software RAID
in Guix System, you may not be getting the best possible experience.
This message is probably only interesting to you if you have a
'raid-device-mapping' in your operating system declaration. [1]

In terms of basic functionality, the raid-device-mapping in Guix
checks whether all component devices are present before assembling an
array . [2] That check will prevent your system from booting when one
of your disks has failed. Since power cycles are a common source of
failure (at least for home users) the check is probably too strict.

The requirement to have all drives available kind of goes against the
purpose of having RAID.

At present, I am contemplating the best way to combine the declarative
features in Guix with mdadm's capability to auto-assemble arrays. It
may be enough to check that just one of the array components is
present instead of all. Eventually, I hope to send in a patch but I am
open to other ideas.

Second, and nearly as important, Guix does not install a cron job to
check your mdadm arrays. That functionality is essential in
maintaining your data redundancy when you consider that data is
generally found to be unavailable when reading—usually due to a faulty
drive sector—and must be written again to be available in the
reallocated sector.

The mdadm array check does exactly that. It reads all data in your
array and writes working copies to each component drive. In Debian and
most of its derivatives, that check is performed on the first Sunday
of each month at 1 AM in the morning. [3] Without it, you risk a
gradual degradation of your on-disk data. For plain mirroring across
two or more drives—which I personally think is the best RAID
setup—your data will become unavailable when there are no more working
copies in the array.

You can manually trigger such a check for your array with a command
like this one (please replace X)

    echo check > /sys/block/mdX/md/sync_action

and monitor the progress with

    cat /proc/mdstat

The 'checkarray' script that can be used for this purpose on Debian
[4] does not appear to be available in Guix. I may transcribe it into
GNU Guile if there is broader interest in our community.

I would be happy to hear everyone's thoughts. I have only used Guix
for a year and maintained mdadm in Debian.

Kind regards
Felix Lechner

[1] https://guix.gnu.org/manual/devel/en/html_node/Mapped-Devices.html
[2] 
https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/system/mapped-devices.scm#n292
[3] https://sources.debian.org/src/mdadm/4.2-5/systemd/mdcheck_start.timer/#L12
[4] https://sources.debian.org/src/mdadm/4.2-5/debian/checkarray/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]