[gull] LVM - OpenVZ: Howto PV inside VE

Félix Hauri felix at f-hauri.ch
Sat Jan 22 11:00:22 CET 2011


Bonjour,

Comment gérer des volumes LVM (pvscan etc) *dans* un container OpenVZ?

Voici la situation:

 - Machine de virtualisation sous GNU/Debian Lenny,
   avec OpenVZ et KVM
   - Système de fichier en raid-10 -> LVM:
	 1 Physical-Volume et 1 Volume-Group.
   - Vieux serveur sous RH-9 (Shrike) -> KVM
   - Autres machines Win?? -> KVM
   - Serveur de backup avec rsync sous OpenVZ

Le problème est que l'installation RH-9 utilise 2 ``disques''
qui sont dans les faits deux LV de mon VG unique, et que
RH-9 utilise LVM (1) sur 2 PVs, dont 1 sur une partition
du premier disque et l'autre sur l'entier du second disque.
# pvscan 
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- ACTIVE   PV "/dev/hda2"  of VG "vg01" [2.48 GB / 0 free]
pvscan -- ACTIVE   PV "/dev/hda10" of VG "vg01" [42.08 GB / 0 free]
pvscan -- ACTIVE   PV "/dev/hdb"   of VG "vg02" [136.45 GB / 0 free]
pvscan -- total: 3 [181.09 GB] / in use: 3 [181.09 GB] / in no VG: 0 [0]

# lvscan 
lvscan -- ACTIVE            "/dev/vg01/lv_data" [44.56 GB]
lvscan -- ACTIVE            "/dev/vg02/lv_data" [136.45 GB]
lvscan -- 2 logical volumes with 181.02 GB total in 2 volume groups
lvscan -- 2 active logical volumes

De plus, on voit de toute la puissance de LVM est exploitée:
pas un byte ``free'' donc pas de snapshot possible!

Le resultat est que le second PV est visible depuis mon HN:
# pvs
  PV         VG       Fmt  Attr PSize   PFree 
  /dev/dm-6  vg02     lvm1 a-   136.45G     0 
  /dev/md1   VGuniq   lvm2 a-     2.73T 92.68G

# lvs -v
    Finding all logical volumes
  LV       VG       #Seg Attr   LSize   Maj Min KMaj KMin Origin Snap%  Move Copy%  
Log Convert LV UUID                               
  ROOT     VGuniq    1 -wi-ao   5,00G  -1  -1 253  0
  BACKUPS  VGuniq    2 -wi-ao 980.00G  -1  -1 253  5
  VZ       VGuniq    1 -wi-ao 600.00G  -1  -1 253  3
  RH9-sdA  VGuniq    1 -wi-ao  80.00G  -1  -1 253  7
  RH9-sdB  VGuniq    1 -wi-ao 160.00G  -1  -1 253  6
...
  lv_data  vg02      1 -wn-a- 136.45G  -1  -1 253  11

Cela devient épique si je tente de créer un snapshot de RH9-sdB:
# lvcreate -s -L 10G -n Bkup-RH9-sdB VGuniq/RH9-sdB
  Logical volume "Bkup-RH9-sdB" created
debian:~# lvs -v
  Found duplicate PV ppe47...: using /dev/dm-13 not /dev/dm-6
  Found duplicate PV ppe47...: using /dev/dm-14 not /dev/dm-13
...
  Bkup-RH9-sdB VGuniq    1 swi-a-  10.00G  -1  -1 253  13   RH9-sdB   0.00
  RH9-sdB      VGuniq    1 owi-ao 160.00G  -1  -1 253  6
...

# ls -l /dev/mapper/
brw-rw---- 1 root disk 253, 13 jan 22 10:33 VGuniq-Bkup--RH9--sdB
brw-rw---- 1 root disk 253, 15 jan 22 10:33 VGuniq-Bkup--RH9--sdB-cow
brw-rw---- 1 root disk 253,  6 jan 22 10:42 VGuniq-RH9--sdB
brw-rw---- 1 root disk 253, 14 jan 22 10:33 VGuniq-RH9--sdB-real

Je souhaite donc créer un conteneur VZ, dans lequel je donne accès
à b:253:13:r (idéalement en read-only) pour pouvoir monter
la partition et la backuper au niveau (nice) d'un conteneur.

# vzctl set 101 --devices c:10:60:rw --devices b:253:13:r
Setting devices
WARNING: Settings were not saved and will be resetted to original values
 on next start (use --save flag)

(Nota, étant donné que j'agit sur des volumes provisoires, pouvant
potentiellement changer de nro de mineur, je ne --save pas.)

puis
# vzctl enter 101
# pvscan
  No matching physical volumes found
# mkdir /dev/mapper
# mknod /dev/mapper/control c 10 60
# mknod /dev/sdb b 253 13
# vgscan 
  Reading all physical volumes.  This may take a while...
# pvscan 
  No matching physical volumes found
# file -s /dev/sdb 
/dev/sdb: LVM1 (Linux Logical Volume Manager), version 1 , System ID: 

Si de là, quelqu'un à une idée, elle sera bien venue!


--
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch


More information about the gull mailing list