linux-raid.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: NeilBrown <neilb@suse.de>
To: Richard Michael <rmichael@edgeofthenet.org>
Cc: linux-raid@vger.kernel.org
Subject: Re: After RAID0 grow: inconsistent superblocks and /proc/mdstat
Date: Mon, 13 Jan 2014 16:03:24 +1100	[thread overview]
Message-ID: <20140113160324.189c96bd@notabene.brown> (raw)
In-Reply-To: <CABR0jETBgOtu8EbR0oT0TNP_ixg0-vBQUyPZbrDTFBYU3KTL4Q@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 5249 bytes --]

On Sun, 12 Jan 2014 23:37:57 -0500 Richard Michael
<rmichael@edgeofthenet.org> wrote:

> Hello list,
> 
> I grew a RAID0 by one-disk, and it re-shaped via RAID4 as expected.
> 
> However, the component superblocks still RAID4, while /proc/mdstat,
> /sys/block/md0/md/level and "mdadm -D" all indicate RAID0.
> 
> I am reluctant to stop the array, in case auto-assemble can't put it
> back together.  (I suppose I could create a new array, but I'd want to
> be quite confident about the layout of the disks.)
> 
> 
> Is this a bug?  Should/can I re-write the superblock(s)?
> 
> 
> # cat /proc/mdstat
> Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
> md0 : active raid0 sdc1[2] sdd1[0]
>       5860268032 blocks super 1.2 512k chunks
> 
> # cat /sys/block/md0/md/level
> raid0
> 
> # mdadm -D /dev/md0
> /dev/md0:
>         Version : 1.2
>   Creation Time : Fri Jan 10 13:02:25 2014
>      Raid Level : raid0
>      Array Size : 5860268032 (5588.79 GiB 6000.91 GB)
>    Raid Devices : 2
>   Total Devices : 2
>     Persistence : Superblock is persistent
> 
>     Update Time : Sun Jan 12 20:08:53 2014
>           State : clean
>  Active Devices : 2
> Working Devices : 2
>  Failed Devices : 0
>   Spare Devices : 0
> 
>      Chunk Size : 512K
> 
>     Number   Major   Minor   RaidDevice State
>        0       8       49        0      active sync   /dev/sdd1
>        2       8       33        1      active sync   /dev/sdc1
> 
> 
> 
> But,
> 
> 
> # mdadm -E /dev/sd[cd]1
> /dev/sdc1:
>           Magic : a92b4efc
>         Version : 1.2
>     Feature Map : 0x0
>      Array UUID : 8f51352a:610d0ecd:a1e28ddd:86c8586c
>            Name : anvil.localdomain:0  (local to host anvil.localdomain)
>   Creation Time : Fri Jan 10 13:02:25 2014
>      Raid Level : raid4
>    Raid Devices : 3
> 
>  Avail Dev Size : 5860268943 (2794.39 GiB 3000.46 GB)
>      Array Size : 5860268032 (5588.79 GiB 6000.91 GB)
>   Used Dev Size : 5860268032 (2794.39 GiB 3000.46 GB)
>     Data Offset : 260096 sectors
>    Super Offset : 8 sectors
>    Unused Space : before=260008 sectors, after=2959 sectors
>           State : clean
>     Device UUID : ad6e6c88:0f897bc1:1f6ec909:f599bc01
> 
>     Update Time : Sun Jan 12 20:08:53 2014
>   Bad Block Log : 512 entries available at offset 72 sectors
>        Checksum : 1388a7b - correct
>          Events : 9451
> 
>      Chunk Size : 512K
> 
>    Device Role : Active device 1
>    Array State : AA. ('A' == active, '.' == missing, 'R' == replacing)
> /dev/sdd1:
>           Magic : a92b4efc
>         Version : 1.2
>     Feature Map : 0x0
>      Array UUID : 8f51352a:610d0ecd:a1e28ddd:86c8586c
>            Name : anvil.localdomain:0  (local to host anvil.localdomain)
>   Creation Time : Fri Jan 10 13:02:25 2014
>      Raid Level : raid4
>    Raid Devices : 3
> 
>  Avail Dev Size : 5860268032 (2794.39 GiB 3000.46 GB)
>      Array Size : 5860268032 (5588.79 GiB 6000.91 GB)
>     Data Offset : 260096 sectors
>    Super Offset : 8 sectors
>    Unused Space : before=260008 sectors, after=2959 sectors
>           State : clean
>     Device UUID : b3cda274:547919b1:4e026228:0a4981e7
> 
>     Update Time : Sun Jan 12 20:08:53 2014
>   Bad Block Log : 512 entries available at offset 72 sectors
>        Checksum : e16a1979 - correct
>          Events : 9451
> 
>      Chunk Size : 512K
> 
>    Device Role : Active device 0
>    Array State : AA. ('A' == active, '.' == missing, 'R' == replacing)
> 
> 
> 
> Somewhat aside, I grew the array with:
> 
> "mdadm --grow /dev/md0 --raid-devices=2 --add /dev/sdc1"

That is the correct command.

> 
> I suspect I should not have used "--add".  Looking at the superblock,
> there is a 3rd unknown device, which I did not intend to add.
> 
> Did I convince mdadm to add two devices at the same time, sdc1 *and* a
> missing device?  (This surprises me a bit, in the sense that
> --raid-devices=2 would pertain to the added devices, rather than the
> total devices in the array.)
> 
> Or, perhaps mdadm add a "dummy" device as part of the temporary RAID4
> conversion?

Exactly.  The RAID4 had 1 more device than the RAID0.  What is what you are
seeing.

I'm a bit confused ... did you grow this from a 1-device RAID0 to a 2-device
RAID0?  That seems like an odd thing to do, but it should certainly work.

This should work and I think I've tested it.  However looking at the code I
cannot see how it ever would have done.  I cannot see anything that would
write out the new metadata to the RAID0 after the reshape completes.
Normally md will never write to the metadata of a RAID0 so it would need
special handling which doesn't seem to be there.

I just tried testing it on the current mainline kernel and it crashes  :-(

So it looks like I need to do some fixing here.

Your array should continue to work.  If you reboot, it will be assembled as a
RAID4 with the parity disk missing.   This will work perfectly but may not be
as fast as RAID0.  You can "mdadm --grow /dev/md0 --level=0" to convert it to
RAID0 though it probably won't cause the metadata to be updated.

Thanks for the report.

NeilBrown

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

  parent reply	other threads:[~2014-01-13  5:03 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-13  4:37 After RAID0 grow: inconsistent superblocks and /proc/mdstat Richard Michael
2014-01-13  4:42 ` Richard Michael
2014-01-13  5:03   ` Richard Michael
2014-01-13  5:03 ` NeilBrown [this message]
     [not found]   ` <CABR0jEQO7f4DCMbY1zVMDxxyUD3usVTK4Jt4L9p=QN+fb6P3Uw@mail.gmail.com>
2014-01-14  6:11     ` NeilBrown
2014-01-14 17:09       ` Richard Michael

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140113160324.189c96bd@notabene.brown \
    --to=neilb@suse.de \
    --cc=linux-raid@vger.kernel.org \
    --cc=rmichael@edgeofthenet.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).