LVM2

Lvm, lvm, mais qu'est-ce donc ?

Bonne question ! LVM signifie Logical Volume Manager, information relativement facile à trouver.. mais encore?

Bon, commençons par le début.. Comment fonctionne la gestion des disques? Tout d'abord, on à le disque physique (disons l'armoire), ensuite on crée une 'capsule' (la table de partitions) qui va servir à référencer/lister les différentes partitions (en gros les "étagères" a l'intérieur de l'armoire). Par défaut, sous windows, on ne crée qu'une seule partition (dans ce cas, le disque dur ressemble plus à une malle qu'à une armoire mais bon, passons :D)
Quand on commence à vouloir affiner un peu la gestion de l'espace disque, on va très vite créer différentes partitions; sous windows c'est généralement une pour le système et une pour les données (histoire de ne rien perdre quand on réinstalle), on peut aussi décider de consacrer une partition au programmes ne nécessitant pas de réinstallation.. Sous linux, on crée généralement un peu plus de partition, au minimum une pour le swap (un espace du disque dur qui sert -tout comme la mémoire vive aux temps d'accès prêts- aux données temporaires), une pour la racine ("/" racine de l'arborescence, tout va dedans par défaut, mais on peut alléger le contenu en créant des point de montages => autres partitions), une pour les répertoires utilisateurs ("/home") qui contiendra les données/paramètres/préférences de chaque utilisateur (ou sur un serveur plutôt "/var" qui contient souvent les données de publication; sites web, bases de données, fichiers de logs [journaux] ...)

Bref, diviser pour mieux régner comme on dit. Partitionner permet de sectoriser les données et de limiter la casse en cas de pépin au niveau du système d'exploitation. Sous linux, l'un des intérêts des points de montage, c'est qu'on peut très bien ajouter un disque complet à la place d'une partition, et donc disposer d'un disque juste pour les répertoires utilisateurs par exemple (sous windows c'est plus délicat..)
Ceci dit, si on peut avoir une idée générale de la taille à attribuer à chaque partition (donc à chaque étagère de notre armoire) selon ce que l'on va y mettre, les choses -en informatique comme ailleurs- se passent rarement comme prévu, et on en arrive fréquemment à un "ah zut, j'aurais du mettre plus d'espace ici et mois là". Seulement, voilà, c'est particulièrement compliqué de modifier les partition quand elles sont remplies. Il y'a pas mal d'outils pour gérer ça "a froid" (comme partition magic, partition resizer, [qt/g]parted etc..) mais tous les systèmes de fichiers ne sont pas gérés, et pas forcément bien (donc attention aux données). Dans une utilisation domestique cela suffit tout de même assez bien.
Il y'a cependant un autre cas de figure qui n'est absolument pas couvert par ces outils; c'est les partitions multidisques. Qu'est-ce que j'entends par là? Et bien tout simplement le fait d'avoir une partition qui occupe plusieurs disques.
Il y'a plusieurs solutions qui permettent de gérer cela: les différents raids (plus exactement raid0,0+1 et raid5 -voir JBOD si on peut  parler de raid), le système de disque dynamique de windows (qui en gros reproduit de façon logicielle les raids matériels), les raids logiciels sous linux (oui, bon, encore une fois la même chose tournée différemment) et le LVM.

Petit états des différentes solutions (j'ignore volontairement les raid logiciels 0 et 5 qui n'apportent rien en terme de possibilité par rapport a du raid matériel, et "coûtent" plus cher en performance -moins en terme de prix c'est vrai, mais là n'est pas le débat). Je pars du principe pour le tableau ci dessous que les données nécessitent absolument d'être répliquées

Nom de la solution

LVM

Raid JBOD

Raid 0

Raid5

Volume fractionné

Système

Linux

Matériel

Matériel

Matériel

Windows

Evolutivité

Bonne

(Ajout d’un disque dans le lvm, possibilité
de remplacer un disque: déplacement des données,
redimensionnement du volume logique et de la partition)

Mauvaise

(Ajout de disques possible, remplacement nécessite
reconstruction intégrale)

Aucune

(reconstruction intégrale du premier, copie
des données depuis le second, reconstruction intégrale
du second, puis resynchronisation des données)

Aucune

(reconstruction intégrale du premier, copie
des données depuis le second, reconstruction intégrale
du second, puis resynchronisation des données).

Remplacement de tous les disques à la fois)

Mauvaise

(Ajout de disques possible, remplacement nécessite
reconstruction intégrale)

Prévention de panne

(remplacement préventif de disque)

Voir évolutivité

Bonne

Aucune

Aucune

Bonne

Aucune

Facilité de paramétrage

Moyenne

(ligne de commande
Linux => plutôt simple mais dépend des
connaissances des utilisateurs)

Bonne

(Interface de la carte, sauf si elle est très
mal foutue)

Bonne

(Interface de la carte, sauf si elle est très
mal foutue)

Bonne

(Interface de la carte, sauf si elle est très
mal foutue)

Bonne

(Interface windows conviviale)

Tolérance de panne disque

Faible
(selon dommage du disque et perte de données; il est possible de remplacer un disque, mais il faut qu'il fonctionne encore suffisament pour en récupérer les données)

Aucune

Aucune

Bonne

(remplacement du
disque)

Aucune

Performances

Standard

Standard

Bonnes

(tire profit du multi
disque)

Mauvaises

(calcul et écriture
des informations de parité)

Standard

Disques de données

(on considère X comme le nombre max de disque supporté dans la machine,  Y le max sur un controlleur/nappe -suivant techno-)

1 à X (X-1 pour evolutivité)


2 à Y


2 à Y


3 à Y Identiques

1 à X


Bref, pour une solution souple, le LVM apporte pas mal d'avantages. On pourrait discuter des arguments retenus, mais il est ici question du LVM, et les informations relatives aux autres outils/options sont plus là pour aider à situer le LVM que pour être débatues. (Et concernant l'aspect sécurité des données, il est toujours possible pour le lvm comme pour du raid 0 ou jbod de faire un raid 1 par dessus)

Bon, ok, maintenant on sait ce qu'est le lvm, mais alors comment ca marche ?

Le lvm peut donc servir aussi bien à redimensionner facilement ses partitions, qu'à les étendre sur plusieurs disques.. assez mystérieux comme fonctionnement? Pas tant que cela quand on comprend que LVM fonctionne en strates (couches).

Tout d'abord, on a les disques physiques, puis des partitions classiques. C'est après que l'on entre dans le LVM. Les partitions sont associées à des "Volumes Physiques", ceux ci sont alors regroupés en "Groupes de volumes" (ce qui dans un système classique correspond à un disque dur), et dans les groupes de volumes, on crée des "Volumes Logiques" (qui correspondent aux partitions habituelles).

Mise en place ...

Partons du principe que l'on dispose de 2 disques scsi de 36Go (/dev/sda et /dev/sdb puisque nous sommes sous linux) et que l'on souhaites disposer d'un point de montage de 60Go et un de 12 (a quelques Mo prêts, car le LVM tout comme le partitionnement grignote un peu de place pour stocker les informations)
La première étape, on l'a vu est de créer des partitions. Puisqu'ici on va utiliser le LVM pour s'affranchir des limites d'espace d'un disque et pas seulement pour pouvoir jongler avec la taille des partitions, on va directement créer des partitions occupant l'intégralité de chaque disque. Les partitions doivent être de type linux (type 83 sous cfdisk & fdisk). Cela nous donnera donc 2 partitions: /dev/sda1 & /dev/sdb1
On va ensuite "jongler" avec les commandes de LVM2. Il faut savoir que toutes ces commandes commencent par le type de manipulation auxquelles elle relatent. Pour les volumes physique (Physical Volume en anglais), les commandes commencent donc par pv, pour les groupes de volumes (Volume Group) tout commence par vg et pour les volumes logiques (Logical Volume) par lv.

 

Création des volumes des "Volumes physiques"

La commande pour créer un volume physique est aussi simple que "pvcreate <partition>".
On saisira donc les deux commandes suivante:
#pvcreate /dev/sda1
#pvcreate /dev/sdb1
On peut afficher la liste/état des volumes physiques grâce à la commande "pvdisplay"

Création du "Groupe de volumes"

Pour créer un groupe de volumes on utilise "vgcreate <group> <volumephysique>" (on peut adresser un volume physique par la partition sous jacente), tandisque pour ajouter un nouveau volume physique à un groupe existant, on utilise "vgextend <group> <volumephysique>" . Pour creer un groupe de volume intitulé 'Groupe' On saisira donc les deux commandes suivante:
#vgcreate Groupe /dev/sda1(cree le groupe de volume avec le premier volume physique)
#vgextend Groupe /dev/sdb1(ajoute le second volume physique au groupe de volume)
On peut afficher la liste/état des volumes physiques grâce à la commande "vgdisplay"

Création des "Volumes logiques"

Créer un volume logique n'est pas compliqué non plus; "lvcreate -v -L<TailleEnGigas>G -n<NomDuVolumeLogique> <group>".
Pour l'exemple, on va creer deux volume logiques Datas (60G) et Datas2 (12G) (suggestion, verifier la pace exactement disponible a cet instant avec vgdisplay Groupe):
#lvcreate -v -L60G -nDatas Groupe
#lvcreate -v -L12G -nDatas2 Groupe
On peut afficher la liste/état des volumes physiques grâce à la commande "lvdisplay"

Création des systèmes de fichiers

Maintenant que nos volumes logiques sont crées, il s'utilisent peu ou prou exactement comme des partitions dans un système classique. On va donc les formater (en prennant soin de le faire en reiserfs, pour le moment c'est le meilleur choix en ce qui concerne le changement de taille, ext2/3 et xfs marchent aussi [xfs ne peut pas etre retreci!!] mais a priori reiser est plus sur -ce qui ne doit pas empecher la sauvegarde préalable !!-)
#mkreiserfs /dev/Groupe/Datas
#mkreiserfs /dev/Groupe/Datas2

Et voila, c'est pret à être utilisé, il ne vous reste qu'à placer les points de montage.
Evidement, il reste des points a aborder, comme le remplacement de disque ou le redimensionnement de volume logique.

 

Remplacer un disque

Tant qu'à faire... on va aborder le remplacement disque sous l'angle évolutivité (donc ajout d'espace); remplacons 1 de nos 36Go SCSI (on va dire sdb, mais ca pourrait sans aucune différence etre sda) par un 120G ide (pourquoi ide? juste histoire de dire que la technologie matérielle ne compte pas vraiement, qu'on peut mixer. Ok, j'aurais pu prendre du Sata, mais je ne sais pas lequel du sata ou du scsi se serait retrouvé en premier ;) )
(Attention, il est plus que conseillé de sauvegarder et démonter les points de montages)
Bon, on vient donc de plugguer notre disque ide dans la machine, il est donc reconnu comme hda.. procedons comme on l'a vu précédement pour l'inclure dans le lvm (jusque là, c'est déja entièrement expliqué, je résumes juste les étapes)
-création de la partition hda1 avec l'outil de votre choix
-création du volume physique (#pvcreate /dev/hda1)
-intégration dans le groupe (#vgextend Groupe /dev/hda1)
Ok, il faut maintenant déplacer les données depuis sdb1 vers hda1 (et sda1 s'il reste de la place dessus en fait) sinon bobo quand on va enlever sdb non?
On fait cela avec la commande pvmove <VolumePhysiqueARetirer> ce qui nous donne
#pvmove /dev/sdb1
Ok, notre disque scsi est presque pret pour le retrait, il ne reste qu'à l'enlever du groupe de volume; grace à la commande vgreduce Groupe VolumePhysique, ce qui nous donne
#vgreduce Groupe /dev/sdb1
Et voila, vous pouvez retirer le disque quand vous voulez, il n'est plus utilisé.
Si vous avez remplacé par un disque identique parceque décidement le claquement du disque précédent ne vous plaisait pas, vous pouvez en rester là.. si c'était pour ajouter un nouveau point de montage, vous savez faire aussi, il suffit d'ajouter un nouveau volume logique.
Maintenant, comme on a prévu d'étendre nos volumes logiques... autant expliquer comment faire (Démontage de point de montage indispensable, sauvegarde archi conseillée !)
Pour modifier la taille du point de montage, on utilise lvresize -v -L<+/-><TailleEnGigaAjouteeRetiree>G <VolumeLogique>, dans notre cas, on on va agrandir Datas, de 60 à 80G, on ajoute donc 20G
#lvresize -v -L+20G /dev/Groupe/Datas
Notre volume logique est agrandi, reste a agrandir le systeme de fichier (resize_reiserfs  -s<+|-><TailleAAjouterRetirer>G <VolumeLogique> pour du reiser, resize2fs <VolumeLogique> <nouvelleTaille> pour ext2/3)
#resize_reiserfs  -s+20G /dev/Groupe/Datas

 Et voila... on peut remonter le système de fichier, et tout roule, on dispose de 20G de plus :)

 

Powered by Drupal, an open source content management system
titrepage = document.title */ ?>