Table des matières
LVM et vgsplit
Un rapide topo pour expliquer comment répartir des volumes logiques sur plusieurs disques physiques, et puis séparer ces volumes en plusieurs groupes de volumes.
Bon, c'est pas très clair, alors on va partir d'un cas concret.
~~READMORE~~
Bien sur, il s'agit de “partitions” , et non pas de disques… |
vgextend
D'abord, comment ajouter une partition (appartenant à un disque) a un ensemble LVM existant.
Soit 2 disques:
/dev/xvda
avec 1 partition LVM et plusieurs volumes logiques dessus…/dev/xvdb
tout neuf , tout vide.
Initialiser le disque “/dev/xvdb
” avec une partition LVM:
- Créer une partition LVM, par exemple avec:
cfdisk /dev/xvdb
- Maintenant,
/dev/xvdb1
est une partition LVM. - Créer la couche LVM sur cette partition:
pvcreate /dev/xvdb1
Voila:
# pvs PV VG Fmt Attr PSize PFree /dev/xvda1 vg0 lvm2 a-- 10,00g 1020,00m /dev/xvdb1 lvm2 --- 10,00g 10,00g
Étendre, le volume groupe “vg0
” avec la partition “/dev/xvdb1
” :
# vgextend vg0 /dev/xvdb1
Le résultat:
# pvs PV VG Fmt Attr PSize PFree /dev/xvda1 vg0 lvm2 a-- 10,00g 1020,00m /dev/xvdb1 vg0 lvm2 a-- 10,00g 10,00g
# vgs VG #PV #LV #SN Attr VSize VFree vg0 2 3 0 wz--n- 19,99g 10,99g
Il y a bien 2 partitions, et j'ai maintenant 10,99 G de disponible.
A ce stade, si on veut revenir en arrière, c'est encore possible en tapant ça:
# vgreduce vg0 /dev/xvdb1 Removed "/dev/xvdb1" from volume group "vg0"
Ca marche parce que la partition “/dev/xvdb1
” est vide.
Mais continuons avec 2 partitions pour le volume groupe “vg0
”.
un peu plus tard...
On a agrandi des volumes logiques a coup de “lvresize
” ou on en a créé de nouveaux a coup de “lvcreate
” …
Mais surtout, maintenant, on veut séparer les partitions et créer un volume groupe pour chaque partition.
Pour voir où ce trouve les données des volumes logiques:
# pvdisplay -m <partition>
Vérifier que ça passe
Il faut d'abord vérifier qu'on peut vraiment répartir les volumes logiques en totalité sur les partitions.
Déplacer les volumes logiques
Maintenant, on va déplacer les volumes logiques sur l'une ou l'autre partition.
Notez que c'est possible à chaud, sans interrompre l'activité de vos services.
Pour déplacer les données d'un volume logique, il suffit d'utiliser la commande “pvmove
”:
pvmove -n <nom_volume_logique> <partition_source> <destination>
Exemple:
# pvmove -n mon_volume /dev/xvda1 /dev/xvdb1
Répartir les volumes dans chaque partition.
Séparer les partitions
Après avoir déplacer les volumes logiques dans leur totalité sur une partition, on peut diviser le volume groupe.
Mais là, il va falloir arrêter les services, démonter les partitions.
Par exemples:
# /etc/init.d/samba stop # /etc/init.d/mysql stop etc...
Et puis démonter (Exemple):
# umount /mnt/partage1 # umount /mnt/partage2 etc...
Mais c'est pas fini, il faut aussi désactiver (temporairement) les volumes logiques:
# lvchange /dev/vg0/mon_volume1 --activate n # lvchange /dev/vg0/mon_volume2 --activate n etc...
Et maintenant, le “split”. La syntaxe de la commande:
vgsplit <volume_groupe_actuel> <nouveau_volume_groupe> <partition_source>
Exemple:
# vgsplit vg0 vg1 /dev/xvdb1
Un nouveau volume groupe nommé “vg1
” est créé, et il intègre tout les volumes logiques qui sont sur “/dev/xvdb1
”.
“vg0
” a les autres volumes logiques.
Maintenant, on peut ré-activer les volumes logiques:
# lvchange /dev/vg0/mon_volume1 --activate y etc...
Adapter le fichier “/etc/fstab
” et autres pour prendre en compte “vg1
” à la place de “vg0
”.
Remonter les partitions, et puis relancer les services.
Voila.