ReLoad

Thierry Jaouen ~ WikiBlog
"Rien à foutre d'être lu, tant que je peux me relire."

Outils pour utilisateurs

Outils du site


blog:2016:08:15:lvm_et_vgsplit

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:

  1. Créer une partition LVM, par exemple avec: cfdisk /dev/xvdb
  2. Maintenant, /dev/xvdb1 est une partition LVM.
  3. 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.

blog/2016/08/15/lvm_et_vgsplit.txt · Dernière modification : 2016/08/14 22:38 de thierry