* Constructing RAID 1+0 w/ LVM2/DM
@ 2008-01-24 14:16 Alan D. Brunelle
2008-01-24 14:35 ` Alasdair G Kergon
0 siblings, 1 reply; 5+ messages in thread
From: Alan D. Brunelle @ 2008-01-24 14:16 UTC (permalink / raw)
To: dm-devel
I'm attempting to create a RAID 1+0 environment using only LVM/DM and
running into a strange problem: I can't use the underlying mirrored
devices. I was able to create a RAID 0+1 environment easy enough, so I'm
perplexed by this.
I have 24 devices (12 each behind an FC RAID array), I first pvcreate those:
/sbin/pvcreate -f -y /dev/sdu
/sbin/pvcreate -f -y /dev/sdw
/sbin/pvcreate -f -y /dev/sdx
/sbin/pvcreate -f -y /dev/sdz
/sbin/pvcreate -f -y /dev/sdab
/sbin/pvcreate -f -y /dev/sdad
/sbin/pvcreate -f -y /dev/sdaf
/sbin/pvcreate -f -y /dev/sdah
/sbin/pvcreate -f -y /dev/sdaj
/sbin/pvcreate -f -y /dev/sdal
/sbin/pvcreate -f -y /dev/sdao
/sbin/pvcreate -f -y /dev/sdap
/sbin/pvcreate -f -y /dev/sds
/sbin/pvcreate -f -y /dev/sdt
/sbin/pvcreate -f -y /dev/sdv
/sbin/pvcreate -f -y /dev/sdy
/sbin/pvcreate -f -y /dev/sdaa
/sbin/pvcreate -f -y /dev/sdac
/sbin/pvcreate -f -y /dev/sdae
/sbin/pvcreate -f -y /dev/sdag
/sbin/pvcreate -f -y /dev/sdai
/sbin/pvcreate -f -y /dev/sdak
/sbin/pvcreate -f -y /dev/sdam
/sbin/pvcreate -f -y /dev/sdan
I then mirror pairs of those:
/sbin/vgcreate vg00 /dev/sdu /dev/sds
/sbin/lvcreate -m 1 --corelog --nosync -n lv00 -L 65G vg00
/sbin/vgcreate vg01 /dev/sdw /dev/sdt
/sbin/lvcreate -m 1 --corelog --nosync -n lv01 -L 65G vg01
/sbin/vgcreate vg02 /dev/sdx /dev/sdv
/sbin/lvcreate -m 1 --corelog --nosync -n lv02 -L 65G vg02
/sbin/vgcreate vg03 /dev/sdz /dev/sdy
/sbin/lvcreate -m 1 --corelog --nosync -n lv03 -L 65G vg03
/sbin/vgcreate vg04 /dev/sdab /dev/sdaa
/sbin/lvcreate -m 1 --corelog --nosync -n lv04 -L 65G vg04
/sbin/vgcreate vg05 /dev/sdad /dev/sdac
/sbin/lvcreate -m 1 --corelog --nosync -n lv05 -L 65G vg05
/sbin/vgcreate vg06 /dev/sdaf /dev/sdae
/sbin/lvcreate -m 1 --corelog --nosync -n lv06 -L 65G vg06
/sbin/vgcreate vg07 /dev/sdah /dev/sdag
/sbin/lvcreate -m 1 --corelog --nosync -n lv07 -L 65G vg07
/sbin/vgcreate vg08 /dev/sdaj /dev/sdai
/sbin/lvcreate -m 1 --corelog --nosync -n lv08 -L 65G vg08
/sbin/vgcreate vg09 /dev/sdal /dev/sdak
/sbin/lvcreate -m 1 --corelog --nosync -n lv09 -L 65G vg09
/sbin/vgcreate vg10 /dev/sdao /dev/sdam
/sbin/lvcreate -m 1 --corelog --nosync -n lv10 -L 65G vg10
/sbin/vgcreate vg11 /dev/sdap /dev/sdan
/sbin/lvcreate -m 1 --corelog --nosync -n lv11 -L 65G vg11
Now, I'd like to stripe over those mirrors, and would expect that the
first step would be to pvcreate the new lv's (lv00-lv11), before doing so:
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy%
lv00 vg00 Mwi-a- 65.00G 100.00
lv01 vg01 Mwi-a- 65.00G 100.00
lv02 vg02 Mwi-a- 65.00G 100.00
lv03 vg03 Mwi-a- 65.00G 100.00
lv04 vg04 Mwi-a- 65.00G 100.00
lv05 vg05 Mwi-a- 65.00G 100.00
lv06 vg06 Mwi-a- 65.00G 100.00
lv07 vg07 Mwi-a- 65.00G 100.00
lv08 vg08 Mwi-a- 65.00G 100.00
lv09 vg09 Mwi-a- 65.00G 100.00
# vgs
VG #PV #LV #SN Attr VSize VFree
vg00 2 3 0 wz--n- 135.66G 5.66G
vg01 2 3 0 wz--n- 135.66G 5.66G
vg02 2 3 0 wz--n- 135.66G 5.66G
vg03 2 3 0 wz--n- 135.66G 5.66G
vg04 2 3 0 wz--n- 135.66G 5.66G
vg05 2 3 0 wz--n- 135.66G 5.66G
vg06 2 3 0 wz--n- 135.66G 5.66G
vg07 2 3 0 wz--n- 135.66G 5.66G
vg08 2 3 0 wz--n- 135.66G 5.66G
vg09 2 3 0 wz--n- 135.66G 5.66G
But then:
# pvcreate -ff -y -v /dev/vg00/lv00
Wiping cache of LVM-capable devices
Wiping internal VG cache
Device /dev/vg00/lv00 not found (or ignored by filtering).
I did run w/ -vvv, and extracted this pertinent looking stuff:
Wiping internal VG cache
Locking /var/lock/lvm/P_orphans WB
dm status (253:2) OF [16384]
/dev/dm-2: Skipping: Suspended dm device
Device /dev/vg00/lv00 not found (or ignored by filtering).
Unlocking /var/lock/lvm/P_orphans
I don't understand why the device is suspended - due to the --nosync the
copy% is at 100, and the device read/writes just fine. I'm using:
# pvcreate --version
LVM version: 2.02.29 (2007-12-05)
Library version: 1.02.24 (2007-12-20)
Driver version: 4.12.0
and 2.6.24-rc6 kernel.
As noted previously, I could invert the operation, and things worked
fine (RAID 0+1 - mirror 2 stripes constructed from 12 devices each).
Any help would be much appreciated, thanks,
Alan
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Constructing RAID 1+0 w/ LVM2/DM
2008-01-24 14:16 Constructing RAID 1+0 w/ LVM2/DM Alan D. Brunelle
@ 2008-01-24 14:35 ` Alasdair G Kergon
2008-01-24 14:41 ` Alan D. Brunelle
0 siblings, 1 reply; 5+ messages in thread
From: Alasdair G Kergon @ 2008-01-24 14:35 UTC (permalink / raw)
To: device-mapper development
On Thu, Jan 24, 2008 at 09:16:02AM -0500, Alan D. Brunelle wrote:
> /dev/dm-2: Skipping: Suspended dm device
That code was never completed. It applies a stronger test than
necessary and assumes no mirrors are safe to use, even though some
would be.
Alasdair
--
agk@redhat.com
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Constructing RAID 1+0 w/ LVM2/DM
2008-01-24 14:35 ` Alasdair G Kergon
@ 2008-01-24 14:41 ` Alan D. Brunelle
2008-01-24 14:54 ` Alasdair G Kergon
0 siblings, 1 reply; 5+ messages in thread
From: Alan D. Brunelle @ 2008-01-24 14:41 UTC (permalink / raw)
To: device-mapper development
Alasdair G Kergon wrote:
> On Thu, Jan 24, 2008 at 09:16:02AM -0500, Alan D. Brunelle wrote:
>> /dev/dm-2: Skipping: Suspended dm device
>
> That code was never completed. It applies a stronger test than
> necessary and assumes no mirrors are safe to use, even though some
> would be.
>
> Alasdair
So, does that mean that one can not construct a RAID 1+0 device using
LVM2/DM in such a manner? Is there some way to override this behavior?
Is it the 'ignore_suspended_devices() or !device_is_usable() call in the
following causing the problem:
/* Skip suspended devices */
if (MAJOR(dev->dev) == _device_mapper_major &&
ignore_suspended_devices() && !device_is_usable(dev->dev)) {
log_debug("%s: Skipping: Suspended dm device", name);
return 0;
}
Thanks for the answer though...
Alan
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Constructing RAID 1+0 w/ LVM2/DM
2008-01-24 14:41 ` Alan D. Brunelle
@ 2008-01-24 14:54 ` Alasdair G Kergon
2008-01-24 15:55 ` Alan D. Brunelle
0 siblings, 1 reply; 5+ messages in thread
From: Alasdair G Kergon @ 2008-01-24 14:54 UTC (permalink / raw)
To: device-mapper development
On Thu, Jan 24, 2008 at 09:41:18AM -0500, Alan D. Brunelle wrote:
> ignore_suspended_devices() && !device_is_usable(dev->dev)) {
If you know what you're doing and using upstream kernels without dmeventd, drop
the mirror test from device_is_usable().
(Are all those corelogs just while testing?)
Alasdair
--
agk@redhat.com
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Constructing RAID 1+0 w/ LVM2/DM
2008-01-24 14:54 ` Alasdair G Kergon
@ 2008-01-24 15:55 ` Alan D. Brunelle
0 siblings, 0 replies; 5+ messages in thread
From: Alan D. Brunelle @ 2008-01-24 15:55 UTC (permalink / raw)
To: device-mapper development
Alasdair G Kergon wrote:
> On Thu, Jan 24, 2008 at 09:41:18AM -0500, Alan D. Brunelle wrote:
>
>> ignore_suspended_devices() && !device_is_usable(dev->dev)) {
>>
>
> If you know what you're doing and using upstream kernels without dmeventd, drop
> the mirror test from device_is_usable().
>
Thanks Alasdair!
> (Are all those corelogs just while testing?)
>
Most assuredly so...
Alan
> Alasdair
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-01-24 15:55 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-24 14:16 Constructing RAID 1+0 w/ LVM2/DM Alan D. Brunelle
2008-01-24 14:35 ` Alasdair G Kergon
2008-01-24 14:41 ` Alan D. Brunelle
2008-01-24 14:54 ` Alasdair G Kergon
2008-01-24 15:55 ` Alan D. Brunelle
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.