J'ai fait un rêve: embarqué la gestion d'une partition LVM dans un DomU .
Dans mon idée, ça me permet d'isoler un Dom0 gérant plusieurs partitions.
Mais il y a quelques contraintes a respecter:
~~READMORE~~
Pourquoi tant de stress ? Parce que plusieurs machines qui gèrent simultanément la même partition c'est extrêmement dangereux, et qu'aucun “garde fou” n'existe au niveau du système.
Donc, il ne peut y avoir qu'une machine qui utilise la partition LVM: soit le Dom0, soit un des DomU. |
Ensuite, l'une des raisons d'exister des DomU, c'est qu'en cas de sinistre, de pouvoir arrêter cette VM, et d’accéder ces données à partir du Dom0.
Soit le disk /dev/sda
qui est comme cela:
# parted /dev/sda unit s print Model: DELL PERC H800 (scsi) Disk /dev/sda: 19513999360s Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 34s 14648437500s 14648437467s primary lvm 2 14648475648s 19513999326s 4865523679s primary lvm
/dev/sda1 | Partition LVM du Dom0 |
/dev/sda2 | Partition LVM dédié à un DomU |
Mais pour être complet, il y a aussi /dev/sdb2
qui est une partition dédié au Dom0
.
Pour ne pas que la couche LVM du Dom0 voit la partition dans /dev/sda2
j'ai modifié le paramètre filter
dans le fichier /etc/lvm/lvm.conf
, ainsi:
# TJ ----------- #filter = [ "a/.*/" ] filter = [ "a|^/dev/sda1$|" , "a|^/dev/sdb2$|", "r/.*/" ] # --------------
Ça dit à LVM (du Dom0) : “Cherche des partitions LVM que dans /dev/sda1
et /dev/sdb2
, et rejette le reste.
Ainsi la commande pvscan
ignore tout autre partition, y compris /dev/sda2
bien sur.
De même, lvs
et lvscan
resteront ignorante.
Lorsque je jouais avec le filter
, je me suis aperçu que LVM voyait la partition /dev/sda2
sous plusieurs forme, notamment dans : /dev/block/
et /dev/disk/
.
Comme je sais qu'un disk peut changer d'emplacement en cours de boot (par exemple, /dev/sde
peut devenir /dev/sda
) , je ne sais pas si un “filter” trop strict peut nuire au démarrage du système.
Maintenant, il convient d'ajouter cette partition LVM au DomU.
Rien de plus simple, j'ajoute un disk virtuel xvdb
pointant sur cette partition.
Par exemple, dans la configuration de ce DomU , j'ai ajouté:
disk = [ 'phy:/dev/vg0/domu-with-lvm-disk,xvda2,w', 'phy:/dev/vg0/domu-with-lvm-swap,xvda1,w', 'phy:/dev/sda2,xvdb,w', ]
Aprés boot de ce DomU, voici ce que j'ai fait:
J'insiste: je suis dans l'environnement du DomU |
D'abord, forcer le filter
pour ne voir que xvdb
. Donc, dans /etc/lvm/lvm.conf
j'ai changé ça pour ça :
filter = [ "a|^/dev/xvdb$|" , "r/.*/" ]
Mis à jour LVM.
# pvscan
Ensuite, créé normalement:
# pvcreate /dev/xvdb Physical volume "/dev/xvdb" successfully created
# pvs PV VG Fmt Attr PSize PFree /dev/xvdb lvm2 a- 1023,98g 1023,98g
créé un nom de Volume Group qui n'existe pas sur le Dom0 ! |
# vgcreate vgdata /dev/xvdb Volume group "vgdata" successfully created
# pvs PV VG Fmt Attr PSize PFree /dev/xvdb vgdata lvm2 a- 1023,98g 1023,98g
Ensuite créé les “Logical Volume” a volonté.
# lvcreate .... etc...
Voila.
Maintenant, on arrête le DomU et donc plus aucune machine n'utilise la partition /dev/sda2
.
Voila comment le Dom0 peut voir la partition LVM et monter les “VL” présents.
D'abord, ajouter /dev/sda2
au paramètre filter
dans /etc/lvm/lvm.conf
. Par exemple:
filter = [ "a|^/dev/sda1$|" , "a|^/dev/sdb2$|", "a|^/dev/sda2$|", "r/.*/" ]
Relancer la commande pvscan
: la partition LVM en /dev/sda2
doit apparaître dans la liste retournée.
Par contre, la commande lvscan
prétend que les partitions sont inactive
!
Exemple:
# lvscan ACTIVE '/dev/vg0/system' [18,62 GiB] inherit ACTIVE '/dev/vg0/swap' [1,00 GiB] inherit ACTIVE '/dev/vg0/x-storage-1-swap' [1,00 GiB] inherit ACTIVE '/dev/vg0/x-storage-1-disk' [10,00 GiB] inherit ACTIVE '/dev/vg0/domu-with-lvm-swap' [1,00 GiB] inherit ACTIVE '/dev/vg0/domu-with-lvm-disk' [5,00 GiB] inherit inactive '/dev/vgdata/warez-data' [300,00 GiB] inherit ACTIVE '/dev/vg1/x-storage-1-data' [5,97 TiB] inherit
En fait, il convient, maintenant, d'activer le “Volume Group” :
# vgchange -a y vgdata 1 logical volume(s) in volume group "vgdata" now active
De l'intérêt d'avoir un nom de “Volume Group” unique.
Ensuite, procédé comme d'habitude pour monter les partitions LVM.
Voila.
Il suffit de faire l'opération inverse a ci-dessus.
Demounter toutes les partitions associés au “Volume Group” “vgdata”.
Éventuellement , désactiver le “Volume Group” par un:
# vgchange -a n vgdata
Puis retirer du paramètre filter
( dans /etc/lvm/lvm.conf
) le disk /dev/sda2
.
Relancer pvscan
pour vérifier qu'il a disparu.
Voila.