====== LVM2 Debian ====== **LVM2 sous Debian GNU/linux** ====== Introduction ====== <code>Ce document a été rédigé dans l'espoir qu'il soit utile mais SANS AUCUNES GARANTIES. Le lecteur engage sa propre responsabilité et ne pourra en aucun cas se retourner vers l'auteur ou MayLUG en cas de problèmes. Il est rappelé au lecteur qu'il est le seul responsable de son système, de ses données ou de celle de son employeur. Il est conseillé de faire des sauvegardes et de s'assurer qu'elles fonctionnent avant d'entreprendre des modifications profondes de son système. Par ailleurs, le lecteur serait bien avisé de lire les pages de manuel des commandes qu'il exécutera sur son système pour être sûre de ce qu'elles impliquent. </code> LVM2, //Logical Volume Manager// version 2, est un gestionnaire de volumes logiques pour les systèmes d'exploitation de type Unix. En pratique, LVM2 ajoute une couche entre le partitionnement des supports physiques et le système de fichiers du système d'exploitation. Une suite d'outils complets issus du paquet LVM2 apporte une grande souplesse dans la gestion de l'espace disque et des systèmes de fichiers (modification de la taille des partitions à la volée, ajouter/remplacer un disque dur sans modifier le fichier /etc/fstab, snapshots). Avec le passage sous LVM2 il y a 3 principes à intégrer: * PV, les volumes physiques, qui peuvent être des partitions (primaires ou logiques), des disques entiers ou même des volumes RAID. * VG, les groupes de volumes, qui sont issus de l’agrégation des PV et d'où sont créés les LV. * LV, les volumes logiques, sur lesquels seront créés les futurs systèmes de fichiers du système d'exploitation. === schéma === ce schéma est issu de celui de Erik Bågfors, publié sur la liste de diffusion linux-lvm <code>hda1 hdc1 (PV) \ / \ / diskvg (VG) / | \ / | \ usrlv rootlv varlv (LV) | | | ext2 reiserfs xfs (filesystems) | | | /usr / /var </code> ====== En bref ====== - # pvcreate /dev/sdc1 - # vgcreate maylug_vg /dev/sdc1 - # vgchange -a y maylug_vg - # lvcreate -L10000 -ndata1_lv maylug_vg - # vgdisplay maylug_vg | grep "Total PE" - # lvcreate -l 15779 maylug_vg -ndata3_lv - # mkfs.ext4 /dev/maylug_vg/data1_lv - # mount /dev/maylug_vg/data1_lv /home/user/monrepertoire and voila ;) ====== Let's go ====== ===== Installation ===== <code>root@maylug:/root# aptitude install lvm2 ou user@maylug:/home/user$ sudo aptitude install lvm2 </code> ===== Création de volumes physiques ===== Le plus commun est d'utiliser une partition d'un disque dur pour créer un PV, bien évidemment cette partition peut faire toute la taille du disque dur. la partition nouvellement créée ne nécessite pas d'y construire un système de fichiers ! Prenons l'exemple d'un disque neuf, détecté sur /dev/sdc, dans lequel nous avons créé une partition primaire dédiée à LVM2, /dev/sdc1. Utilisons l'utilitaire pvcreate(8) pour attacher cette partition primaire comme volume physique (PV): <code>root@maylug:/root# pvcreate /dev/sdc1 Physical volume "/dev/sdc1" successfully created </code> ==== Gestion des PV ==== * pvscan(8) permet de chercher puis de lister les volumes physiques disponibles: <code>root@maylug:/# pvscan PV /dev/sdc1 lvm2 [74,33 GiB] Total: 2 [74,33 GiB] / in use: 0 / in no VG: 1 [74,33 GiB] </code> * pvs(8) permet de récupérer des infos sur le(s) PV: <code>root@maylug:/# pvs PV VG Fmt Attr PSize PFree /dev/sdc1 lvm2 a- 74,33g 74,33g </code> * pvdisplay(8) rapporte lui aussi des infos sur le(s) PV, mais de façon plus complète: <code>root@renegade:/home/slaurent# pvdisplay "/dev/sdc1" is a new physical volume of "74,33 GiB" --- NEW Physical volume --- PV Name /dev/sdc1 VG Name PV Size 74,33 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID oEOFcK-0vGX-p7F0-TBNm-mxqR-2uHl-yIbQ2V </code> * pvremove(8) permet de détacher un volume physique précédemment utilisé par un VG * pvmove(8) permet de déplacer le contenu d'un PV vers l'espace libre des autres PV, ceci permettra par la suite de détacher le PV concerné. * pvchange(8) permet de changer le statut d'un PV; dans le cas d'un disque dur défaillant on changera le statut du PV associé pour y interdire l'écriture de nouvelle données en attendant son remplacement. ===== Création d'un groupe de volumes ===== Utilisons à présent l'utilitaire vgcreate(8) pour créer un groupe de volumes (VG) à partir de PV disponibles, un seul dans notre exemple: /dev/sdc1. <code>root@maylug:/# vgcreate maylug_vg /dev/sdc1 Volume group "maylug_vg" successfully created </code> Si nous disposons de plusieurs PV alors c'est très simple: <code>root@maylug:/# vgcreate maylug_vg /dev/sda2 /dev/sdb1 /dev/sdc1 Volume group "maylug_vg" successfully created </code> ===== Activation du nouveau groupe de volumes ===== Le script vgchange(8) nous permet d'utiliser notre nouveau groupe de volume (VG) immédiatement sans avoir à //rebooter// la machine pour une prise en compte par le noyau Linux: <code>root@maylug:/# vgchange -a y maylug_vg 0 logical volume(s) in volume group "maylug_vg" now active </code> ==== Gestion des VG ==== * vgcfgbackup(8) * vgcfgrestore(8) * vgck(8) * vgconvert(8) * vgdisplay(8) rapporte des infos précieuses sur l'état des VG: <code>root@maylug:/# vgdisplay --- Volume group --- VG Name maylug_vg System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 3 Max PV 0 Cur PV 1 Act PV 1 VG Size 74,33 GiB PE Size 4,00 MiB Total PE 19029 Alloc PE / Size 19029 / 74,33 GiB Free PE / Size 0 / 0 VG UUID xs3ZD7-uVcT-URTt-Nu13-YsdX-Z6zQ-YWhY4l </code> * vgexport(8) * vgextend(8) * vgimport(8) * vgimportclone(8) * vgmerge(8) * vgmknodes(8) * vgreduce(8) * vgremove(8) * vgrename(8) * vgs(8) * vgscan(8) * vgsplit(8) ===== Création de volumes logiques ===== Il ne reste plus qu'à jouer du lvcreate(8) pour créer nos volumes logiques correspondant aux points de montages souhaités: \\ Commençons par tailler un volume de 10000MB destiné à recevoir la partition /data1 : <code>root@maylug:/# lvcreate -L10000 -ndata1_lv maylug_vg </code> Puis un volume de 3000MB pour la partition /data2: <code>root@maylug:/# lvcreate -L3000 -ndata2_lv maylug_vg </code> Et enfin un volume de l'ensemble de l'espace disponible pour /data3. Il faut préalablement savoir combien il nous reste d'espace disponible: <code>root@maylug:/# vgdisplay maylug_vg | grep "Total PE" Total PE 15779 </code> Puis créer le volume en fonction: <code>root@maylug:/# lvcreate -l 15779 maylug_vg -ndata3_lv </code> Une fois nos LV construits nous y créons des systèmes de fichiers, ext4 sur data1 pour l'exemple: <code>root@maylug:/# mkfs.ext4 /dev/maylug_vg/data1_lv mke2fs 1.41.12 (17-May-2010) Étiquette de système de fichiers= Type de système d'exploitation : Linux Taille de bloc=4096 (log=2) Taille de fragment=4096 (log=2) « Stride » = 0 blocs, « Stripe width » = 0 blocs 640848 i-noeuds, 2560000 blocs 128000 blocs (5.00%) réservés pour le super utilisateur Premier bloc de données=0 Nombre maximum de blocs du système de fichiers=2621440000 79 groupes de blocs 32768 blocs par groupe, 32768 fragments par groupe 8112 i-noeuds par groupe Superblocs de secours stockés sur les blocs : 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Écriture des tables d'i-noeuds : complété Création du journal (32768 blocs) : complété Écriture des superblocs et de l'information de comptabilité du système de fichiers : complété Le système de fichiers sera automatiquement vérifié tous les 27 montages ou après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i pour écraser la valeur. </code> Et enfin, il ne reste plus qu'à venir modifier le fichier /etc/fstab pour que nos tout nouveaux LV soient montés au //boot// de la machine: <code>/dev/maylug_vg/data1_lv /home/user/docs ext4 defaults 0 2 /dev/maylug_vg/data2_lv /home/user/bank ext4 defaults 0 2 /dev/maylug_vg/data3_lv /home/user/mp3 ext4 defaults 0 2 </code> ==== Gestion des LV ==== * lvchange(8) * lvextend(8) * lvreduce(8) * lvrename(8) * lvs(8) * lvconvert(8) * lvdisplay(8), à la manière de pvdisplay(8) et vgdisplay(8), est un outils de rapport très précieux: <code>root@maylug:/# lvdisplay --- Logical volume --- LV Name /dev/maylug_vg/data1_lv VG Name renegade_vg LV UUID G7Xm2i-0g47-Tx6U-lIgj-vGBs-lFcd-DD5P6o LV Write Access read/write LV Status available # open 1 LV Size 9,77 GiB Current LE 2500 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:0 --- Logical volume --- LV Name /dev/maylug_vg/data2_lv VG Name renegade_vg LV UUID bkiOwv-36FI-lRAF-hhBh-chGh-aXdY-Wkjfhk LV Write Access read/write LV Status available # open 2 LV Size 2,93 GiB Current LE 750 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:1 --- Logical volume --- LV Name /dev/maylug_vg/data3_lv VG Name renegade_vg LV UUID xsE1LN-SI5z-oI1g-adkq-0J5t-DLdw-Fn9fz5 LV Write Access read/write LV Status available # open 1 LV Size 61,64 GiB Current LE 15779 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:2 </code> * lvremove(8) * lvresize(8) * lvscan(8) ====== LVM2 & Live-CD ====== Pour pouvoir accéder à ses volumes logiques lors de l'utilisation d'un média live (Live-CD/ Live-USB) Debian ou Ubuntu il faut: 1 - installer LVM2 <code>$ sudo aptitude install LVM2 </code> 2 - rechercher puis activer le ou les groupes de volumes <code>$ sudo vgdisplay $ sudo vgchange -a y $NOM_DU_VG </code> 3 - rechercher puis monter le ou les volumes logiques <code>$ sudo lvdisplay $ sudo mount /dev/$NOM_DU_VG/$NOM_DU_LV /point/de/montage </code> ====== Liens ====== * [[http://pwet.fr/man/linux/administration_systeme/fdisk|http://pwet.fr/man/linux/administration_systeme/fdisk]] * [[http://pwet.fr/man/linux/administration_systeme/mount|http://pwet.fr/man/linux/administration_systeme/mount]] * [[http://pwet.fr/man/linux/administration_systeme/lvm_10/lvm|http://pwet.fr/man/linux/administration_systeme/lvm_10/lvm]] * [[http://fr.wikipedia.org/wiki/Gestion_par_volumes_logiques|http://fr.wikipedia.org/wiki/Gestion_par_volumes_logiques]] * [[http://www.tldp.org/HOWTO/LVM-HOWTO/index.html|http://www.tldp.org/HOWTO/LVM-HOWTO/index.html]]