====== LVM ====== ===== Description ===== Diagramme des différentes couches de l'architecture LVM. {{informatique:linux:lvm.jpg}} ===== Fonctionnement ===== ==== Créer un volume groupe et des files systèmes ==== === Création du physical volume (PV) puis du volume groupe (VG) === Dans l'exemple ci-dessous on ajoute le disque sdb au volume groupe rootvg pvcreate /dev/sdb vgcreate rootvg /dev/sdb :!: Seule des disques physiques ou partition de disque peuvent être ajouté à un VG === Création d'un logical Volume (LV) === Dans l'exemple ci-dessous on crée une partition de 1Go nommée lvproducts faisant partie du VG rootvg lvcreate -L 1G -n lvproducts rootvg mkfs.ext3 /dev/rootvg/lvproducts mkdir /products echo "/dev/rootvg/lvproducts /products ext3 defaults 0 0" >> /etc/fstab ==== Agrandir un volume group ==== Pour ajouter un nouveau volume dans un volume group : vgextend zimbravg /dev/sdc1 ==== Resizer un Logical Volume ==== === Augmentation === Dans le cas ci-dessous on augmente la taille de la partition nommée lvusr pour qu'elle fasse 1200Mo lvresize -L1200M /dev/rootvg/lvusr ext2online /dev/rootvg/lvusr ou pour RedHat 5 lvresize -L1200M /dev/rootvg/lvusr resize2fs /dev/rootvg/lvusr === Reduction === Dans le cas ci-dessous on reduit le FS /home à 300Mo umount /home/ e2fsck -f /dev/rootvg/lvhome resize2fs /dev/rootvg/lvhome 300M lvresize -L310M /dev/rootvg/lvhome mount /home/ === Augmentation de la Swap === Dans le cas ci-dessous on augmente la swap pour qu'elle fasse 1Go swapoff -v /dev/rootvg/lvswap lvresize -L1G /dev/rootvg/lvswap mkswap /dev/rootvg/lvswap swapon -va cat /proc/swaps :!: Remarque : Certaines version de LVM utilisent XFS, il faut donc utiliser ''xfs_growfs'' à la place de ''resize2fs''. Exemple : xfs_growfs /dev/rootvg/lvusr ==== Sauvegarder / Restaurer la configuration LVM ==== === Sauvegarder la configuration lvm === vgcfgbackup La configuration est généralement sauvegardée dans ''/etc/lvm/backup/'' === Restaurer la configuration lvm sur un nouveau disque === Si l'on veut restaurer le configuration lvm de notre ancien disque vers le nouveau, il faut : Repérer le ou les id des ''physical_volumes'' grep -E "_volumes|id" /etc/lvm/backup/vg01 Labéliser le ou les ''physical_volumes'' avec les mêmes id pvcreate -u G5r87h-xmdg-7sVx-Fzpe-22Mv-97DP-QoX8g0 /dev/sdb Restaurer la configuration du VG vgcfgrestore vg01 === Gestion des duplicate PV === Si l'on copie un disque physique contenant des partitions LVM block à block (ex: ''dd if=/dev/sdb of=/dev/sdc''), on peut rencontrer ce genre d'erreur ''Found duplicate PV G5r87hxmdg7sVxFzpe22Mv97DPQoX8g0: using /dev/sdc not /dev/sdb''. Dans ce cas il est nécessaire de supprimer le label LVM de l'un des volumes physiques, la commande est donc la suivante: pvremove -ff /dev/sdb ou pvremove -ff /dev/sdc === Activer / Desactiver un LV === Activer lvchange -a y /dev/rootvg/homelv Desactiver lvchange -a n /dev/rootvg/homelv ==== Déplacer les données d'un PV à un autre PV faisant partie d'un même VG ==== Pour déplacer les données de /dev/sdd1 vers /dev/sdb1 : pvmove /dev/sdd1 /dev/sdb1 ==== Snapshots ==== Le snapshot permet de faire une sauvegarde d'un LogicalVolume à un instant T. Ceci permet surtout de restaurer rapidement un fichier si celui-ci a été effacé par erreur. === Créer un SnapShot === Pour prendre une image du volume logique ''/dev/rootvg/rootlv'' (monté sur /) à un instant T, lancer : lvcreate -L100M -s -n root_snapshot_$(date +%Y-%m-%d-%H%M) /dev/rootvg/rootlv :!: Ce SnapShot est de 100Mo, tant qu'il y a moins de 100Mo modifié sur ''/dev/rootvg/rootlv'' le SnapShot restera **actif** au delà il se **désactivera** et ne sera plus accessible. === Accès au SnapShot === Pour avoir accès au SnapShot, il suffit de monter le volume logique ''/dev/rootvg/root_snapshot_2008-09-15-0303'' mkdir -p /SNAPSHOT/root_snapshot_2008-09-15-0303 mount /dev/rootvg/root_snapshot_2008-09-15-0303 /SNAPSHOT/root_snapshot_2008-09-15-0303 On trouvera la même arborescence que ''/'' dans ''/SNAPSHOT/root_snapshot_2008-09-15-0303'' sauf qu'il y aura nos anciens fichiers. Donc pour restaurer par exemple le fichier ''/home/user/toto.txt'' il suffit de faire : cp /SNAPSHOT/root_snapshot_2008-09-15-0303/home/user/toto.txt /home/user/toto.txt Pour qu'un user ait accès à son snapshot, sans faire appel à l'administrateur on peut par exemple créer un lien symbolique ainsi cd /home/user ln -s /SNAPSHOT/root_snapshot_2008-09-15-0303/$PWD /$PWD/.snapshot === Supprimer un SnapShot === umount /dev/rootvg/root_snapshot_2008-09-15-0303 lvremove /dev/rootvg/root_snapshot_2008-09-15-0303 === Stratégie des SnapShots === Idéalement il faut allouer 20% du VolumeGroup pour les SnapShots. La taille de chaque SnapShot devra être définis selon la fréquence et l'historique désiré. ==== Thin Provisionning ==== :!: Attention, le thin provisionning nécessite beaucoup de rigueur dans la supervision les volumes Le ThinPool est le volume physiquement alloué : Creation d'un Thin Pool : lvcreate -L 100M -T datavg/mythinpool Nous faisons ci-dessous un volume supérieur à celui physiquement alloué : Puis le volume thin : lvcreate -V200M -T datavg/mythinpool -n thinvolume Faire les deux en une seule ligne de commande : lvcreate -L100M -T datavg/mythinpool -V200M -n thinvolume