Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
wiki:lvm [23/07/2024 10:55] vincent.adolphewiki:lvm [23/07/2024 14:17] (Version actuelle) – [Logical Volume Mapper (LVM)] vincent.adolphe
Ligne 1: Ligne 1:
 ====== Logical Volume Mapper (LVM) ====== ====== Logical Volume Mapper (LVM) ======
 +
 +ressources:
 +  * man lvcreate
 +  * man lvconvert
 +  * man lvs
 +  * https://www.linuxtricks.fr/wiki/lvm-avance-les-snapshots
 +  * https://www.claudiokuenzler.com/blog/1070/lvm-restore-logical-volume-merging-snapshot-will-occur-on-next-activation
 +
  
 ===== Créer et utiliser un snapshot ===== ===== Créer et utiliser un snapshot =====
Ligne 15: Ligne 23:
 </code> </code>
  
 +==== Création d'un snapshot ====
 +
 +Typiquement avant une opération délicate, mise à jour de LXC ou autre.
 +
 +<code bash>
 +# lvcreate -s -L $[10**9]B -n webtest_snap /dev/magrathea/webtest
 +  Rounding size to boundary between physical extents: 956,00 MiB.
 +  Size of logical volume magrathea/webtest_snap changed from 20,00 MiB (5 extents) to 956,00 MiB (239 extents).
 +  Logical volume magrathea/webtest_snap successfully resized.
 +</code>
 +  * ''%%-s --snapshot%%'' indique qu'on fait un snapshot
 +  * ''%%-L --size%%'' indique la taille (ici en ''%%bytes B%%'' pour avoir des puissance de 10)
 +  * ''%%-n --name%%'' nom du snapshot
 +  * ''%%/dev/.../...%%'' adresse de l'original
 +
 +Pour simuler la mise à jour, on ajoute un fichier ''%%flag%%'' 
 +Par exemple, si ''%%webtest%%'' est monté sur ''%%/var/lib/lxc/webtest/rootfs%%'', on peut voir le contenu du snapshot en le montant ailleurs, par exemple sur ''%%/mnt/tmp%%'': <code bash>
 +touch /var/lib/lxc/webtest/rootfs/tmp/flag
 +mkdir -p /mnt/tmp
 +mount -o ro /dev/magrathea/webtest_snap /mnt/tmp
 +ls -la /mnt/tmp/tmp/flag
 +ls: impossible d'accéder à '/mnt/tmp/tmp/flag': Aucun fichier ou dossier de ce type
 +umount /mnt/tmp
 +</code>
 +
 +==== Cas simple ====
 +Tout s'est bien passé, le snapshot n'est plus nécessaire, il suffit de l'enlever: <code bash>
 +lvremove /dev/magrathea/webtest_snap
 +</code>
 +
 +==== Cas "récupération" ====
 +Il faut repartir sur le snapshot et l'original n'est plus bon, on va fusionner le snapshot dans l'original:<code bash>
 +# si on oublie de démonter le volume, la conversion sera différée jusqu'au démontage
 +umount /dev/magrathea/webtest
 +# le -i 1 permet de voir le pourcentage effectue toutes les secondes
 +# sinon en faisant un lvs on le voit aussi dans la colonne Data%
 +lvconvert --mergesnapshot -i 1 /dev/magrathea/webtest_snap
 +
 +# pendant la conversion:
 +# lvs
 +  LV         VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
 +  [...]  
 +  another_lv magrathea -wi-ao----  10,00G                                                    
 +  webtest    magrathea Owi-a-s---   5,00G                15%                                    
 +</code>
 +
 +Noter les attributs par rapport a un autre LV "normal":
 +  * O : Origin with merging snapshot
 +  * o : open (volume monté ou ouvert par un processus)
 +  * s : target type: snapshot
 +
 +s'il n'y a pas de pourcentage, la conversion est simplement différée, un ''%%vgchange --refresh LVNAME%%'' va la relancer (à condition toutefois que le volume soit démonté)
 ==== Cas d'un snapshot trop petit ==== ==== Cas d'un snapshot trop petit ====
  
Ligne 46: Ligne 106:
   LV           VG        Attr       LSize   Pool Origin  Data%  Meta%  Move Log Cpy%Sync Convert   LV           VG        Attr       LSize   Pool Origin  Data%  Meta%  Move Log Cpy%Sync Convert
   webtest      magrathea owi-aos---   5,00G                                                        webtest      magrathea owi-aos---   5,00G                                                     
-  webtest_snap magrathea swi-a-s---  12,58M      webtest 92,61                                  +  webtest_snap magrathea swi-a-s---  12,58M      webtest 83,76                                  
 </code> </code>
-on arrive a 92% de saturation du snapshot et si on repete la dernière commande, on arrive à 100%+on arrive a 83% de saturation du snapshot et si on répète la dernière commande, on arrive à 100% 
 +Pour éviter ça, tant que le snapshot n'est pas invalid, on peut l'agrandir: <code bash> 
 +# lvresize -L20000256B /dev/magrathea/webtest_snap  
 +  Rounding size to boundary between physical extents: 20,00 MiB. 
 +  Size of logical volume magrathea/webtest_snap changed from 12,00 MiB (3 extents) to 20,00 MiB (5 extents). 
 +  Logical volume magrathea/webtest_snap successfully resized. 
 +# lvs 
 +  LV           VG        Attr       LSize   Pool Origin  Data%  Meta%  Move Log Cpy%Sync Convert 
 +  [...]                                                     
 +  webtest      magrathea owi-aos---   5,00G                                                      
 +  webtest_snap magrathea swi-a-s---  20,97M      webtest 50,45                                   
 +</code> 
 + 
 +Si on arrive à saturation par contre c'est trop tard: 
 <code bash> <code bash>
 dd if=/dev/zero of=tmp/dummy bs=1024 count=10240 dd if=/dev/zero of=tmp/dummy bs=1024 count=10240
  • wiki/lvm.1721724911.txt.gz
  • Dernière modification : 23/07/2024 10:55
  • de vincent.adolphe