Modifications entre les versions 4 et 16 (s'étendant sur 12 versions)
Version 4 à la date du 2007-06-19 11:28:17
Taille: 5345
Éditeur: ThomasNoël
Commentaire: migration depuis l'ancien wiki
Version 16 à la date du 2010-01-04 09:25:02
Taille: 7531
Commentaire:
Texte supprimé. Texte ajouté.
Ligne 3: Ligne 3:
Pour (trop) résumer en une phrase : LVM permet de créer des partitions "virtuelles" (volumes logiques) qui peuvent s'étendre sur plusieurs disques, être agrandies «à chaud», etc.   <<TableOfContents>>
Ligne 5: Ligne 5:
Quelques liens :
 * une excellente introduction : http://fr.wikipedia.org/wiki/LVM
 * Un tutoriel simple : http://sluce.developpez.com/lvm/
 * Un peu plus fouilli : http://www.lea-linux.org/cached/index/Leapro-pro_sys-lvm.html
 * Le système derrière tout ça : http://sources.redhat.com/lvm2/
Pour (trop) résumer en une phrase : LVM permet de créer des « partitions virtuelles » (volumes logiques) qui peuvent s'étendre sur plusieurs disques, être agrandies « à chaud », etc.
Ligne 13: Ligne 9:
Qu'est-ce que ça apporte ''concrétement'' ? Plus de souplesse et moins de contraintes dans la gestion du partitionnement. LVM est une architecture à trois niveaux :
 * volumes physiques : les disques et les partitions qui seront utilisés par le système LVM
 * groupes de volumes : ensemble de volumes physiques. On aime bien par exemple créer un groupe pour tout ce qui est IDE et un autre pour tout ce qui est SCSI. On peut voir cela comme des « disques virtuels ».
 * volumes logiques : les partitions qui sont présentées au système, et utilisables directement. Ces partitions sont des morceaux de groupes de volume. On peut voir cela comme des « partitions virtuelles ».
Ligne 15: Ligne 14:
La suite de cette page est un aperçu des possibilités, qui ne dispense pas de lire la documentation : page de {{{man lvm}}} et sites web indiqués ci-dessus.
Ligne 17: Ligne 15:
= Architecture à trois niveaux = Qu'est-ce que ça apporte ''concrètement'' ? Plus de souplesse et moins de contraintes dans la gestion du partitionnement.
Ligne 19: Ligne 17:
 * volume physique : les disques et les partitions qui seront utilisées par le système LVM
 * groupes de volumes : ensemble de volumes physiques. On aime bien par exemple créer un groupe pour tout ce qui est IDE et un autre pour tout ce qui est SCSI.
 * volumes logiques : les partitions qui sont présentées au système, et utilisables directement. Ces partitions sont des morceaux de groupes de volume.
La suite de cette page est un aperçu des possibilités, qui ne dispense pas de lire la documentation : page de `man lvm` et sites web indiqués ci-dessous :
 * une excellente introduction : http://fr.wikipedia.org/wiki/LVM
 * Un tutoriel simple : http://sluce.developpez.com/lvm/
 * Un peu plus fouilli : http://www.lea-linux.org/documentations/index.php/Leapro-pro_sys-lvm
 * Le système derrière tout ça : http://sources.redhat.com/lvm2/
Ligne 23: Ligne 23:
= Les principales commandes = == Les principales commandes ==
Ligne 25: Ligne 25:
Consulter les man pour une description détaillée de tous les paramètres de chaque commande : ils sont très bien faits. Voir également {{{man lvm}}}. Consulter les man pour une description détaillée de tous les paramètres de chaque commande : ils sont très bien faits. Voir également `man lvm`.
Ligne 28: Ligne 28:
 * {{{pvcreate}}} pour initialiser un volume physique, afin de pouvoir l'ajouter à un groupe :
  {{{pvcreate /dev/hdc}}} pour dire que le disque hdc entier devient un volume physique
  {{{pvcreate /dev/sda2}}} pour dire que la partition sda2 devient un volume physique (sda2 doit être du type "Linux LVM")
 * {{{pvdisplay}}} pour afficher la liste des volumes physiques disponibles
 * `pvcreate` pour initialiser un volume physique, afin de pouvoir l'ajouter à un groupe :
 . `pvcreate /dev/hdc` pour dire que le disque `hdc` entier sera utilisé comme un volume physique
 . `pvcreate /dev/sda2` pour dire que la partition `sda2` sera utilisée comme un volume physique (`sda2` doit être du type ''Linux LVM'' pour un fonctionnement automatisé)
 * `pvs` pour afficher un résumé sur les volumes physiques disponibles et `pvdisplay` pour les détails
Ligne 33: Ligne 33:
'''Groupes de volumes''' (les «disques virtuels»)
 * {{{vgcreate}}} pour créer des groupes à partir de volumes physiques
  {{{vgcreate donnees /dev/sda2 /dev/sdb1}}} : créer un groupe ''donnees'' contenant les partitions sda2 et sdb1
 * {{{vgextend}}} pour ajouter un nouveau volume physique à un groupe
  {{{vgextend donnees /dev/sdc}}} : ajoute le disque sdc au groupe ''donnees''
 * {{{vgdisplay}}} pour afficher la liste des groupes disponibles
'''Groupes de volumes''' (les « disques virtuels »)
 * `vgcreate` pour créer des groupes à partir de volumes physiques
 . `vgcreate donnees /dev/sda2 /dev/sdb1` : créer un groupe `donnees` contenant les partitions `sda2` et `sdb1`
 * `vgextend` pour ajouter un nouveau volume physique à un groupe
 . `vgextend donnees /dev/sdc` : ajoute le disque `sdc` au groupe `donnees`
 * `vgs` pour afficher un résumé sur les groupes de volumes disponibles et `vgdisplay` pour les détails
Ligne 40: Ligne 40:
'''Volumes logiques''' (les «partitions virtuelles»)
 * note préliminaire importante : pour l'instant ''grub'' ne peut pas booter sur un volume logique. Il faut donc prévoir de laisser la racine ou au moins ''/boot'' en partition non LVM.
 * {{{lvdisplay}}} affiche la liste des volumes logiques déjà définis
 * {{{lvcreate}}} pour créer un volume logique (c'est à dire une partition utilisable par le système) dans un des groupes de volumes du système.
  {{{lvcreate -n web -L 10G donnees}}} va créer un volume {{{/dev/donnees/web}}} de 10Go puisés dans le groupe {{{donnees}}}. Cette partition sera utilisable de façon habituelle :
  {{{
'''Volumes logiques''' (les « partitions virtuelles »)
 * note préliminaire importante : pour l'instant `grub` ne peut pas démarrer sur un volume logique. Il faut donc prévoir de laisser le `/boot` sur une partition non LVM.
 * `lvcreate` pour créer un volume logique, c'est à dire une partition utilisable par le système, dans un des groupes de volumes
 . `lvcreate -n web -L 10G donnees` crée un volume `/dev/donnees/web` de 10 Go puisés dans le groupe `donnees`. Cette partition sera utilisable de façon habituelle :
 . {{{
Ligne 48: Ligne 47:
mount /dev/donnees/web # montage de la partition... (à fixer dans /etc/fstab ensuite) mount /dev/donnees/web /srv/web # montage de la partition... (à ajouter dans /etc/fstab ensuite)
}}}
 * `lvs` pour afficher un résumé sur les volumes logiques disponibles et `lvdisplay` pour les détails

== Changer la taille d'un volume logique ==

C'est le point fort de LVM : on peut changer « à chaud » la taille d'une « partition », alors que le système fonctionne en production.

=== Agrandir ===

La commande `lvextend` permet d'augmenter la taille d'un volume logique.

Exemple : `lvextend -L +2G /dev/donnees/exemple`

Où `donnees` est le nom du groupe de volumes (''VG'') et `exemple` le nom du volume logique (''LV'') dans ce groupe.

Attention, cela n'augmente que la taille de la partition ! Il faut ensuite ajuster le système de fichier, avec `resize2fs` ou `resize_reiserfs`, suivant les cas.

Attention, le `resize2fs` livré en standard (hors backports) avec Debian Sarge ne peut ajuster que la taille d'une partition non montée. Il est temps de migrer en Debian Etch !

=== Diminuer ===

Avec `lvreduce`, opération inverse de `lvextend`. Attention, procéder '''d'abord''' à la réduction de taille du système de fichiers avec les commandes `resizexxx` '''avant''' de diminuer la taille de la partition elle-même. En général cette opération ne peut pas être réalisée « à chaud », il faut d'abord démonter la partition, et donc souvent arrêter les services de la machine qui utilisent la partition.
Voici un exemple simple pour une partition /home non utilisée par un processus en exécution dont on veut ramener la taille à 5G:
{{{
# umount /home
# e2fsck -f /dev/system/home
;; on fixe d'abord la taille du système de fichier à une valeur inférieure à la valeur cible
# resize2fs -p /dev/system/home 4G
# lvresize -L 5G /dev/systeme/home
;; on redimensionne pour prendre tout l'espace possible, soit 5G.
# resizefs /dev/systeme/home
# mount /home
Ligne 51: Ligne 82:
= Changer la taille d'un volume logique = == Retirer un disque ==
Ligne 53: Ligne 84:
C'est le point fort de LVM : on peut agrandir une partition «à chaud», alors que le système fonctionne. Autre point fort : on peut retirer un disque jugé défectueux afin de le remplacer avant la panne définitive. Le premier qui a du temps écrit comment ici. ;-)
Ligne 55: Ligne 86:
== Agrandir == == Les snapshots ==
Ligne 57: Ligne 88:
La commande {{{lvextend}}} permet de changer la taille d'un volume logique : Cela permet de créer une copie d'une partition en cours d'utilisation, en utilisant très peu d'espace supplémentaire (mais ça peut monter à 20% de la taille d'origine tout de même) : seulement un nombre de blocs proportionnel aux modifications faites sur la partition en cours d'utilisation à partir du moment de la création de l'image. On utilise pour cela la commande `lvcreate --snapshot ...`. Pour pouvoir faire des snapshots, il faut que le module `dm-snapshot` soit chargé au préalable dans le noyau.
Ligne 59: Ligne 90:
  {{{lvextend -L +2 /dev/donnees/exemple}}} Quelques utilisations intéressantes :
 * les sauvegardes... quoique, sauvegarder des systèmes de fichiers n'est pas forcément une bonne méthode.
 * faire plusieurs serveurs quasi-identiques (par exemple des mini-serveurs web) à partir de snapshot d'un modèle
 * capturer l'état d'un système à un moment donné, par exemple juste avant une mise à jour critique ou la migration vers la nouvelle version majeure d'un logiciel ou encore du système entier
Ligne 61: Ligne 95:
Attention, cela n'augmente que la taille de la partition ! Il faut ensuite ajuster le système de fichier, avec {{{resize2fs}}} ou {{{resize_reiserfs}}}, suivant les cas. == Crash système ==
Question posée sur la liste tech@ : si j'ai un disque partitionné avec LVM, pourrai-je accéder à son contenu en utilisant un live CD ?
Ligne 63: Ligne 98:
Attention, en Debian Sarge, resize2fs ne peut ajuster que la taille d'une partition non montée. Réponse de JCA : Une partie de l'intelligence de la technique LVM se trouve dans le fait qu'elle enregistre ses informations dans les volumes eux-même. Il suffit donc que le LiveCD possède les outils LVM [par exemple un live CD ubuntu] pour pouvoir facilement accéder aux volumes sur le disque.
Ligne 65: Ligne 100:
== Diminuer == En revanche, il faudra déclencher manuellement la détection et l'activation normalement faite automatiquement au moment du démarrage de
la machine (dans le "initrd") en utilisant les commandes "vgscan" et "vgchange -a y".
Ligne 67: Ligne 103:
Avec {{{lvreduce}}}, opération inverse de lvextend. Attention, procéder '''d'abord'' à la diminution du filesystem avec les commandes {{{resizexxx}}} '''avant''' de diminuer la taille de la partition elle-même. En général cette opération ne peut pas être réalisée «à chaud», il faut d'abord démonter la partition et donc souvent arrêter les services de la machine qui utilisent la partition.


= Retirer un disque =

Autre point fort : on peut retirer un disque jugé défectueux afin de le remplacer avant la panne définitive. Le premier qui a du temps écrit comment ici ;)

= Les snapshots =

Cela permet de créer une copie d'une partition en cours d'utilisation, en utilisant trés peu d'espace supplementaire : seulement un nombre de blocs proportionnel aux modifications faites sur la partition en cours d'utilisation à partir du moment de la création de l'image. On utilise pour cela la commande {{{lvcreate --snapshot ...}}}. Pour pouvoir faire des snapshots, il faut que le module {{{dm-snapshot}}} soit chargé au préalable dans le noyau.

Utilisation intéressante : les sauvegardes.
----
[[CatégorieRecommandationsARI]]

LVM signifie Logical Volume Manager, c'est-à-dire Gestionnaire de Volumes Logiques.

Pour (trop) résumer en une phrase : LVM permet de créer des « partitions virtuelles » (volumes logiques) qui peuvent s'étendre sur plusieurs disques, être agrandies « à chaud », etc.

La gestion par volumes logiques permet une gestion de plus haut niveau des problèmes de stockage sur disque par rapport à l'approche traditionnelle avec des disques et des partitions. Cela apporte à l'administrateur système une bien meilleure flexibilité pour allouer de l'espace aux applications et aux utilisateurs.

LVM est une architecture à trois niveaux :

Qu'est-ce que ça apporte concrètement ? Plus de souplesse et moins de contraintes dans la gestion du partitionnement.

La suite de cette page est un aperçu des possibilités, qui ne dispense pas de lire la documentation : page de man lvm et sites web indiqués ci-dessous :

Les principales commandes

Consulter les man pour une description détaillée de tous les paramètres de chaque commande : ils sont très bien faits. Voir également man lvm.

Volumes physiques

Groupes de volumes (les « disques virtuels »)

Volumes logiques (les « partitions virtuelles »)

Changer la taille d'un volume logique

C'est le point fort de LVM : on peut changer « à chaud » la taille d'une « partition », alors que le système fonctionne en production.

Agrandir

La commande lvextend permet d'augmenter la taille d'un volume logique.

Exemple : lvextend -L +2G /dev/donnees/exemple

donnees est le nom du groupe de volumes (VG) et exemple le nom du volume logique (LV) dans ce groupe.

Attention, cela n'augmente que la taille de la partition ! Il faut ensuite ajuster le système de fichier, avec resize2fs ou resize_reiserfs, suivant les cas.

Attention, le resize2fs livré en standard (hors backports) avec Debian Sarge ne peut ajuster que la taille d'une partition non montée. Il est temps de migrer en Debian Etch !

Diminuer

Avec lvreduce, opération inverse de lvextend. Attention, procéder d'abord à la réduction de taille du système de fichiers avec les commandes resizexxx avant de diminuer la taille de la partition elle-même. En général cette opération ne peut pas être réalisée « à chaud », il faut d'abord démonter la partition, et donc souvent arrêter les services de la machine qui utilisent la partition. Voici un exemple simple pour une partition /home non utilisée par un processus en exécution dont on veut ramener la taille à 5G:

# umount /home
# e2fsck -f /dev/system/home
;; on fixe d'abord la taille du système de fichier à une valeur inférieure à la valeur cible
# resize2fs -p /dev/system/home 4G
# lvresize -L 5G /dev/systeme/home
;; on redimensionne pour prendre tout l'espace possible, soit 5G.
# resizefs /dev/systeme/home
# mount /home

Retirer un disque

Autre point fort : on peut retirer un disque jugé défectueux afin de le remplacer avant la panne définitive. Le premier qui a du temps écrit comment ici. ;-)

Les snapshots

Cela permet de créer une copie d'une partition en cours d'utilisation, en utilisant très peu d'espace supplémentaire (mais ça peut monter à 20% de la taille d'origine tout de même) : seulement un nombre de blocs proportionnel aux modifications faites sur la partition en cours d'utilisation à partir du moment de la création de l'image. On utilise pour cela la commande lvcreate --snapshot .... Pour pouvoir faire des snapshots, il faut que le module dm-snapshot soit chargé au préalable dans le noyau.

Quelques utilisations intéressantes :

Crash système

Question posée sur la liste tech@ : si j'ai un disque partitionné avec LVM, pourrai-je accéder à son contenu en utilisant un live CD ?

Réponse de JCA : Une partie de l'intelligence de la technique LVM se trouve dans le fait qu'elle enregistre ses informations dans les volumes eux-même. Il suffit donc que le LiveCD possède les outils LVM [par exemple un live CD ubuntu] pour pouvoir facilement accéder aux volumes sur le disque.

En revanche, il faudra déclencher manuellement la détection et l'activation normalement faite automatiquement au moment du démarrage de la machine (dans le "initrd") en utilisant les commandes "vgscan" et "vgchange -a y".


CatégorieRecommandationsARI

LVM (dernière édition le 2010-01-04 09:27:13 par NacerAdamouSaidou)