====== LVM2 Debian ======
**LVM2 sous Debian GNU/linux**
====== Introduction ======
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.
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
hda1 hdc1 (PV)
\ /
\ /
diskvg (VG)
/ | \
/ | \
usrlv rootlv varlv (LV)
| | |
ext2 reiserfs xfs (filesystems)
| | |
/usr / /var
====== 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 =====
root@maylug:/root# aptitude install lvm2
ou
user@maylug:/home/user$ sudo aptitude install lvm2
===== 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):
root@maylug:/root# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created
==== Gestion des PV ====
* pvscan(8) permet de chercher puis de lister les volumes physiques disponibles:
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]
* pvs(8) permet de récupérer des infos sur le(s) PV:
root@maylug:/# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc1 lvm2 a- 74,33g 74,33g
* pvdisplay(8) rapporte lui aussi des infos sur le(s) PV, mais de façon plus complète:
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
* 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.
root@maylug:/# vgcreate maylug_vg /dev/sdc1
Volume group "maylug_vg" successfully created
Si nous disposons de plusieurs PV alors c'est très simple:
root@maylug:/# vgcreate maylug_vg /dev/sda2 /dev/sdb1 /dev/sdc1
Volume group "maylug_vg" successfully created
===== 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:
root@maylug:/# vgchange -a y maylug_vg
0 logical volume(s) in volume group "maylug_vg" now active
==== Gestion des VG ====
* vgcfgbackup(8)
* vgcfgrestore(8)
* vgck(8)
* vgconvert(8)
* vgdisplay(8) rapporte des infos précieuses sur l'état des VG:
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
* 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 :
root@maylug:/# lvcreate -L10000 -ndata1_lv maylug_vg
Puis un volume de 3000MB pour la partition /data2:
root@maylug:/# lvcreate -L3000 -ndata2_lv maylug_vg
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:
root@maylug:/# vgdisplay maylug_vg | grep "Total PE"
Total PE 15779
Puis créer le volume en fonction:
root@maylug:/# lvcreate -l 15779 maylug_vg -ndata3_lv
Une fois nos LV construits nous y créons des systèmes de fichiers, ext4 sur data1 pour l'exemple:
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.
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:
/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
==== 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:
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
* 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
$ sudo aptitude install LVM2
2 - rechercher puis activer le ou les groupes de volumes
$ sudo vgdisplay
$ sudo vgchange -a y $NOM_DU_VG
3 - rechercher puis monter le ou les volumes logiques
$ sudo lvdisplay
$ sudo mount /dev/$NOM_DU_VG/$NOM_DU_LV /point/de/montage
====== 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]]