« Grub, quelques détails. | Home | SystemRescueCd sur le disque dur »

LVM simplement

posté par cep le 15 décembre 2006

LVM ou Logical Volume Manager est une solution permettant de gérer plus facilement les systèmes de fichiers ( partitions ), de les augmenter, diminuer, d’ajouter d’autres partitions ou d’autres disques à un système de fichiers déjà en service.

LVM peut aussi être la solution si, par exemple, votre /home est plein et vous voulez l’agrandir mais la seule partition que vous pouvez utiliser pour cela ne jouxte pas votre /home, voir est même sur un disque différent.

Cependant il ne faut pas oublier que l’installation d’une solution LVM écrasera toutes les données et systèmes de fichiers présents sur les partitions concernées, ou les disques si l’on fait un pvcreate sur l’ensemble du périphérique.

Je vais résumer très rapidement le principe du LVM, et n’aborder que la mise en place d’une solution LVM sur un système Debian déjà en service. Pour rentrer plus en détail dans le LVM il existe de nombreux sites, et en particulier le bon article d’Anne sur Lea ou les pages de labo-linux.


1°/ Principe :

a ) : les disques durs ou partitions sont configurés en Volumes Physiques ( PV ). Un Volume Physique est divisé en tranches de 4 Mo, les physical extents ( PE ).

b ) : est ensuite créé un Groupe de Volumes ( VG ou volume group ) contenant le ou les volumes physiques.

c ) : enfin le VG est divisé en Volumes Logiques, ( LV ou Logical Volumes ). On peut aussi préciser que les LV sont composés de Logical Extents ( LE ), pouvant être comparés aux partitions classiques qui pourront être copiées, déplacées, agrandies ou diminuées, ajoutées, le tout sans pertes de données et sans redémarrage de la machine.

2° / Mise en place du LVM :

S’il n’est pas encore présent sur votre système il faudra l’installer :

aptitude install lvm2

et aptitude installera automatiquement les paquets nécessaires, lvm-common et lvm2.

On part d’un disque ainsi partitionnée :

Number  Start   End     Size    Type      File system  Fanions
1      32,3kB  70,0GB  70,0GB  primaire  ext3         amorce
2      70,0GB  75,0GB  5001MB  primaire  ext3
3      75,0GB  80,0GB  5026MB  primaire  ext3

et on veut créer les Volumes physiques avec /dev/hdb2 et /dev/hdb3 :

# pvcreate /dev/hdb2 /dev/hdb3
Physical volume "/dev/hdb2" successfully created
Physical volume "/dev/hdb3" successfully created

Création du Groupe de Volumes nommé pour l’occasion db2_base composé de /dev/db2 et /dev/db3 :

# vgcreate db2_base /dev/hdb2 /dev/hdb3
Volume group "db2_base" successfully created

On vérifie que le VG est bien trouvé avec la commande vgscan :

# vgscan
Reading all physical volumes.  This may take a while...
Found volume group "db2_base" using metadata type lvm2

On met en place maintenant le Logical Volume que l’on appellera dans cet exemple gestion, d’une taille de 6 Go positionné dans le Volume Group db2_base :

# lvcreate -n gestion --size 6g db2_base
Logical volume "gestion" created

On peut maintenant créer le système de fichiers ext3, avec un espace réservé à root de 1% (-m1) :

# mkfs.ext3 -m1 /dev/db2_base/gestion
mke2fs 1.40-WIP (14-Nov-2006)
[couic . . . ]
Le système de fichiers sera automatiquement vérifié tous les 37 montages ou
après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i
pour écraser la valeur.

Pour avoir un rappel visuel on met le flag LVM sur les deux partitions grace à une commande parted ( optionnel ) :

# parted -s /dev/hdb set 2 LVM on set 3 LVM on p

Model: ST380020A (ide)
Disk /dev/hdb: 80,0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system  Fanions
1      32,3kB  70,0GB  70,0GB  primaire  ext3         amorce
2      70,0GB  75,0GB  5001MB  primaire               lvm
3      75,0GB  80,0GB  5026MB  primaire               lvm

Il ne reste plus qu’à créer le point de montage et rendre disponible le système de fichiers :

# mkdir /mnt/gestion
# mount  /dev/db2_base/gestion /mnt/gestion/ ; df -hT /mnt/gestion
Sys. de fich. Type     Tail. Occ. Disp. %Occ. Monté sur
/dev/mapper/db2_base-gestion
ext3    6,0G  141M  5,8G   3% /mnt/gestion

Pour simplifier les mounts ou la configuration du fstab on attribue avec tune2fs le label gestion au système de fichiers ( on aurait pu le faire au moment du mkfs.ext3 ) :

# tune2fs -L gestion /dev/db2_base/gestion
tune2fs 1.40-WIP (14-Nov-2006)
# tune2fs -l /dev/db2_base/gestion |grep name
Filesystem volume name:   gestion

Avec vgdisplay et lvdisplay on vérifie que tout est ok et on affiche les détails de l’ensemble :

# vgdisplay
--- Volume group ---
VG Name               db2_base
System ID
Format                lvm2
Metadata Areas        2
Metadata Sequence No  2
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                1
Open LV               1
Max PV                0
Cur PV                2
Act PV                2
VG Size               9,34 GB
PE Size               4,00 MB
Total PE              2390
Alloc PE / Size       1536 / 6,00 GB
Free  PE / Size       854 / 3,34 GB
VG UUID               gvaQHp-sF22-TJGT-yjZx-0r0B-FOWv-0AjRNP

# lvdisplay
--- Logical volume ---
LV Name                /dev/db2_base/gestion
VG Name                db2_base
LV UUID                PAKe5Q-Pmll-0Mjc-qAAg-E2x3-LLb6-MKhCLs
LV Write Access        read/write
LV Status              available
# open                 1
LV Size                6,00 GB
Current LE             1536
Segments               2
Allocation             inherit
Read ahead sectors     0
Block device           254:0

Si l’on juge la taille de 6 Go insuffisante, on peut la passer par exemple à 7 Go avec l’utilitaire lvextend :

# umount /mnt/gestion
# lvextend -L+1g /dev/db2_base/gestion
Extending logical volume gestion to 7,00 GB
Logical volume gestion successfully resized
# e2fsck -f -y -C0 /dev/db2_base/gestion
e2fsck 1.40-WIP (14-Nov-2006)
Passe 1 : vérification des i-noeuds, des blocs et des tailles
Passe 2 : vérification de la structure des répertoires
Passe 3 : vérification de la connectivité des répertoires
Passe 4 : vérification des compteurs de référence
Passe 5 : vérification de l'information du sommaire de groupe
gestion: 11/786432 files (9.1% non-contiguous), 60560/1572864 blocks

Il faut maintenant agrandir le système de fichiers avec la commande resize2fs pour de l’ext3 ( à noter que cela aurait pu être fait sans démonter le fs ) :

# resize2fs /dev/db2_base/gestion
resize2fs 1.40-WIP (14-Nov-2006)
Resizing the filesystem on /dev/db2_base/gestion to 1835008 (4k) blocks.
Le système de fichiers /dev/db2_base/gestion a maintenant une taille de 1835008 blocs.

# e2fsck -f -y -C0 /dev/db2_base/gestion
[couic . . . ]
gestion: clean, 11/917504 files, 65057/1835008 blocks
# mount -L gestion /mnt/gestion/
#  lvdisplay |grep Size
LV Size                7,00 GB

Et voilà, c’est terminé. On a bien les 7 Go disponibles.

Un dpkg -L lvm2 vous dira tout ce qui a été installé, en particulier la documentation, les mans et les utilitaires. Un aperçu de ces derniers :

/lib/lvm-200/lvextend
/lib/lvm-200/vgsplit
/lib/lvm-200/vgimport
/lib/lvm-200/lvdisplay
/lib/lvm-200/lvmsadc
/lib/lvm-200/pvremove
/lib/lvm-200/vgmknodes
/lib/lvm-200/lvcreate
/lib/lvm-200/vgdisplay
/lib/lvm-200/pvs
/lib/lvm-200/pvscan
/lib/lvm-200/vgs
/lib/lvm-200/vgcfgrestore
/lib/lvm-200/vgscan
/lib/lvm-200/vgck
/lib/lvm-200/vgreduce
/lib/lvm-200/lvscan
/lib/lvm-200/vgrename
/lib/lvm-200/pvresize
/lib/lvm-200/lvs
/lib/lvm-200/vgcreate
/lib/lvm-200/vgmerge
/lib/lvm-200/lvmchange
/lib/lvm-200/pvdisplay
/lib/lvm-200/vgconvert
/lib/lvm-200/lvmsar
/lib/lvm-200/lvmdiskscan
/lib/lvm-200/lvreduce
/lib/lvm-200/vgextend
/lib/lvm-200/pvchange
/lib/lvm-200/vgexport
/lib/lvm-200/lvresize
/lib/lvm-200/lvrename
/lib/lvm-200/pvmove
/lib/lvm-200/vgcfgbackup
/lib/lvm-200/vgchange
/lib/lvm-200/lvconvert
/lib/lvm-200/pvcreate
/lib/lvm-200/lvchange
/lib/lvm-200/vgremove
/lib/lvm-200/lvremove

Bonne consultation de tous les mans corréspondants :-)

cep

p.s. : pour la petite histoire, dans ma précipitation lors du pvcreate et vgcreate j’avais oublié de joindre /dev/hdb3 à /dev/hdb2. J’ai utilisé vgremove et pvremove pour revenir en arrière :
# pvcreate /dev/hdb2
Physical volume “/dev/hdb2″ successfully created
# vgcreate db2_base /dev/hdb2
Volume group “db2_base” successfully created
# vgremove /dev/db2_base
Volume group “db2_base” successfully removed
# pvremove /dev/hdb2
Labels on physical volume “/dev/hdb2″ successfully wiped

Topics: linux |

One Response to “LVM simplement”

  1. resize2fs | le blog de cep Says:
    18 janvier 2007 at 10:27

    […] Enfin resize2fs est souvent utilisé sur des configurations avec lvm, après un lvextend par exemple, et ceci même sans démonter le système de ficheirs. Voir http://www.cepcasa.info/blog/?p=17 […]

Comments

*
Pour prouver que vous n'êtes pas un bot, recopiez le code ci-dessous
Anti-Spam Image