Thread (8 messages) 8 messages, 3 authors, 2012-09-13

Re: mdadm forces resync every boot

From: Daniel Frey <hidden>
Date: 2011-08-09 19:34:30

On 08/08/11 16:34, NeilBrown wrote:
On Fri, 05 Aug 2011 08:05:53 -0700 Daniel Frey [off-list ref] wrote:
quoted
Hi all,

I've been fighting with my raid array (imsm - raid10) for several weeks
now. I've now replaced all four drives in my array as the constant
rebuilding caused a smart error to trip on the old drives; unfortunately
mdadm is still resyncing the array at every boot.

One thing I would like to clarify is does mdadm need to disassemble the
array before reboot. At this point, I can't tell if my system is
currently doing this. Googling around it seems some say that this step
is unnecessary.
With md arrays using "native" metadata you don't need to be too careful
shutting down.  This is probably what you found by googling.

With IMSM metadata it is a little easier to get it "wrong" though it should
normally work correctly.

There is a program "mdmon" which communicates with the kernel and updates the
metadata on the devices.

When there have been no writes for a little while, mdmon will notice and mark
the array as 'clean'.  It will then mark it 'dirty' before the first write is
allowed to proceed.
On a clean shutdown of the array it will mark that array as 'clean'.

But for you, the system shuts down with the array marked 'dirty'.  This
suggests that on your machine 'mdmon' is being killed while the array is
still active.

Presumably your root is on the IMSM RAID10 array?  When the root filesystem
is marked 'read only' it will probably write to the filesystem to record that
a fsck is not needed.  So the array will be 'dirty'.  If you then halt before
mdmon has a chance to mark the array 'clean' you will get exactly the result
you see.
That's correct, my root is on the imsm raid10 array, along with my
dual-boot of Windows Vista. If I didn't want to boot Vista, I'd just be
using native mdadm like I always have.
If you arrange that the shutdown script runs
  mdadm --wait-clean --scan

after marking the root filesystem readonly, it will wait until all arrays are
recorded as 'clean'.
I've done some quick poking around and I do not see anything like that.
I'll look into it a little more and, if necessary, file a bug with the
distro.
This should fix your problem.

What distro are you using?  openSUSE has this command in /etc/init.d/reboot.
I've used gentoo for as long as I can remember. I've never had an issue
with mdadm on gentoo until I started using the imsm raid, so it's very
possible that the above command is missing from the shutdown sequence.

Thanks Neil! With this bit of information I should be able to get it
resolved. I do have both mdadm and dmraid kernels on this machine now,
so testing shouldn't be too hard.
NeilBrown
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help