[linux-lvm] lvcreate distributed extent option

James Hawtin oolon at ankh.org
Sat Nov 30 14:09:03 UTC 2002


On Sat, 30 Nov 2002, ZECHA,HOLGER (HP-Germany,ex1) wrote:

> Hello,
>
> there still seems to be a missunderstanding
> I want to have the following:
>

Hmm your worring to much about how your physical data is being layout! The
reason you see that difference between HP lvm and linux lvm is because
they implement striping differently.

On, HP, they take the modulo of the number of stripes and allocate the
disk in that fasion ie.

a      0   0%2 =0
b      1   1%2 =1
a      2   2%2 =0
b      1   3%2 =1

On linux its

LE Stripe Size (LSS) = Number of LE / Number of strips

a = 0 - (LSS-1)
b = LSS - (LSS*2-1)

But thats just how the Logical extends are mapped LE Stripe Size != real
stripe size on HP or Linux its just how the strip pools are layed out.
The LVM system still has to re cut things LEs up to make real stripes.

Advantage of the way HP does it...
No problems extending things....

Disadvantage
Harder on the maths?
Difficult to specify which LEs to pick when moving them from one PV to
another.


Advantage of Linux way
Easy to specify and check when moving LEs from one PV to another.
Maths easier?

Disadvantage.
LEs have to be renumbered if the LV is extended or reduced, hence not
possible on linux.

Still don't believe me?

Try this....

--- Logical volume ---
LV Name                /dev/sunset_vg/oolon4_lv
VG Name                sunset_vg
LV Write Access        read/write
LV Status              available
LV #                   5
# open                 0
LV Size                18.38 GB
Current LE             588
Allocated LE           588
Stripes                2
Stripe size (KByte)    16
Allocation             next free
Read ahead sectors     120
Block device           58:4

   --- Distribution of logical volume on 2 physical volumes  ---
   PV Name                  PE on PV     reads      writes
   /dev/ide/host2/bus0/target0/lun0/part5 294          0          0
   /dev/ide/host2/bus0/target1/lun0/part2 294          0          0

   --- logical volume i/o statistic ---
   0 reads  0 writes

   --- Logical extents ---
   LE    PV                        PE     reads      writes
   00000 /dev/ide/host2/bus0/target0/lun0/part5 00060  0          0
   00001 /dev/ide/host2/bus0/target0/lun0/part5 00061  0          0
   00002 /dev/ide/host2/bus0/target0/lun0/part5 00062  0          0
...
   00294 /dev/ide/host2/bus0/target1/lun0/part2 00060  0          0
   00295 /dev/ide/host2/bus0/target1/lun0/part2 00061  0          0
   00296 /dev/ide/host2/bus0/target1/lun0/part2 00062  0          0
...

bash# dd if=/dev/sunset_vg/oolon4_lv of=/dev/null bs=16k count=2
2+0 records in
2+0 records out
bash# dd if=/dev/sunset_vg/oolon4_lv of=/dev/null bs=16k count=2
2+0 records in
2+0 records out
bash# dd if=/dev/sunset_vg/oolon4_lv of=/dev/null bs=16k count=2
2+0 records in
2+0 records out

lvdisplay -vv /dev/sunset_vg/oolon4_lv

....

   --- Distribution of logical volume on 2 physical volumes  ---
   PV Name                  PE on PV     reads      writes
   /dev/ide/host2/bus0/target0/lun0/part5 294          240        0
   /dev/ide/host2/bus0/target1/lun0/part2 294          216        0

   --- logical volume i/o statistic ---
   456 reads  0 writes

   --- Logical extents ---
   LE    PV                        PE     reads      writes
   00000 /dev/ide/host2/bus0/target0/lun0/part5 00060  240        0
   00001 /dev/ide/host2/bus0/target0/lun0/part5 00061  0          0
   00002 /dev/ide/host2/bus0/target0/lun0/part5 00062  0          0
....
   00294 /dev/ide/host2/bus0/target1/lun0/part2 00060  216        0
   00295 /dev/ide/host2/bus0/target1/lun0/part2 00061  0          0
   00296 /dev/ide/host2/bus0/target1/lun0/part2 00062  0          0
....

As you see my stripe size was 16k and I grabbed the first 32k of the
device 3 times.

You will notice the read figures are relatively even... not quite sure why
they are not the same I assume LVM might have some kind of header on the
LV. Which would account for the difference...

(I did this after rebooting the system to get clean figures).

You will however notice the stripping did work, it did use both disks not
as you suggest just 1 (if that had been the case the second disk would
have shown 0 reads), test it yourself, as I explained above the
"difference" you are seeing is just down to how the implementation of the
strip parts has been made. Though personally I agree with you the HP
system (due to the fact it can be resized) is supperior!

James





More information about the linux-lvm mailing list