[linux-lvm] How to place LVM2 metadata to other disks which don't belong to any volume group?
prajnoha at redhat.com
Fri Dec 13 14:31:56 UTC 2013
On 12/13/2013 08:15 AM, George Brian wrote:
> I indeed want to store metadata in common disk such as /dev/sdb,
> eventually to store all vg's metadata to one singe disk which specially
> used to store metadata without data.
This is probably not directly supported, but you should be able to achieve
what you want by using two-level LVM layout:
- (step 1) you could create a PV/VG on /dev/sdb, let's call it VG_A
- (step 2) then create LV with the size just to store the metadata,
let's call it LV_A. This is the first level - the A level.
- (step 3) then create a PV on LV_A (with 1-2 metadatacopies), then make PVs
from others disk with 0 metadatacopies, then group it into a VG_B.
That's the second level - the B level.
- (repeat step 2 and 3 for as many other VGs as you need)
So you have a dedicated /dev/sdb disk to store metadata for as many VGs
as you want (and as the disk space allows) and just store data on any other disks.
Or to be more concrete with commands (just a quick example):
vgcreate -s 1M VG_A /dev/sdb
lvcreate -l 1M VG_A -n LV_A_0
pvcreate --metadatacopies 0 /dev/sda ... (or whatever other disks)
vgcreate VG_B_0 /dev/VG_A/LV_A_0 /dev/sda
lvcreate -L1G -n my_lv1_to_use VG_B_0
lvcreate -L1G -n my_lv2_to_use VG_B_0
lvcreate -l 1M VG_A -n LV_A_1
pvcreate --metadatacopies 0 /dev/sdc ... (or whatever other disks)
vgcreate VG_B_1 /dev/VG_A/LV_A_1 /dev/sdc
lvcreate -L1G -n another_lv1_to_use VG_B_1
With such setup, you need to activate the level A VG first with the LVs
storing PVs with metadata and after that level B VGs that use the metadata.
It's not a problem when LVM volumes are autoactivated based on events with
the help of lvmetad (global/use_lvmetad=1 lvm.conf option), otherwise you
need to call vgchange -ay twice.
(Also, if you like more manual tweaking, you can just create mappings yourself
with dmesetup to accomplish step 2. But with LVs it's easier to manage.
So there are several ways how to achieve that as a matter of fact...).
More information about the linux-lvm