-   Linux - Server (
-   -   LVM - unable to mirror LV (

membit 06-18-2009 06:01 AM

LVM - unable to mirror LV
Hello guys,

I'm having problems to mirror a logical volume to two different PV.


membit:~ # pvscan
  PV /dev/sdb2  VG rootvg  lvm2 [465.67 GB / 12.70 GB free]
  PV /dev/sda1  VG datavg  lvm2 [149.05 GB / 149.05 GB free]
  PV /dev/sdc1  VG datavg  lvm2 [372.61 GB / 342.61 GB free]
  Total: 3 [987.32 GB] / in use: 3 [987.32 GB] / in no VG: 0 [0  ]

membit:~ # pvdisplay /dev/sda1 /dev/sdc1
  --- Physical volume ---
  PV Name              /dev/sda1
  VG Name              datavg
  PV Size              149.05 GB / not usable 1.31 MB
  Allocatable          yes
  PE Size (KByte)      4096
  Total PE              38156
  Free PE              38156
  Allocated PE          0
  PV UUID              uDXi31-5AX9-LRDl-W9sN-nEGK-XYfX-QCYXLl

  --- Physical volume ---
  PV Name              /dev/sdc1
  VG Name              datavg
  PV Size              372.61 GB / not usable 3.56 MB
  Allocatable          yes
  PE Size (KByte)      4096
  Total PE              95387
  Free PE              87707
  Allocated PE          7680
  PV UUID              jU7spD-Kad7-7oUC-16nd-ipiT-dj5c-gBqOBx

membit:~ # lvdisplay datavg/mirroredlv
  --- Logical volume ---
  LV Name                /dev/datavg/mirroredlv
  VG Name                datavg
  LV UUID                Ttd1cF-6hQO-s619-fhCQ-ZUo2-qTeb-4EspEh
  LV Write Access        read/write
  LV Status              available
  # open                0
  LV Size                30.00 GB
  Current LE            7680
  Segments              1
  Allocation            inherit
  Read ahead sectors    auto
  - currently set to    256
  Block device          253:6

OK, now if I try to add a mirror to the LV:


membit:~ # lvconvert -m 1 datavg/mirroredlv
  Insufficient suitable allocatable extents for logical volume : 7680 more required
  Unable to allocate extents for mirror(s).

HW/OS specs:

Distro: OpenSUSE 11.1 x86
/dev/sda = P-ATA 160GB
/dev/sdc = S-ATA 2 400GB

What am I doing wrong?? :)

brian.davis 06-20-2009 02:42 AM

I happened to be building an LVM mirror when I saw this post so I was able to test your setup and confirm the problem. The error is not quite accurate since it sounds like you don't have enough space to build the mirror (which you obviously do) when the real problem is that LVM can't build the mirror log.

You have two methods available for storing the log. The first (and easiest) is to store it in memory by adding '--mirrorlog core' to your lvconvert command. The second is to add a third PV to your datavg VG. LVM defaults to the PV method and you only have two PVs in that VG which is why your lvconvert failed.

The downside to using the memory based log is that your mirror will have to resync on every boot because LVM will not know the current state of the mirror.

The log size is very small since it only requires 1 bit per mirror region. The mirror region size defaults to 512K but can be changed with '--regionsize <size in MB>'.

If you use the PV log, be aware that prior to LVM2 2.02.44 the log size will be exactly 1 PE so you will want to increase the extent size on your PV when you create it and/or increase the region size on your mirror. Using the defaults for both will limit your mirror size to 16G (4K PE * 8 bits * 512K regionsize).

All times are GMT -5. The time now is 06:37 PM.