* Dumb questions about mdadm #1 - replacing broken disks - "slot" reuse?
@ 2009-09-18 12:13 John Hughes
2009-09-18 19:12 ` Mario 'BitKoenig' Holbe
0 siblings, 1 reply; 4+ messages in thread
From: John Hughes @ 2009-09-18 12:13 UTC (permalink / raw)
To: linux-raid
mdadm version 2.6.7.2-3 on Debian Lenny, kernel 2.6.26-2-xen-amd64
I'm new to mdadm, all my experience with software raid/volume management
type systems has been with Vertas VxVM on UnixWare.
I'm replacing an existing UnixWare system by Linux and I'm trying to get
a feel for how to perform some simple operations.
As I understand it to replace a failed disk (assuming no hot spares for
the moment) I just do:
mdadm --manage /dev/md0 --remove /dev/failed-disk
mdadm --manage /dev/md0 --add /dev/new-disk
This works, but when I look at the results it looks rather ugly, the new
disk goes in a new "slot" in the raid superblock. Is it the case that
every time I replace a disk I'm going to get a new slot? Doesn't that
make the raid "superblock" grow without limit?
Before:
# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid10 sdw[11] sdg[10] sdv[9] sdf[8] sdu[7] sde[6] sdt[5] sdd[4] sds[3] sdc[2] sdr[1] sdb[0]
426970368 blocks super 1.2 64K chunks 2 near-copies [12/12] [UUUUUUUUUUUU]
bitmap: 1/204 pages [4KB], 1024KB chunk
unused devices: <none>
# mdadm --examine /dev/sdb:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 9477b121:204de4c4:a96d58e9:85746699
Name : caronia:testarray2 (local to host caronia)
Creation Time : Fri Sep 18 12:59:24 2009
Raid Level : raid10
Raid Devices : 12
Avail Dev Size : 142323568 (67.87 GiB 72.87 GB)
Array Size : 853940736 (407.19 GiB 437.22 GB)
Used Dev Size : 142323456 (67.87 GiB 72.87 GB)
Data Offset : 144 sectors
Super Offset : 8 sectors
State : clean
Device UUID : 64949ade:b6d618a8:f45a3b07:29ddc35e
Internal Bitmap : 8 sectors from superblock
Update Time : Fri Sep 18 13:38:41 2009
Checksum : 256ea9d4 - correct
Events : 4
Layout : near=2, far=1
Chunk Size : 64K
Array Slot : 0 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
Array State : Uuuuuuuuuuuu
After:
# mdadm --manage /dev/md0 --fail /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md0
# mdadm --manage /dev/md0 --remove /dev/sdc
mdadm: hot removed /dev/sdc
# mdadm --manage /dev/md0 --add /dev/sdh
mdadm: added /dev/sdh
[...]
# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid10 sdh[12] sdw[11] sdg[10] sdv[9] sdf[8] sdu[7] sde[6] sdt[5] sdd[4] sds[3] sdr[1] sdb[0]
426970368 blocks super 1.2 64K chunks 2 near-copies [12/12] [UUUUUUUUUUUU]
bitmap: 0/204 pages [0KB], 1024KB chunk
unused devices: <none>
Eeew, /dev/sdh is in slot 12, where is slot 2?
And:
# mdadm --examine /dev/sdh
/dev/sdh:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 9477b121:204de4c4:a96d58e9:85746699
Name : caronia:testarray2 (local to host caronia)
Creation Time : Fri Sep 18 12:59:24 2009
Raid Level : raid10
Raid Devices : 12
Avail Dev Size : 142323568 (67.87 GiB 72.87 GB)
Array Size : 853940736 (407.19 GiB 437.22 GB)
Used Dev Size : 142323456 (67.87 GiB 72.87 GB)
Data Offset : 144 sectors
Super Offset : 8 sectors
State : clean
Device UUID : 31c4a4f5:7aef046d:8981c552:b63165c2
Internal Bitmap : 8 sectors from superblock
Update Time : Fri Sep 18 13:56:55 2009
Checksum : b09071e2 - correct
Events : 14
Layout : near=2, far=1
Chunk Size : 64K
Array Slot : 12 (0, 1, failed, 3, 4, 5, 6, 7, 8, 9, 10, 11, 2)
Array State : uuUuuuuuuuuu 1 failed
Is it the case that every time I replace a disk I'm going to get a new
slot? Doesn't that make the raid "superblock" grow without limit?
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: Dumb questions about mdadm #1 - replacing broken disks - "slot" reuse?
2009-09-18 12:13 Dumb questions about mdadm #1 - replacing broken disks - "slot" reuse? John Hughes
@ 2009-09-18 19:12 ` Mario 'BitKoenig' Holbe
2009-09-20 16:55 ` Mario 'BitKoenig' Holbe
0 siblings, 1 reply; 4+ messages in thread
From: Mario 'BitKoenig' Holbe @ 2009-09-18 19:12 UTC (permalink / raw)
To: linux-raid
John Hughes <john@Calva.COM> wrote:
> This works, but when I look at the results it looks rather ugly, the new
> disk goes in a new "slot" in the raid superblock. Is it the case that
This is not a dumb question. This is just unexpected behaviour :)
I have the same here on a 1.1 superblock RAID1
> Before:
> md0 : active raid10 sdw[11] sdg[10] sdv[9] sdf[8] sdu[7] sde[6] sdt[5] sdd[4] sds[3] sdc[2] sdr[1] sdb[0]
> 426970368 blocks super 1.2 64K chunks 2 near-copies [12/12] [UUUUUUUUUUUU]
> bitmap: 1/204 pages [4KB], 1024KB chunk
> After:
> md0 : active raid10 sdh[12] sdw[11] sdg[10] sdv[9] sdf[8] sdu[7] sde[6] sdt[5] sdd[4] sds[3] sdr[1] sdb[0]
> 426970368 blocks super 1.2 64K chunks 2 near-copies [12/12] [UUUUUUUUUUUU]
> bitmap: 0/204 pages [0KB], 1024KB chunk
In my case I created the array as:
# uname -a
Linux darkside 2.6.30-1-686 #1 SMP Sat Aug 15 19:11:58 UTC 2009 i686 GNU/Linux
# mdadm --create -e 1.1 -l raid1 -n 2 -b internal -a md /dev/md9 /dev/hdh missing
and subsequently added /dev/sdd.
/proc/mdstat:
md9 : active raid1 sdd[2] hdh[0]
312571092 blocks super 1.1 [2/2] [UU]
bitmap: 1/299 pages [4KB], 512KB chunk
# mdadm -E /dev/hdh /dev/sdd
/dev/hdh:
Magic : a92b4efc
Version : 1.1
Feature Map : 0x1
...
Raid Level : raid1
Raid Devices : 2
...
Data Offset : 264 sectors
Super Offset : 0 sectors
State : clean
...
Internal Bitmap : 8 sectors from superblock
Update Time : Fri Sep 18 20:14:24 2009
Checksum : 754e56a3 - correct
Events : 12564
...
Device Role : Active device 0
Array State : AA ('A' == active, '.' == missing)
/dev/sdd:
Magic : a92b4efc
Version : 1.1
Feature Map : 0x1
...
Raid Level : raid1
Raid Devices : 2
...
Data Offset : 264 sectors
Super Offset : 0 sectors
State : clean
...
Internal Bitmap : 8 sectors from superblock
Update Time : Fri Sep 18 20:14:24 2009
Checksum : 8747d7b3 - correct
Events : 12564
...
Device Role : spare
Array State : AA ('A' == active, '.' == missing)
`mdadm -A --update=summaries' doesn't help (I didn't expect it to, tho)
`mdadm -A --update=resync' doesn't help
`--fail --remove --add' doesn't help
`--fail --remove --grow -n 1 --grow -n 2 --add' doesn't help
`--fail --remove --grow -n 1 --add --grow -n 2' doesn't help
The array resyncs the few bitmap-chunks and the component remains in
slot 2, the array has no device missing, the bitmap stays at 1 page
(1620 bits set). Writing to the array increases the bits set for a short
time and then they go back to 1 page (1620 bits) and remain there.
The components are in sync and remain in sync, I cmp'ed them.
regards
Mario
--
Damit das Mögliche entsteht, muß immer wieder das Unmögliche versucht werden.
-- Hermann Hesse
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: Dumb questions about mdadm #1 - replacing broken disks - "slot" reuse?
2009-09-18 19:12 ` Mario 'BitKoenig' Holbe
@ 2009-09-20 16:55 ` Mario 'BitKoenig' Holbe
2010-06-29 13:02 ` How to reclaim device slots on v1 superblock? Mario 'BitKoenig' Holbe
0 siblings, 1 reply; 4+ messages in thread
From: Mario 'BitKoenig' Holbe @ 2009-09-20 16:55 UTC (permalink / raw)
To: linux-raid
Hello again,
the issue is btw. easily reproducible:
# dd if=/dev/zero of=/tmp/foo1 bs=1k count=100k
102400+0 records in
102400+0 records out
104857600 bytes (105 MB) copied, 0,18648 s, 562 MB/s
# losetup /dev/loop0 /tmp/foo1
# mdadm --create -e 1.1 -l raid1 -n 2 -a md /dev/md8 /dev/loop0 missing
mdadm: array /dev/md8 started.
# dd if=/dev/zero of=/tmp/foo2 bs=1k count=100k
102400+0 records in
102400+0 records out
104857600 bytes (105 MB) copied, 0,196626 s, 533 MB/s
# losetup /dev/loop1 /tmp/foo2
# mdadm --add /dev/md8 /dev/loop1
mdadm: added /dev/loop1
# grep -A1 ^md8 /proc/mdstat
md8 : active raid1 loop1[2] loop0[0]
102392 blocks super 1.1 [2/2] [UU]
# mdadm -E /dev/loop0 | tail -2
Device Role : Active device 0
Array State : AA ('A' == active, '.' == missing)
You have new mail in /var/mail/root
# mdadm -E /dev/loop1 | tail -2
Device Role : spare
Array State : AA ('A' == active, '.' == missing)
#
regards
Mario
--
<jv> Oh well, config
<jv> one actually wonders what force in the universe is holding it
<jv> and makes it working
<Beeth> chances and accidents :)
^ permalink raw reply [flat|nested] 4+ messages in thread* How to reclaim device slots on v1 superblock?
2009-09-20 16:55 ` Mario 'BitKoenig' Holbe
@ 2010-06-29 13:02 ` Mario 'BitKoenig' Holbe
0 siblings, 0 replies; 4+ messages in thread
From: Mario 'BitKoenig' Holbe @ 2010-06-29 13:02 UTC (permalink / raw)
To: linux-raid
Hello,
md with v1 superblocks seem to somehow associate device slots with
specific devices and doesn't re-use them with others (this was already
reported by John Hughes a while ago, btw.).
So, my question is: how can I force md to finally give up a specific
slot or re-use it with another device?
For example, creating a degraded array reserves slot 1 for the "missing"
device and never re-uses it, but uses slot 2 instead:
# mdadm -C -n 2 -l raid1 -a md /dev/md9 /dev/loop0 missing
# mdadm -a /dev/md9 /dev/loop1
md9 : active raid1 loop1[2] loop0[0]
Creating the array fully developed uses slot 0 and 1 as expected:
# mdadm -C -n 2 -l raid1 -a md /dev/md9 /dev/loop0 /dev/loop1
md9 : active raid1 loop1[1] loop0[0]
The only way I found to enforce using slot 0 and 1 while creating a
degraded array is to grow the number of active devices later:
# mdadm -C -n 1 --force -l raid1 -a md /dev/md9 /dev/loop0
# mdadm -a /dev/md9 /dev/loop1
# mdadm -G -n 2 /dev/md9
md9 : active raid1 loop1[1] loop0[0]
Unfortunately, the reverse assumption: reduce the number of active
devices to re-claim unused slots doesn't appear to work:
# mdadm -C -n 2 -l raid1 -a md /dev/md9 /dev/loop0 missing
# mdadm -a /dev/md9 /dev/loop1
md9 : active raid1 loop1[2] loop0[0]
# mdadm --fail /dev/md9 /dev/loop1
# mdadm --remove /dev/md9 /dev/loop1
# mdadm -G -n 1 --force /dev/md9
# mdadm -a /dev/md9 /dev/loop1
# mdadm -G -n 2 /dev/md9
md9 : active raid1 loop1[2] loop0[0]
I'm using Debians mdadm 3.1.2-2 which defaults to v1.2 superblocks.
regards
Mario
--
Tower: "Say fuelstate." Pilot: "Fuelstate."
Tower: "Say again." Pilot: "Again."
Tower: "Arghl, give me your fuel!" Pilot: "Sorry, need it by myself..."
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-06-29 13:02 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-18 12:13 Dumb questions about mdadm #1 - replacing broken disks - "slot" reuse? John Hughes
2009-09-18 19:12 ` Mario 'BitKoenig' Holbe
2009-09-20 16:55 ` Mario 'BitKoenig' Holbe
2010-06-29 13:02 ` How to reclaim device slots on v1 superblock? Mario 'BitKoenig' Holbe
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.