LVM 1 et 2

De Avided.info
Aller à : navigation, rechercher


Sommaire

LVM Pourquoi ?

LVM veux dire Volume Logique Manager.

Mais pourquoi est-il aussi important de l'avoir au moment de l'installation ?

Si cela était le cas nous aurions creer un VG pour tous notre systeme même le / seul /boot aurait été sur une partition normal.

Venons en a la question ultime.

  • A quoi cela peut-il bien servire ?

Pour repondre a cette question il faut en un premier temps repondre a une autres : Pourquoi partitionner sont disque ? Parmis les points fort du partitionnement :

  • Il devient possible de reinstaller un systeme sans tous perdre.

Si vous partiotionner votre disque en 3 partitions

  1. la swap qui est presque obligatoire sur linux.
  2. "/" qui est obligatoire vue que c'est la racine sur un systeme de type Unix/Linux.
  3. /home point de montage de la 3eme partition.

Si votre systeme doit etre reinstaller ou restoré, il suffit de reinstaller le systeme sur la partition monter sur /, faire attention a ne rien faire sur la 3eme partition, puis remonter la 3eme partition sur le nouveau /home. Il devient possible de monter certaint systeme de fichier en lecture seul comme /usr par exemple. Si un gros fichier remplie la partition dans laquel il est, tous le systeme n'est pas en danger. En reprenant l'exemple précedent : un utilisateur copie plusieurs film dans sont repertoire etant heberger dans /home, il n'impacte pas / qui lui reste avec de l'espace libre, le systeme peut continuer a fonctionner correctement.si bien entendue les donnée d'un service n'est pas dans /home. L'optimisation peux aussi etre un point important . L'exemple de la SWAP en est un exemple, il utilise un type de systeme de fichier adapter a sont travail.

  • Maintenant repondons à la question pourquoi LVM ?

Au moment ou vous partitionner un disque, il faut bien savoir ce que vous voullez faire de votre machine et surtous de votre disque. Les questions a ce posé sont lourde de concequence. Combien d'espace pour /, pour /tmp et autre repertoire que vous desirer sur des files systems spéparer. LVM est la reponce a cette question. Creer un Volume Logique (LV) est la même chose qu'une partition mais avec une surcouche permettant de redimentionner une partition. Comme il est lus aiser d'agrandir un Volume Logique que de le reduire, il est conseillé de créé des LV de petite taille puis de les agrandir au fure et a mesure des besoins.

Procédure de vie d'un VL

Création

J'ai les disques suivant :

Disque /dev/sda: 8589 Mo, 8589934592 octets
Disque /dev/sdb: 8589 Mo, 8589934592 octets
Disque /dev/sdc: 1054 Mo, 1054867456 octets
Disque /dev/sdd: 1054 Mo, 1054867456 octets
Disque /dev/sde: 1054 Mo, 1054867456 octets

Il existe deja 1 VG VolGroup00 ayant un LV existant LogVol01. Ce Volume Logique est utilisé pour le système d'exploitation.

Ce volume utilise /dev/sda comme PV. Je ne toucherait pas a ce PV, ce VG et ce LV. J'essaierais de ne pas afficher le résultats correspondant a ces données.

Pour la première partie je n'utiliserais que les 3 derniers disques faisant 1054 Mo chacun. J'ai créé une partition de la taille complète du disque et j'ai modifié le type par defaut en linuxLVM (8e).

/dev/sdc1 1Go linuxLVM 8e
/dev/sdd1 1Go linuxLVM 8e
/dev/sde1 1Go linuxLVM 8e

Lister les partitions physiques

Toutes ces informations peuvent etre trouvé avec la commande suivante :

fdisk -l

Le partitionnement peut être effectué avec la commande suivante :

fdisk /dev/sda

"sda" peux être à modifier celon le disque que vous devez modifier.

Une fois dans fdisk taper la letre 'm' pour l'aide.

ou man fdisk dans un autre terminal ou taper fdisk dans le moteur de recherchede ce site ou dans google pour plus d'aide sur fdsik. Les partitions doivent être de type lvm (8e).

ajouter une partition physique a LVM

J'indique a LVM que j'ai des Physcal Volume (partitions ou des disques) attribuables a des VG

pvcreate /dev/sdc1

Creer un Volume Group

Je crée le VG en lui attribuant au moins un PV

vgcreate vgdata /dev/sdc1

Creer un Volume Logique

Je créé le LV de 100 Mo

lvcreate -n lv1 -L 100M vgdata

Applique les modification a LVM

j'applique les changements du Volume Groupe

vgchange -a y vgdata

Formater le Volume Logique

Je créer un FS sur le LV

mkfs.ext3 /dev/vgdata/lv1

Modifier les options du Files Systeme

j'applique quelques options sur le FS

tune2fs -m1 -C60 -LLV1 /dev/vgdata/lv1

-m indique en pourcentage l'espace réserver au root -C indique le nombre de montage avant un check du FS -L indique un FLAG pour nom de volume. -LHOME doit changer pour chaque LV

Ettendre le Volume Logique

Ajout J'ai plus de place dans mon LV, je l'agrandis de 100 Mo

lvextend -L +100M /dev/vgdata/lv1

Ajouter un dique physique pour etendre un Volume Logique

A force de l'agrandii, il n'y a plus d'espace libre dans mon VG.

J'ajoute un disque que je partitionné

/dev/sdd1 1GO LinuxLVM 8e

L'ajout des partition vue par LVM

pvcreate /dev/sdd1

J'ajoute la partition au volume group désigné

vgextend vgdata /dev/sdd1

Ajout de 100 Mo au volume logique désigne

lvextend -L +100M /dev/vgdata/lv1

Retaille le système de fichier

En fonction du systeme de fichier la commande diffère ext3 ou 4

resize2fs /dev/vgdata/lv1

XFS

xfs_growfs /point/de/montage

J'applique les changements sur le VG

vgchange -a y VolGroup00

Ajout d'un 2 eme Volume Logique dans le même VG

lvcreate -n lv2 -L 100M vgdata
mkfs.ext3 /dev/vgdata/lv2
tune2fs -c 60 -i 6m -m 1 /dev/vgdata/lv2

il ne reste plus qu'a monter le nouveau file système. (de façon temporaire ou dans le fstab celons le cas)


Suppression

La procédure de suppression suit le chemin inverse a la construction.

On démonte le VL

umount /dev/vgdat/lv1

On supprime le ou les VL

lvremove /dev/vgdat/lv1

Le "-f" peut être utilisé afin de ne pas avoir de question sur la confirmation. Si cette question est posé par défaut c'est qu'elle est tres importante. on recommence cette commande pour tous les VL du VG.

On supprime le VG

vgremove vgdata

Il n'y a pas de question de confirmation. Cela ne sert a rien. En effet un VG vide n'a plus de données donc cette commande n'est pas trés dangereuses

Diagnostique et autres commandes

Voir

Visualiser les PVs et leurs informations vue par LVM

pvdisplay [PV]
--- Physical volume ---
PV Name /dev/sdc1
VG Name vgdata
PV Size 1004,03 MB / not usable 4,03 MB
Allocatable yes
PE Size (KByte) 4096
Total PE 250
Free PE 150
Allocated PE 100
PV UUID HbnieF-24RI-MPND-Z0Qe-wbeT-L4r0-pguOQs
--- Physical volume ---
PV Name /dev/sdd1
VG Name vgdata
PV Size 1004,03 MB / not usable 4,03 MB
Allocatable yes
PE Size (KByte) 4096
Total PE 250
Free PE 250
Allocated PE 0
PV UUID WFqVDM-LAG5-bzOj-lDTx-MvRr-q0kB-ecm2je

Visualiser les VG et leurs informations vue par LVM

vgdisplay [VG]
--- Volume group ---
VG Name vgdata
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 1,95 GB
PE Size 4,00 MB
Total PE 500
Alloc PE / Size 100 / 400,00 MB
Free PE / Size 400 / 1,56 GB
VG UUID QOfQ4d-drYb-710r-OEGT-yZbY-0flv-whVmIB

Pour visualiser les VL et leurs informations vue par LVM

lvdisplay [VG]
--- Volume group ---
VG Name vgdata
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 1,95 GB
PE Size 4,00 MB
Total PE 500
Alloc PE / Size 100 / 400,00 MB
Free PE / Size 400 / 1,56 GB
VG UUID QOfQ4d-drYb-710r-OEGT-yZbY-0flv-whVmIB

Pour c'est trois commandes : - Il est possible d'indiquer un parametre optionel. Un PV ou un VG pour lequel vous desirez des informations. - L'option -c permet d'avoir les reseignements sous forme de collone. Cette forme est plus adabpter si vous devez scripter et recuperer les resultats grace a " | awk -F: '{print $NUMERO_CHAMP}'

Les Volumes Logiques

La commande deja vu plus haute permetant de visualiser les VLs

lvdisplay vgdata

Elle peut aussi être utilisé avec l'option "-c" afin d'avoir les resultat sous forme de collone, plus pratique pour une utilisation en script. Un man de chaque commande vous permet trouver la correspondance de chaque champ.

pvdisplay -c
/dev/sdc1:vgdata:2056257:-1:8:8:-1:4096:250:150:100:HbnieF-24RI-MPND-Z0Qe-wbeT-L4r0-pguOQs
/dev/sdd1:vgdata:2056257:-1:8:8:-1:4096:250:250:0:WFqVDM-LAG5-bzOj-lDTx-MvRr-q0kB-ecm2je


vgdisplay -c
vgdata:r/w:772:-1:0:1:0:-1:0:2:2:2048000:4096:500:100:400:QOfQ4d-drYb-710r-OEGT-yZbY-0flv-whVmIB

lvdisplay -c
/dev/vgdata/lv1:vgdata:3:1:-1:0:819200:100:-1:0:-1:253:2


Creation avancé

Depuis LVM2, beaucoup de fonction ont été ajouté. Si vous avez plusieurs disques vous aimeriez pouvoir avoir les fonctions de raid 0 (stipping) ou raid 1 (mirroring). Il est possible de créer un RAID 0 et/ou 1, puis d'utiliser les volume raid comme des PV. Le problème est que si vous désirer pour un LV du RAID 0 et pour un autre LV du RAID 1, puis pour une dernière rien de tous cela. LVM 2 permet cela.

Pour mon exemple je vais supprimer le"datavg" créé ci-dessus, puis tous recommencer. Il me restera mon VG systeme "VolGroup00" En faite si vous désirer utiliser des disque entier, il n'est pas nécessaire de les partitioner. Dans ce cas il faut qu'il n'y ai aucune partition sur le disque. J'utiliserais l'option -c des commandes afin de réduire la tailles des sortie d'écran. Si les informations sont très importantes je n'utiliserais pas cette option ou je mettrais le champ en gras J'ajoute les disques dans LVM

pvcreate /dev/sdc /dev/sdd /dev/sde

Je vérifie que LVM vois les PV

pvdisplay -c
"/dev/sdc" is a new physical volume of "1006,00 MB"
/dev/sdc:#orphans_lvm2:2060288:-1:0:0:-1:0:0:0:0:QMVNLm-7z8f-lfCA-oijb-czeP-bkon-Rgvxsi
"/dev/sdd" is a new physical volume of "1006,00 MB"
/dev/sdd:#orphans_lvm2:2060288:-1:0:0:-1:0:0:0:0:vfoKln-LG3v-8lNx-Ivoe-x8k9-Cz1G-LBOMgh
"/dev/sde" is a new physical volume of "1006,00 MB"
/dev/sde:#orphans_lvm2:2060288:-1:0:0:-1:0:0:0:0:UW0Y2A-Mfaz-zYde-U0ca-h4x2-UxYL-vIOnhs

Stripping

lvcreate -L 100M -i2 -nVLNAME VGNAME

Vous voullez echanger un PV par un Nouveau dans un VG

    1. Nous avons créer une nouvelle partition sur le 1er disque de type Linux LVM /dev/cciss/c0d0p2
fdisk -l
Disk /dev/cciss/c0d0: 73.3 GB, 73369497600 bytes
255 heads, 63 sectors/track, 8920 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/cciss/c0d0p1 * 1 13 104391 83 Linux
/dev/cciss/c0d0p2 14 8920 71545477+ 8e Linux LVM ## Partition fraichement créé

Disk /dev/cciss/c0d1: 293.5 GB, 293563949056 bytes
255 heads, 63 sectors/track, 35690 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/cciss/c0d1p1 * 1 35690 286679893+ 8e Linux LVM ## celle-ci ne devrait pas etre dans le VG

On ajoute notre nouvelle partition a LVM

pvcreate /dev/cciss/c0d0p2 Physical volume "/dev/cciss/c0d0p2" successfully created

On ajoute notre nouvelle partition a au VG

vgextend VolGroup00 /dev/cciss/c0d0p2
Volume group "VolGroup00" successfully extended

On contrôle que tous les PE pourons etre heberger sur le nouveau PV

pvdisplay -c
/dev/cciss/c0d1p1:VolGroup00:573359787:-1:8:8:-1:32768:8748:7606:1142:gd09sf-gaor-bviK-slFz-3G8S-ryN B-QMrnJj
/dev/cciss/c0d0p2:VolGroup00:143090955:-1:8:8:-1:32768:2183:2183:0:hI0KoZ-BEKT-z6HK-7EDQ-B3Pg-Iuwf-n 1MjMo

On move tous les PE de /dev/cciss/c0d1p1 vers notre nouveau PV

pvmove /dev/cciss/c0d1p1 /dev/cciss/c0d0p2
/dev/cciss/c0d1p1: Moved: 3.5%
/dev/cciss/c0d1p1: Moved: 5.6%
/dev/cciss/c0d1p1: Moved: 11.2%
/dev/cciss/c0d1p1: Moved: 21.5%
/dev/cciss/c0d1p1: Moved: 22.4%
/dev/cciss/c0d1p1: Moved: 23.8%
/dev/cciss/c0d1p1: Moved: 26.6%
/dev/cciss/c0d1p1: Moved: 37.1%
/dev/cciss/c0d1p1: Moved: 37.8%
/dev/cciss/c0d1p1: Moved: 39.2%
/dev/cciss/c0d1p1: Moved: 50.4%
/dev/cciss/c0d1p1: Moved: 61.6%
/dev/cciss/c0d1p1: Moved: 72.1%
/dev/cciss/c0d1p1: Moved: 81.7%
/dev/cciss/c0d1p1: Moved: 93.1%
/dev/cciss/c0d1p1: Moved: 100.0%

On supprime du VG le PV que nous voulons recuperer

vgreduce VolGroup00 /dev/cciss/c0d1p1
Removed "/dev/cciss/c0d1p1" from volume group "VolGroup00"

On contrôle et tous semble OK

vgdisplay
--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 25
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 10
Open LV 10
Max PV 0
Cur PV 1
Act PV 1
VG Size 68.22 GB
PE Size 32.00 MB
Total PE 2183
Alloc PE / Size 1142 / 35.69 GB
Free PE / Size 1041 / 32.53 GB
VG UUID bhm6TK-1PI5-rdBw-HUSU-1NZI-zgmf-vQeh6t

On crée un nouveau VG avec ce PV fraichement libéré

vgcreate VGSVG /dev/cciss/c0d1p1
Volume group "VGSVG" successfully created

On cree un LV dans ce nouveau VG

lvcreate -L 30G VGSVG -n lv_backup_01
Logical volume "lv_backup_01" created

On format en ext3

mkfs.ext3 /dev/mapper/VGSVG-lv_backup_01
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
3932160 inodes, 7864320 blocks
393216 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
240 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

Pour gagner un peux d'espace

tune2fs -m1 /dev/mapper/VGSVG-lv_backup_01
tune2fs 1.39 (29-May-2006)
Setting reserved blocks percentage to 1% (78643 blocks)

Monter le File systeme

On créer un repertoire de montage, on adapte le fichier /etc/fstab et on monte les partitions non monté, puis on contrôle

mkdir -p /backup/bck001
vi /etc/fstab
mount -a
df -mP | grep bck001
/dev/mapper/VGSVG-lv_backup_01 30238 173 29759 1% /backup/bck001

Redimensionnement avancé

Reduire un lv reste simple mais reduire le lv qui est monter sur / est deja plus complexe. il faut booter sur un CD de votre distribution et taper linux rescue au boot du cd. A la question monter le reseau vous pouvez repondre "non", ce n'est pas necessaire. A la question : [ Fenetre Secours ] Chercher a monter les environnements ... Cliquer sur ignorer et surtout pas sur continuer. A ce moment vos partitions ne sont pas monter et les VL ne sont pas visible. Dans cette environnement certaines des commande habituellement utilisées ne sont pas disponible. Pour l'exemple nous dirons que / et monter sur le VL lv_name qui est dans le vg vg_name Le LV a une taille de 10 Go il contient actuellement 4 Go de donnée Nous voulons qui 'il est une taille de 5 Go

Rendons visible les VL

vgchange -a y

un petit check du FS

e2fsck -f /dev/vg_name/lv_name

on reduit la taille du FS

Attention au systeme de fichier pour ext3 et ext4

resize2fs -f /dev/vg_name/lv_name 5G

Pour XFS

a definir

on reduit la taille du LV

lvm lvreduce -L5G /dev/vg_name/lv_name

un petit check du file systeme

e2fsck -f /dev/vg_name/lv_name

il ne reste plus qu'a rebooter votre machine et le tour est joué

Renommer un VG

Démonter tous les LV du VG monté Il faut désactivé le vg avant de le renommer, puis réactivé le nouveau VG

vgchange -a n monvg
vgrename /dev/monvg /dev/nouveau_vg
vgchange -a y nouveau_vg

Modifier votre fichier /etc/fstab en concequence

Snapshot d'un Volume Logique

Un snapshot creer un lv supplementaire qui servira a écrire les nouvelles données. De ce fait le lv original ce trouve en lecture seul.

Pour cette raison, avant de créer un snapshot d'un Volume Logique, il faut :

- Savoir de combien d'espace le volume logique sera modifier pendant le temp necessaire a votre manipulation.

- Verifier que le VG hebergean le lv est l'espace necessaire a creer le snapshoot.

lvcreate -s -L 1000M -n lv_root01 /dev/root_vg/lv_root

On peut visualiser le snap avec la commande

lvs ou lvdisplay

Monter le Snapshoot

il est possible de monter le fs qui n'est plus mis a jour afin de le sauvegardé en utilisant l'option "nouuid" de mount.

mount -onouuid /dev/root_vg/lv_root01 /rep/de/sauvegarde

Attention : le lv a monter est bien celui portant le nom du snapshot, la représentation n'est pas simple au premiere abort mais au final est tres logique. En fait, c'est comme si ls device d'origine été renomé avec le nom indiquer comme snashot et que le nouveau lv ce nommer avec le nom du device d'origine. Il sert a ce moment de spool des action a effectuer sur l'original.

Liens et DOC

[http://www.howtoforge.com/linux_lvm_p2] [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5]