Introduction aux concepts, à la terminologie et aux opérations de LVM

introduction

LVM, ou Logical Volume Management, est une technologie de gestion des périphériques de stockage qui donne aux utilisateurs la possibilité de regrouper et d'abstraire la disposition physique des périphériques de stockage des composants pour une administration plus simple et flexible. À l'aide du mappeur de périphériques, l'infrastructure du noyau Linux, l'itération en cours, LVM2, peut être utilisée pour regrouper des périphériques de stockage existants en groupes et pour allouer des unités logiques à partir de l'espace combiné en fonction des besoins.

Les principaux avantages de LVM sont l’abstraction accrue, la flexibilité et le contrôle. Les volumes logiques peuvent avoir des noms significatifs tels que «bases de données» ou «sauvegarde-racine». Les volumes peuvent être redimensionnés de manière dynamique en fonction des besoins en espace et migrés entre les périphériques physiques du pool sur un système en cours d'exécution ou facilement exportés. LVM offre également des fonctionnalités avancées telles que la capture instantanée, la répartition et la mise en miroir.

Dans ce guide, nous expliquerons brièvement le fonctionnement de LVM, puis présenterons les commandes de base nécessaires pour pouvoir fonctionner rapidement.

Architecture et terminologie LVM

Avant de plonger dans les commandes administratives LVM, il est important de bien comprendre comment LVM organise les périphériques de stockage et une partie de la terminologie employée.

Structures de gestion de stockage LVM

LVM fonctionne en superposant des abstractions sur des périphériques de stockage physiques. Les couches de base utilisées par LVM, en commençant par la plus primitive, sont.

  • Physical Volumes:

    • LVM utility prefix:pv...

    • Description: Les périphériques de bloc physique ou d'autres périphériques de type disque (par exemple, d'autres périphériques créés par le mappeur de périphériques, comme les matrices RAID) sont utilisés par LVM comme matériau de construction brut pour des niveaux d'abstraction plus élevés. Les volumes physiques sont des périphériques de stockage réguliers. LVM écrit un en-tête sur le périphérique pour l'affecter à la gestion.

  • Volume Groups:

    • LVM utility prefix:vg...

    • Description: LVM combine les volumes physiques dans des pools de stockage appelés groupes de volumes. Les groupes de volumes décrivent les caractéristiques des périphériques sous-jacents et fonctionnent comme un périphérique logique unifié avec une capacité de stockage combinée des volumes physiques des composants.

  • Logical Volumes:

    • LVM utility prefix:lv... (les utilitaires LVM génériques peuvent commencer parlvm...)

    • Description: un groupe de volumes peut être divisé en un nombre quelconque de volumes logiques. Les volumes logiques sont fonctionnellement équivalents aux partitions d’un disque physique, mais avec beaucoup plus de flexibilité. Les volumes logiques constituent le composant principal avec lequel les utilisateurs et les applications vont interagir.

En résumé, LVM peut être utilisé pour combiner des volumes physiques dans des groupes de volumes afin d'unifier l'espace de stockage disponible sur un système. Ensuite, les administrateurs peuvent segmenter le groupe de volumes en volumes logiques arbitraires, qui agissent comme des partitions flexibles.

Que sont les étendues?

Chaque volume d'un groupe de volumes est segmenté en petits morceaux de taille fixe appelésextents. La taille des étendues est déterminée par le groupe de volumes (tous les volumes du groupe sont conformes à la même taille).

Les extensions sur un volume physique sont appeléesphysical extents, tandis que les extensions d'un volume logique sont appeléeslogical extents. Un volume logique est simplement un mappage que LVM maintient entre les étendues logiques et physiques. En raison de cette relation, la taille de l'étendue représente la plus petite quantité d'espace pouvant être allouée par LVM.

Les extensions sont en grande partie à l’origine de la flexibilité et de la puissance de LVM. Les extensions logiques présentées en tant que périphérique unifié par LVM ne doivent pas être mappées sur des extensions physiques continues. LVM peut copier et réorganiser les extensions physiques qui composent un volume logique sans interruption pour les utilisateurs. Les volumes logiques peuvent également être facilement développés ou réduits en ajoutant ou en supprimant des extensions du volume.

Le cas d'utilisation simple

Maintenant que vous connaissez la terminologie et les structures utilisées par LVM, nous pouvons explorer quelques méthodes courantes d’utilisation de LVM. Nous allons commencer par une procédure de base qui utilise deux disques physiques pour former quatre volumes logiques.

Marquer les périphériques physiques en tant que volumes physiques

Notre première étape consiste à analyser le système à la recherche de périphériques bloqués que LVM peut voir et gérer. Vous pouvez le faire en tapant:

sudo lvmdiskscan

La sortie affiche tous les blocs disponibles avec lesquels LVM peut interagir:

Output  /dev/ram0  [      64.00 MiB]
  /dev/sda   [     200.00 GiB]
  /dev/ram1  [      64.00 MiB]

  . . .

  /dev/ram15 [      64.00 MiB]
  /dev/sdb   [     100.00 GiB]
  2 disks
  17 partitions
  0 LVM physical volume whole disks
  0 LVM physical volumes

La sortie ci-dessus montre qu’il existe actuellement deux disques et 17 partitions. Les partitions sont principalement des partitions/dev/ram* qui sont utilisées par le système en tant queRam disk pour améliorer les performances. Les disques de cet exemple sont/dev/sda, qui a 200G d'espace, et/dev/sdb, qui a 100G.

[.warning] #Warning: Assurez-vous de bien vérifier que les périphériques que vous avez l'intention d'utiliser avec LVM ne contiennent pas de données importantes déjà écrites. L'utilisation de ces périphériques dans LVM écrasera le contenu actuel. Si vous avez déjà des données importantes sur votre serveur, effectuez des sauvegardes avant de continuer.
#

Maintenant que nous connaissons les périphériques physiques que nous voulons utiliser, nous pouvons les marquer comme volumes physiques dans LVM à l'aide de la commandepvcreate:

sudo pvcreate /dev/sda /dev/sdb
Output  Physical volume "/dev/sda" successfully created
  Physical volume "/dev/sdb" successfully created

Ceci écrira un en-tête LVM sur les périphériques pour indiquer qu'ils sont prêts à être ajoutés à un groupe de volumes.

Vous pouvez rapidement vérifier que LVM a enregistré les volumes physiques en tapant:

sudo pvs
Output  PV         VG   Fmt  Attr PSize   PFree
  /dev/sda        lvm2 ---  200.00g 200.00g
  /dev/sdb        lvm2 ---  100.00g 100.00g

Comme vous pouvez le voir, les deux périphériques sont présents sous la colonnePV, qui correspond au volume physique.

Ajouter les volumes physiques à un groupe de volumes

Maintenant que nous avons créé des volumes physiques à partir de nos périphériques, nous pouvons créer un groupe de volumes. Nous devrons choisir un nom pour le groupe de volumes, que nous garderons générique. La plupart du temps, vous ne disposerez que d'un seul groupe de volumes par système pour une flexibilité maximale dans l'allocation. Nous appellerons notre groupe de volumesLVMVolGroup pour plus de simplicité.

Pour créer le groupe de volumes et y ajouter nos deux volumes physiques en une seule commande, tapez:

sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
Output  Volume group "LVMVolGroup" successfully created

Si nous vérifions à nouveau la sortie depvs, nous pouvons voir que nos volumes physiques sont maintenant associés à un nouveau groupe de volumes:

sudo pvs
Output  PV         VG          Fmt  Attr PSize   PFree
  /dev/sda   LVMVolGroup lvm2 a--  200.00g 200.00g
  /dev/sdb   LVMVolGroup lvm2 a--  100.00g 100.00g

Nous pouvons voir un bref résumé du groupe de volumes lui-même en tapant:

sudo vgs
Output  VG          #PV #LV #SN Attr   VSize   VFree
  LVMVolGroup   2   0   0 wz--n- 299.99g 299.99g

Comme vous pouvez le constater, notre groupe de volumes comporte actuellement deux volumes physiques, aucun volume logique et la capacité combinée des périphériques sous-jacents.

Création de volumes logiques à partir du pool de groupes de volumes

Maintenant que nous avons un groupe de volumes disponible, nous pouvons l'utiliser comme pool à partir duquel nous pouvons allouer des volumes logiques. Contrairement au partitionnement classique, lorsque vous travaillez avec des volumes logiques, vous n'avez pas besoin de connaître la disposition du volume, car LVM mappe et gère cela pour vous. Vous devez uniquement fournir la taille du volume et un nom.

Nous allons créer quatre volumes logiques distincts à partir de notre groupe de volumes:

  • Volume «projets» 10G

  • Volume 5G «www» pour le contenu Web

  • 20G “db” volume pour une base de données

  • “Espace de travail” volume qui remplira l'espace restant

Pour créer des volumes logiques, nous utilisons la commandelvcreate. Nous devons passer dans le groupe de volumes à partir duquel extraire, et pouvons nommer le volume logique avec l'option-n. Pour spécifier directement la taille, vous pouvez utiliser l'option-L. Si, à la place, vous souhaitez spécifier la taille en termes de nombre d'extensions, vous pouvez utiliser l'option-l.

Nous pouvons créer les trois premiers volumes logiques avec l'option-L comme ceci:

sudo lvcreate -L 10G -n projects LVMVolGroup
sudo lvcreate -L 5G -n www LVMVolGroup
sudo lvcreate -L 20G -n db LVMVolGroup
Output  Logical volume "projects" created.
  Logical volume "www" created.
  Logical volume "db" created.

Nous pouvons voir les volumes logiques et leur relation avec le groupe de volumes en sélectionnant une sortie personnalisée à partir de la commandevgs:

sudo vgs -o +lv_size,lv_name
Output  VG          #PV #LV #SN Attr   VSize   VFree   LSize  LV
  LVMVolGroup   2   3   0 wz--n- 299.99g 264.99g 10.00g projects
  LVMVolGroup   2   3   0 wz--n- 299.99g 264.99g  5.00g www
  LVMVolGroup   2   3   0 wz--n- 299.99g 264.99g 20.00g db

Nous avons ajouté les deux dernières colonnes de sortie afin de pouvoir visualiser l'espace alloué à nos volumes logiques.

Maintenant, nous pouvons allouer le reste de l'espace dans le groupe de volumes au volume «espace de travail» en utilisant l'indicateur-l, qui fonctionne par extension. Nous pouvons également fournir un pourcentage et une unité pour mieux communiquer nos intentions. Dans notre cas, nous souhaitons allouer l'espace libre restant, afin de pouvoir passer en100%FREE:

sudo lvcreate -l 100%FREE -n workspace LVMVolGroup
Output  Logical volume "workspace" created.

Si nous revérifions les informations du groupe de volumes, nous pouvons voir que nous avons utilisé tout l'espace disponible:

sudo vgs -o +lv_size,lv_name
Output  VG          #PV #LV #SN Attr   VSize   VFree LSize   LV
  LVMVolGroup   2   4   0 wz--n- 299.99g    0   10.00g projects
  LVMVolGroup   2   4   0 wz--n- 299.99g    0    5.00g www
  LVMVolGroup   2   4   0 wz--n- 299.99g    0   20.00g db
  LVMVolGroup   2   4   0 wz--n- 299.99g    0  264.99g workspace

Comme vous pouvez le constater, le volume «workspace» a été créé et le groupe de volumes «LVMVolGroup» est complètement alloué.

Formater et monter les volumes logiques

Maintenant que nous avons des volumes logiques, nous pouvons les utiliser comme périphériques de bloc normaux.

Les périphériques logiques sont disponibles dans le répertoire/dev comme les autres périphériques de stockage. Vous pouvez y accéder à deux endroits:

  • /dev/volume_group_name/logical_volume_name

  • /dev/mapper/volume_group_name-logical_volume_name

Donc, pour formater nos quatre volumes logiques avec le système de fichiers Ext4, nous pouvons taper:

sudo mkfs.ext4 /dev/LVMVolGroup/projects
sudo mkfs.ext4 /dev/LVMVolGroup/www
sudo mkfs.ext4 /dev/LVMVolGroup/db
sudo mkfs.ext4 /dev/LVMVolGroup/workspace

Ou nous pouvons taper:

sudo mkfs.ext4 /dev/mapper/LVMVolGroup-projects
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-www
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-db
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-workspace

Après le formatage, nous pouvons créer des points de montage:

sudo mkdir -p /mnt/{projects,www,db,workspace}

Nous pouvons ensuite monter les volumes logiques à l'emplacement approprié:

sudo mount /dev/LVMVolGroup/projects /mnt/projects
sudo mount /dev/LVMVolGroup/www /mnt/www
sudo mount /dev/LVMVolGroup/db /mnt/db
sudo mount /dev/LVMVolGroup/workspace /mnt/workspace

Pour rendre les montages persistants, ajoutez-les à/etc/fstab comme vous le feriez avec des périphériques de bloc normaux:

sudo nano /etc/fstab

/etc/fstab

. . .

/dev/LVMVolGroup/projects /mnt/projects ext4 defaults,nofail 0 0
/dev/LVMVolGroup/www /mnt/www ext4 defaults,nofail 0 0
/dev/LVMVolGroup/db /mnt/db ext4 defaults,nofail 0 0
/dev/LVMVolGroup/workspace /mnt/workspace ext4 defaults,nofail 0 0

Le système d'exploitation doit maintenant monter les volumes logiques LVM automatiquement au démarrage.

Conclusion

J'espère qu'à présent, vous aurez une assez bonne compréhension des différents composants que LVM parvient à créer pour créer un système de stockage flexible. Vous devez également avoir une compréhension de base sur la manière de mettre en place des périphériques de stockage dans une configuration LVM.

Ce guide ne traite que brièvement de la puissance et du contrôle que LVM fournit aux administrateurs de systèmes Linux. Pour en savoir plus sur l'utilisation de LVM, consultez nosguide to using LVM with Ubuntu 16.04.