Différences entre les versions de « LVM »

De BlaxWiki
Aller à la navigationAller à la recherche
 
(5 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 48 : Ligne 48 :
pvrezise    : pvrezise  -v -d /dev/sdd1. Cela est utile si on change la taille de /dev/sdd1 avec un cfdisk, car logiquement pvdisplay verra toujours l'ancienne taille (un pvscan ne  
pvrezise    : pvrezise  -v -d /dev/sdd1. Cela est utile si on change la taille de /dev/sdd1 avec un cfdisk, car logiquement pvdisplay verra toujours l'ancienne taille (un pvscan ne  
fonctionne pas)
fonctionne pas)
pvs -v --segments /dev/mapper/LunVM1 : permet de voir comment sont arrangés les LV dans le PV, si ils sont continus...
pvmove, pvchange
pvmove, pvchange


Ligne 139 : Ligne 140 :
</pre>
</pre>


==== Lvresize A FINIR DE TESTER CA NE MARCHE PAS ====
==== Lvresize voir https://wiki.blaxeen.com/index.php/Lv_resize ====
Attention, le volume logique LV est une boite, le système de fichier FS est le contenu de la boite. Augmenter la taille du contenu sans augmenter la taille de la boîte peut poser des
problèmes.
<pre>
# cfdisk /dev/vgtest/VolA (création d'une partition VolA1 primaire de 2 go; soit la totalité du VG)
# kpartx -a /dev/vgtest/VolA
# mkfs.ext3 /dev/mapper/vgtest-VolA1
# mount /dev/mapper/vgtest-VolA1 /mnt
# df -h
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/vgtest-VolA1  2.0G  36M  1.9G  2% /mnt
 
# umount /mnt
# kpartx -d /dev/vgtest/VolA
 
# lvresize -L 3g /dev/vgtest/VolA
  Extending logical volume VolA to 3.00 GiB
  Logical volume VolA successfully resized
 
Là si on refait un kpartx -a, un mount et un df -h, on verra que le /dev/mapper/vgtest-VolA1 est toujours à 2Go car il faut aussi resizer le File System C EST LA OU CA MERDE
</pre>


=== Ajout et suppression de PV "externe" ===
=== Ajout et suppression de PV "externe" ===
==== Ajout ====
<pre>
<pre>
On peut avoir parfois besoin de faire une copie de LV d'un serveur à un autre via un disque dur externe.  
On peut avoir parfois besoin de faire une copie de LV d'un serveur à un autre via un disque dur externe.  
Ligne 169 : Ligne 151 :
# lvcreate -cn -n portailusagapp11new -L 40G m2o (-cn pour le pas qu il le mette en mode cluster)
# lvcreate -cn -n portailusagapp11new -L 40G m2o (-cn pour le pas qu il le mette en mode cluster)
# dd if=/dev/vol_kvm1_san_noha/portailusagapp11.m2o_system of=/dev/m2o/portailusagapp11new bs=1M
# dd if=/dev/vol_kvm1_san_noha/portailusagapp11.m2o_system of=/dev/m2o/portailusagapp11new bs=1M
!! INFO !! On peut toutefois copier le LV dans un fichier "simple, ca fonctionne (dd if=/dev/vol_kvm1_san_noha/portailusagapp11.m2o_system of=/mnt/test)
</pre>
</pre>


Le problème c'est lorsqu on va brancher le disque sur l'autre serveur, il ne va pas voir tout seul les pv,vg et lv du disque externe. Il faut lancer les commandes suivantes :
Le problème c'est lorsqu on va brancher le disque sur l'autre serveur, il ne va pas voir tout seul les pv,vg et lv du disque externe. Il faut lancer les commandes suivantes :
<pre>
# pvscan
# pvscan
# vgscan
# vgscan
# lvscan vgchange -ay "m2o" (pour activer le vg, sinon il reste en inactif)
# lvscan vgchange -ay "m2o" (pour activer le vg, sinon il reste en inactif)
</pre>
==== Suppression ====
Il n'y a pas de commandes propres pour démonter le pv avant de débrancher le disque externe. Sur certaines version d'OS, un simple pvscan va suffire, mais sur d'autre il ne va pas voir qu on l'a retiré
et il va afficher ces messages :
<pre>
[root@kvmcdr01.m2o qemu]# pvs
  /dev/m2o/portailusagapp11new: read failed after 0 of 4096 at 42949607424: Input/output error
  /dev/m2o/portailusagapp11new: read failed after 0 of 4096 at 42949664768: Input/output error
  /dev/m2o/portailusagapp11new: read failed after 0 of 4096 at 0: Input/output error
  /dev/m2o/portailusagapp11new: read failed after 0 of 4096 at 4096: Input/output error
  PV                            VG                Fmt  Attr PSize  PFree
  /dev/drbd0                    vol_kvm1          lvm2 a--  557.73g  22.73g
  /dev/drbd1                    vol_kvm2          lvm2 a--  557.73g  19.73g
  /dev/mapper/kvmcdr01_vm_nohap1 vol_kvm1_san_noha lvm2 a--    1.00t 478.01g
</pre>
On débranche donc le disque externe (A faire avant toutes les autres commandes, sinon ca risque de peter), puis :
<pre>
# dmsetup table
# dmsetup remove m2o-portailusagapp11new
</pre>
=== Clone de PV ===


Lorsqu'on clone un PV, ou qu on restaure un LV, on va avoir des UUID en doublon, ce qui va rendre impossible le montage. Il faut donc procéder comme suit :
<pre>
Dans notre cas, le PV original est sap, on a restauré via Azure le pv, vg, lv, le nouveau pv est sur sdd
    vgimportclone -n sap /dev/sdd
    pvchange -u /dev/sdd
    vgchange -u sap1 (sap1 est le nom du nouveau PV, nom automatique, il reprend le nom du PV original et met 1 à la fin)
    vgrename sap1 saprestaure
    lvchange -a y saprestaure
    # si c'est du xfs (et peut etre aussi ext4) on a l uuid du FS qui est le meme, il faut le changer #
    xfs_repair -L /dev/saprestaure/lvsap
    xfs_admin -U generate /dev/saprestaure/lvsap
    mount /dev/saprestaure/lvsap /restore/
</pre>
[[Catégorie:Linux]]
[[Catégorie:Linux]]

Version actuelle datée du 14 mai 2020 à 10:38

Le système de LVM insère des sous-couches entre la partition de disque et votre système de fichier (là où sont vos données). Ces sous-couches vont vous permettre de modifier dynamiquement la taille des systèmes de fichier, sans mettre en péril vos données. Ainsi vous pourrez ajouter, enlever de l'espace disque d'un filesystem à la volée, rajouter un système de fichier sans modification de la table des partitions. Cela ne pose pas de soucis d'avoir sur le meme disque ou grappe raid, X partitions en ext4 classique pour l'OS et une autre partition pour le VG du lvm

* Volumes Physiques PV (physical volume) : les disques durs, partitions de disques durs, volumes RAID ou unités logiques provenant d’un SAN
* Groupes de Volumes VG (volume group) : un ensemble de PV
* Volumes Logiques LV (logical volume) : un volume logique est un espace de stockage où l’on peut mettre un système de fichiers. C’est donc ce qui remplace les partitions.
* Extensions Physiques ou PE sont les unités physiques de stockage LVM utilisées pour augmenter la taille d’un groupe de volumes.
* Extensions Logiques ou LE désignent les unités logiques de stockage LVM utilisées pour augmenter la taille d’un groupe de volumes VG .
Partition(s) de disque
  |---> Physical volume
	|----> Volume Group
		|----> Logicals Volumes
			|----> système de fichiers

PV[modifier]

Un volume physique ou « PV » pour « physical volume » est tout simplement un disque ou une partition. Il est conseillé de créer une seule partition sdX1 (primaire) utilisant tout le disque dur, sans la formater, plutot que de créer le PV sur sdX directement (ce qui est faisable mais peut poser des soucis). On peut très bien avoir plusieur sdaX pour plusieurs PV.

# pvcreate /dev/sdd1

# pvs (infos synthétique sur les pv)
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sdd1       lvm2 a--  18.65g 18.65g

# pvdisplay (info détaillé sur les pv)
  --- NEW Physical volume ---
  PV Name               /dev/sdd1
  VG Name
  PV Size               18.65 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               ireBFT-OKK4-kU0u-C1cU-dJwh-fvDU-i1ewYf
  • Autres commandes
pvscan      : Recherche les PV présents
lvmdiskscan : Recherche des périphériques de blocs contenant des PV (on pourra y ajouter des PV)
pvremove    : Supprime le pv (pvremove /dev/$nompv, ex: pvremove /dev/sdd1 )
pvck        : Vérifie l'état des méta données (pvck /dev/sdd1)
pvrezise    : pvrezise  -v -d /dev/sdd1. Cela est utile si on change la taille de /dev/sdd1 avec un cfdisk, car logiquement pvdisplay verra toujours l'ancienne taille (un pvscan ne 
fonctionne pas)
pvs -v --segments /dev/mapper/LunVM1 : permet de voir comment sont arrangés les LV dans le PV, si ils sont continus...
pvmove, pvchange

VG[modifier]

Un groupe de volumes ou « VG » pour « volume group » est un ensemble de PV. Il est déconseillé de faire un VG sur plusieurs disques dur. Si on créé un VG sans faire de PV, le PV va se creer automatiquement. Lorsque l'on créé les VG, le lien /dev/volxxx n existera pas tant qu on n a pas créé de LV dans le VG en question

# vgcreate $VolumeGroupName $PhysicalVolume
# vgcreate vgtest /dev/sdd1

NOTE : on peut créer un PV à partir de 2 disques ou 2 partitions : pvcreate  /dev/hda3 && pvcreate  /dev/hdb2 && vgcreate test /dev/hdb2 /dev/hda3

# vgs (infos synthétique sur les pv)
  VG     #PV #LV #SN Attr   VSize  VFree
  vgtest   1   0   0 wz--n- 18.64g 18.64g

# vgdisplay (info détaillé sur les vg)
 --- Volume group ---
  VG Name               vgtest
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               18.64 GiB
  PE Size               4.00 MiB
  Total PE              4772
  Alloc PE / Size       0 / 0
  Free  PE / Size       4772 / 18.64 GiB
  VG UUID               7hLlYm-fqDo-1c84-TDUp-1QOT-JEv7-Z7PPDf
  • Autres commandes
vgcreate   : Cree un VG en spécifiant 1 ou plusieurs PV. On peut indiquer la taille du PE.
vgchange   : Active/Désactive un VG ou tous les VG
vgdisplay  : Affiche la liste des VG et leurs caractéristiques. L’option -v permet de visualiser la liste des LV et des PV de chaque VG.
vgscan     : Recherche les VG
vgs 	   : Affiche les principales caractéristiques des VG
vgextend   : Agrandit un VG, on lui ajoute un ou plusieurs PV (ex : pvcreate /dev/sde1 && vgextend vgtest /dev/sde1)
vgreduce   : Réduit un VG, en retirant un ou plusieurs PV.
vgremove   : Supprime un VG.
vgrename   : Renomme un VG (ex: vgrename oldname newname)
vgck       : Vérifie les VG

LV[modifier]

# lvcreate -n $LVName -L $Taille $NomVG
# lvcreate -n VolA -L 2g vgtest

# lvs (infos synthétique sur les lv)
  LV                      VG        Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  VolA vgtest -wi-a--- 2.00g

# lvdisplay (info détaillé sur les lv)
  --- Logical volume ---
  LV Path                /dev/vgtest/VolA
  LV Name                VolA
  VG Name                vgtest
  LV UUID                chw7E0-a1Wi-HMLq-t0E6-aiDD-fo8G-aBkgg6
  LV Write Access        read/write
  LV Creation host, time kvm-ins.agarik.com, 2013-07-08 17:01:58 +0200
  LV Status              available
  # open                 0
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
  • Autres commandes
lvscan 	   : Recherche les LV
lvremove   : Supprime un LV
lvextend   : Agrandi un LV (il faut ensuite agrandir la taille du FS)
lvreduce   : Diminue la taille d’un LV (il faut d’abord diminuer la taille du FS)

Lvresize voir https://wiki.blaxeen.com/index.php/Lv_resize[modifier]

Ajout et suppression de PV "externe"[modifier]

Ajout[modifier]

On peut avoir parfois besoin de faire une copie de LV d'un serveur à un autre via un disque dur externe. 
On va donc faire créer une partition (ou utiliser tout le disque externe) pour créer un :
# pvcreate /dev/sdg
# vgcreate  m2o /dev/sdg
# lvcreate -cn -n portailusagapp11new -L 40G m2o (-cn pour le pas qu il le mette en mode cluster)
# dd if=/dev/vol_kvm1_san_noha/portailusagapp11.m2o_system of=/dev/m2o/portailusagapp11new bs=1M

!! INFO !! On peut toutefois copier le LV dans un fichier "simple, ca fonctionne (dd if=/dev/vol_kvm1_san_noha/portailusagapp11.m2o_system of=/mnt/test)

Le problème c'est lorsqu on va brancher le disque sur l'autre serveur, il ne va pas voir tout seul les pv,vg et lv du disque externe. Il faut lancer les commandes suivantes :

# pvscan
# vgscan
# lvscan vgchange -ay "m2o" (pour activer le vg, sinon il reste en inactif)

Suppression[modifier]

Il n'y a pas de commandes propres pour démonter le pv avant de débrancher le disque externe. Sur certaines version d'OS, un simple pvscan va suffire, mais sur d'autre il ne va pas voir qu on l'a retiré et il va afficher ces messages :

[root@kvmcdr01.m2o qemu]# pvs
  /dev/m2o/portailusagapp11new: read failed after 0 of 4096 at 42949607424: Input/output error
  /dev/m2o/portailusagapp11new: read failed after 0 of 4096 at 42949664768: Input/output error
  /dev/m2o/portailusagapp11new: read failed after 0 of 4096 at 0: Input/output error
  /dev/m2o/portailusagapp11new: read failed after 0 of 4096 at 4096: Input/output error
  PV                             VG                Fmt  Attr PSize   PFree
  /dev/drbd0                     vol_kvm1          lvm2 a--  557.73g  22.73g
  /dev/drbd1                     vol_kvm2          lvm2 a--  557.73g  19.73g
  /dev/mapper/kvmcdr01_vm_nohap1 vol_kvm1_san_noha lvm2 a--    1.00t 478.01g


On débranche donc le disque externe (A faire avant toutes les autres commandes, sinon ca risque de peter), puis :

# dmsetup table
# dmsetup remove m2o-portailusagapp11new

Clone de PV[modifier]

Lorsqu'on clone un PV, ou qu on restaure un LV, on va avoir des UUID en doublon, ce qui va rendre impossible le montage. Il faut donc procéder comme suit :

Dans notre cas, le PV original est sap, on a restauré via Azure le pv, vg, lv, le nouveau pv est sur sdd

    vgimportclone -n sap /dev/sdd
    pvchange -u /dev/sdd
    vgchange -u sap1 (sap1 est le nom du nouveau PV, nom automatique, il reprend le nom du PV original et met 1 à la fin)
    vgrename sap1 saprestaure
    lvchange -a y saprestaure
    # si c'est du xfs (et peut etre aussi ext4) on a l uuid du FS qui est le meme, il faut le changer #
    xfs_repair -L /dev/saprestaure/lvsap
    xfs_admin -U generate /dev/saprestaure/lvsap
    mount /dev/saprestaure/lvsap /restore/