GNU/Linux >> Tutoriels Linux >  >> Linux

La gestion des volumes logiques expliquée sous Linux

Sous Linux, il peut être assez difficile de gérer le stockage et les systèmes de fichiers et il faut souvent beaucoup de commandes différentes pour déplacer des données.

Le stockage traditionnel est généralement composé de trois couches différentes :le disque physique (qu'il s'agisse d'un HDD ou d'un SSD), les partitions logiques créé dessus et le système de fichiers formaté sur la partition.

Cependant, ces trois couches sont généralement étroitement liées :il peut être assez difficile de réduire des partitions existantes pour en créer une nouvelle.

De même, il est assez difficile d'étendre un système de fichiers si vous ajoutez un nouveau disque à votre système :vous devrez déplacer des données d'un disque à un autre, ce qui entraînera parfois une perte de données .

Heureusement pour vous, il existe un outil, ou une abstraction que vous pouvez utiliser sous Linux pour gérer les stockages :LVM .

LVM , abréviation de Gestion des volumes logiques , se présente sous la forme d'un ensemble d'outils qui vous permet d'étendre, de réduire les volumes existants ainsi que de remplacer les disques existants pendant que le système est en cours d'exécution.

Dans ce tutoriel, nous allons en savoir plus sur LVM et comment vous pouvez facilement les mettre en œuvre sur votre système.

Couches LVM expliquées

Avant de commencer, il est important que vous puissiez bien comprendre comment LVM est conçu sur votre système .

Si vous avez déjà utilisé des périphériques de stockage classiques, vous connaissez déjà la relation entre les disques et les systèmes de fichiers.

Sous Linux, vous disposez de disques physiques automatiquement détecté et géré par udev lors de la première insertion.

Sur ces disques, vous pouvez créer des partitions en utilisant l'un des utilitaires populaires disponibles (fdisk, parted ou gparted).

Enfin, vous formater les systèmes de fichiers sur ces partitions afin de stocker vos fichiers.

Avec LVM, la conception du stockage est un peu différente.

Entre les partitions et les systèmes de fichiers, vous disposez de trois couches supplémentaires :les volumes physiques, les groupes de volumes et les volumes logiques.

Volume physique

Lorsque vous utilisez LVM, les volumes physiques sont censés représenter les partitions déjà existantes sur vos disques durs.

Lorsque les administrateurs système font référence à des "volumes physiques", ils désignent souvent le périphérique physique réel stockant des données sur notre système.

Les volumes physiques sont nommés de la même manière que les partitions physiques :/dev/sda1 pour la première partition de votre premier disque dur, /dev/sdb1 pour la première partition de votre deuxième disque et ainsi de suite.

Groupe de volumes

Juste au-dessus des volumes physiques, le groupe de volumes peut être considéré comme plusieurs volumes physiques regroupés pour former un seul volume.

Métaphoriquement, les groupes de volumes peuvent être considérés comme des ensembles de stockage :il s'agit d'un pool de différents volumes physiques qui peuvent être utilisés pour étendre des volumes logiques existants ou pour en créer de nouveaux.

Les groupes de volumes n'ont pas de convention de nom, mais il est communément admis qu'ils sont précédés du préfixe "vg" ("vg-storage ", "disques vg ” par exemple)

Volumes logiques

Enfin, les volumes logiques sont censés être des liens directs entre les groupes de volumes et les systèmes de fichiers formatés sur vos appareils.

Ils ont un entretien individuel relation avec les systèmes de fichiers et ils représentent essentiellement une partition de votre groupe de volumes.

Même si les volumes logiques sont nommés de la même manière que les points de montage, ce sont deux concepts différents et le volume logique est une entité très différente de votre système de fichiers.

Remarque :étendre votre volume logique ne signifie pas que vous allez automatiquement étendre votre système de fichiers par exemple.

Avantages de LVM par rapport à la gestion de disque standard

Logical Volume Management a été conçu en premier lieu pour corriger la plupart des lacunes associées à la gestion régulière des disques sous Linux.

L'un des principaux avantages de LVM est le fait que vous pouvez réassembler votre espace pendant que votre système est en cours d'exécution.

Modifier le stockage en direct

Comme vous l'avez probablement remarqué par le passé, votre stockage sur un hôte est étroitement couplé aux partitions écrites sur vos disques.

En conséquence, le reformatage d'une partition ou le réassemblage d'un système de fichiers sur une autre partition obligeait tout administrateur système à redémarrer le système .

Cela est principalement dû au fait que le noyau ne peut pas lire la table des partitions en direct et qu'il a besoin d'un redémarrage complet afin de pouvoir sonder les différentes partitions de votre système.

Cela peut évidemment être un problème majeur si vous avez affaire à un serveur de production :si votre site tourne sur ce serveur, vous ne pourrez pas le redémarrer sans que le site ne soit down.

Si votre site Web est en panne, cela signifie que vous ne pourrez probablement pas répondre aux besoins de vos clients, ce qui entraînera une perte d'argent.

LVM résout ce problème en créant une couche d'abstraction au-dessus des partitions régulières  :si vous n'avez pas affaire à des partitions régulières, vous n'avez plus besoin de relire la table des partitions, il vous suffit de mettre à jour le mappage de votre périphérique.

Avec ce choix de conception, la gestion du stockage devient un logiciel à logiciel problématique et ce n'est plus lié au matériel, du moins pas directement.

Répartir l'espace sur plusieurs disques

Un autre aspect intéressant de LVM est le fait que vous pouvez facilement répartir des données sur plusieurs disques .

Si vous regardez le diagramme présenté précédemment, vous verrez qu'il existe un fort couplage entre les systèmes de fichiers et les partitions :par conséquent, il est assez difficile d'avoir des données stockées sur plusieurs disques.

LVM est une excellente solution à ce problème :vos volumes logiques appartiennent à un groupe de volumes central .

Même si le groupe de volumes est composé de plusieurs disques, vous n'avez pas à les gérer vous-même, le mappeur de périphériques le fait pour vous.

Cela est vrai pour l'expansion des systèmes de fichiers, mais aussi pour les réduire ainsi que pour transférer des données d'un périphérique physique à un autre.

Gestion des volumes physiques LVM

Dans cette section, nous allons utiliser des commandes pour afficher, créer ou supprimer des volumes physiques sur votre système.

Afficher les volumes physiques existants

Pour afficher les périphériques de stockage existants sous Linux, vous devez utiliser la commande "lvmdiskscan".

$ sudo lvmdiskscan

Remarque :si les utilitaires LVM ne sont pas installés sur votre hôte, ayant une erreur « command not found » par exemple, vous devez installer les programmes LVM en exécutant « apt-get install lvm2 » en tant que root.

Lors de l'exécution du "lvmdiskscan", les différents disques disponibles sur votre hôte vous sont présentés.

Sur ces disques, vous voyez également des partitions si elles sont déjà créées sur ces disques.

Enfin, probablement l'information la plus importante, vous voyez combien de volumes physiques LVM sont créés sur votre système.

Remarque  :c'est un point important de la flexibilité de LVM :vous pouvez créer des volumes physiques à partir de disques entiers ou de partitions de ces disques.

Dans ce cas, nous commençons avec un tout nouveau serveur sans aucun volume physique LVM créé.

Pour afficher les volumes physiques existants sur votre hôte, vous pouvez également utiliser la commande "pvs" .

$ pvs

Créer de nouveaux volumes physiques

Créer de nouveaux volumes physiques sous Linux est assez simple :vous devez exécuter le "pvcreate" et spécifier les périphériques physiques sous-jacents à créer.

$ pvcreate <device_1> <device_2> ... <device_n>

Dans notre cas, disons que nous voulons créer un volume physique pour le deuxième disque branché sur notre hôte, qui est "sdb".

$ pvcreate /dev/sdb

Remarque :vous ne pourrez pas créer de volumes physiques à partir de périphériques déjà montés sur votre système. Par conséquent, "sda1" (qui stocke généralement la partition racine) ne peut pas être facilement transféré vers LVM.

Exécuter à nouveau la commande "lvmdiskscan" affiche une sortie très différente par rapport à la première section.

$ lvmdiskscan

Comme vous pouvez le constater, notre hôte détecte automatiquement qu'un disque entier est formaté en tant que volume physique LVM et qu'il est prêt à être ajouté à un groupe de volumes.

De même, la commande "pvs" a maintenant une sortie différente :notre nouveau disque a été ajouté à la liste des volumes physiques disponibles sur notre hébergeur.

$ pvs

Maintenant que vous avez créé avec succès votre premier groupe de volumes, il est temps de créer votre premier groupe de volumes.

Gestion des groupes de volumes LVM

À moins que votre système n'ait été préconfiguré avec des volumes LVM, aucun groupe de volumes ne devrait être créé sur votre système.

Pour répertorier les groupes de volumes existants sur votre hôte, vous devez utiliser la commande "vgs" sans arguments.

$ vgs

Créer un groupe de volumes à l'aide de vgcreate

La façon la plus simple de créer un groupe de volumes est d'utiliser le "vgcreate", pour spécifier le nom du groupe de volumes à créer et les volumes physiques à y inclure.

$ vgcreate <volume_name> <physical_volume_1> <physical_volume_2> ... <physical_volume_n>

Dans notre cas, nous n'avons qu'un seul volume physique sur notre hôte (qui est /dev/sdb) qui va être utilisé pour créer le groupe de volumes "vg_1".

$ vgcreate vg_1 /dev/sdb

Répertorier et afficher les groupes de volumes existants

La liste des groupes de volumes existants sur votre système à l'aide de "vgs" devrait maintenant afficher le groupe de volumes "vg_1" que vous venez de créer.

$ vgs

Sans arguments, sept colonnes différentes vous sont présentées :

  • TB  :décrivant le nom du groupe de volumes sur l'hôte ;
  • #PV :affichage du nombre de volumes physiques disponibles dans le groupe de volumes ;
  • #LV  :de même, le nombre de volumes logiques créés à partir du groupe de volumes ;
  • #SN  :nombre d'instantanés créés à partir des volumes logiques ;
  • Attr  :décrivant les attributs du groupe de volumes (w pour inscriptible, z pour redimensionnable et n pour "normal" );
  • VSize  :la taille du volume en Go du groupe de volumes ;
  • VGratuit :l'espace disponible sur le groupe de volumes

Si vous souhaitez obtenir plus d'informations sur vos groupes de volumes existants, vous pouvez utiliser la commande "vgdisplay".

$ vgdisplay

$ vgdisplay <volume_group>

Comme vous l'avez probablement remarqué, "vgdisplay" affiche bien plus d'informations que la simple commande "vgs".

Vers la fin de la sortie, vous pouvez voir deux colonnes nommées "PE Size" et "Total PE" court pour "Physical Extents Size" et "Total Physical Extents".

Sous le capot, LVM gère les étendues physiques qui sont des blocs de données très similaires au concept de taille de bloc sur les partitions.

Dans ce cas, LVM gère pour ce groupe de volumes des étendues physiques de 4,00 Mio et le groupe de volumes a 511 étendues physiques différentes. Le calcul conduit évidemment à un espace de 2,00 Gio (4*511 =2,044 Mio ou 2,00 Gio).

Pratiquement, vous ne devriez pas trop vous soucier des extensions physiques :LVM s'assure toujours que le mappage entre les extensions physiques et les volumes logiques est préservé.

Maintenant que vous avez créé votre premier groupe de volumes, il est temps de créer votre premier volume logique pour stocker des données.

Gestion des volumes logiques LVM

Afin de créer un volume logique dans un groupe de volumes, vous devez utiliser la commande "lvcreate", spécifier le nom du volume logique et le groupe de volumes auquel il appartient.

Afin de spécifier l'espace à prendre, vous devez utiliser le "-L ” et spécifiez une taille (composée d'un nombre et de son unité)

$ lvcreate -L <size> <volume_group>

Si vous souhaitez donner un nom à votre volume logique, vous pouvez utiliser l'option "-n".

$ lvcreate -n <name> -L <size> <volume_group>

Encore une fois, vous pouvez répertorier votre volume logique nouvellement créé en exécutant la commande "lvs" en tant que sudo.

$ lvs

En exécutant la commande « lvs », plusieurs colonnes différentes vous sont présentées :

  • LV :affichage du nom du volume logique ;
  • TB  :décrivant le groupe de volumes auquel appartient votre volume logique ;
  • Attr :listant les attributs de votre volume logique ("w" pour accessible en écriture, "i" pour hérité et "a" pour alloué) ;
  • Taille  :explicite, décrivant la taille de votre volume logique en Gio ;

D'autres colonnes décrivent l'utilisation avancée de LVM, comme la configuration d'espaces en miroir ou en bandes. Pour ce tutoriel de base, nous ne les décrirons pas et ils seront décrits dans des tutoriels plus avancés.

Lors de la création de votre volume logique, certaines actions ont été effectuées par le noyau sans que vous vous en aperceviez :

  • Un appareil virtuel a été créé sous /dev  :dans un dossier nommé d'après le nom de votre groupe de volumes ("vg_1"), un périphérique logique virtuel a été créé nommé d'après le nom du volume logique ("lv_1")
  • Le périphérique virtuel est un lien logiciel vers le périphérique "dm-0" disponible dans /dev :"dm-0" est un périphérique virtuel qui contient un mappage entre vos volumes logiques et vos disques durs réels. (/dev/sda, /dev/sdb etc.)

Formater et monter des volumes logiques LVM

La dernière étape pour que vous puissiez commencer à utiliser votre espace nouvellement créé consiste à formater et à monter vos volumes logiques.

Afin de formater un volume logique , vous devez utiliser la commande "mkfs" et spécifier le système de fichiers à utiliser.

$ mkfs -t <filesystem_type> <logical_volume>

Dans notre cas, supposons que nous voulions formater notre volume logique en tant que système de fichiers "ext4", nous exécuterions la commande suivante

$ mkfs -t ext4 /dev/vg_1/lv_1

Maintenant que le volume logique est formaté, il vous suffit de le monter sur un dossier de votre système.

Pour monter un volume logique LVM, vous devez utiliser la commande "mount", spécifier le nom du volume logique et le point de montage à utiliser.

$ mount <logical_volume> <mount_point>

Pour l'exemple, supposons que nous allons monter le système de fichiers sur le répertoire "/mnt" du répertoire racine.

$ mount /dev/vg_1/lv_1 /mnt

Si vous exécutez maintenant la commande "lsblk", vous devriez pouvoir voir que votre volume logique est maintenant monté.

$ lsblk

Félicitations, vous pouvez maintenant commencer à utiliser votre volume nouvellement créé !

Étendre les systèmes de fichiers existants à l'aide de LVM

En tant que cas d'utilisation de LVM, voyons à quel point il peut être facile d'augmenter la taille d'un système de fichiers en ajoutant un autre disque à votre hôte.

Si vous ajoutez un autre disque à votre hôte, udev le sélectionnera automatiquement et lui attribuera un nom.

Pour avoir le nom du périphérique de disque sur votre système, assurez-vous d'exécuter la commande "lsblk".

$ lsblk

Dans notre cas, nous avons ajouté un nouveau disque dur sur le connecteur SATA qui s'appelle "sdc".

Pour ajouter ce nouveau disque à nos couches LVM, nous devons configurer chaque couche de la pile de stockage LVM.

Tout d'abord, marquons ce nouveau disque comme un volume physique sur notre hôte avec le "pvcreate ” commande.

$ pvcreate /dev/sdc

Physical volume "/dev/sdc" successfully created

Ensuite, vous devez ajouter votre volume physique nouvellement créé au groupe de volumes.

Pour ajouter un volume physique à un groupe de volumes existant, vous devez utiliser le "vgextend ", spécifiez le groupe de volumes et les volumes physiques à ajouter.

$ vgextend vg_1 /dev/sdc

Volume group "vg_1" successfully extended

Avec la commande "vgs", vous pouvez vérifier que votre groupe de volumes a été étendu avec succès.

$ vgs

Comme vous pouvez le voir, par rapport à la première section, la sortie a légèrement changé :vous avez maintenant deux volumes physiques. De plus, l'espace est passé de 2 Gio à près de 3 Gio.

Votre volume logique n'est pas encore plus grand, vous devrez augmenter sa taille pour prendre un peu d'espace disponible dans le pool.

Pour augmenter la taille de votre volume logique, il faut utiliser le "lvextend", préciser le volume logique ainsi que la taille à prendre avec l'option "-L".

$ lvextend -L +1G dev/vg_1/lv_1

Comme vous pouvez le voir, la taille du volume logique a changé ainsi que le nombre d'extensions physiques dédiées à votre volume logique.

Augmenter votre volume logique ne signifie pas que votre système de fichiers augmentera automatiquement pour correspondre à la taille de votre volume logique.

Pour augmenter la taille de votre système de fichiers, vous devez utiliser la commande "resize2fs" et spécifier le volume logique à étendre (dans ce cas "/dev/vg_1/lv_1")

$ resize2fs /dev/vg_1/lv_1

Vous pouvez maintenant inspecter la taille de votre système de fichiers :il a été agrandi pour correspondre à la taille de votre volume logique, félicitations !

$ df -h

Comme vous l'avez probablement remarqué, vous avez augmenté la taille de votre système de fichiers en ajoutant un autre disque, mais vous n'avez pas eu à redémarrer votre système ou à démonter des systèmes de fichiers au cours du processus.

Réduire les systèmes de fichiers existants à l'aide de LVM

Maintenant que vous avez vu comment vous pouvez facilement étendre les systèmes de fichiers existants, voyons comment vous pouvez les réduire afin de réduire leur espace.

Avant de réduire un volume logique, assurez-vous d'avoir de l'espace disponible sur le volume logique avec la commande "df".

$ df -h

En utilisant le volume logique de la section précédente, nous avons encore près de 2 Gio disponibles.

En conséquence, nous pouvons supprimer 1 Gio du volume logique.

Pour réduire la taille d'un volume logique, vous devez exécuter la commande "lvreduce", spécifier la taille avec l'option "-L" ainsi que le nom du volume logique.

$ lvreduce -L <size> <logical_volume>

Dans notre cas, cela conduirait à la commande suivante (pour supprimer 1 Gio d'espace disponible)

$ lvreduce -L 1G /dev/vg_1/lv_1

Remarque :notez que cette opération n'est pas sans risques, vous risquez de supprimer certaines de vos données existantes si vous choisissez de réduire votre volume logique.

Par conséquent, l'espace a été réattribué au groupe de volumes et il est maintenant prêt à être utilisé par un autre volume logique sur le système.

$ vgs

Conclusion

Dans ce didacticiel, vous avez découvert LVM , abréviation de Gestion des volumes logiques , et comment il est utilisé afin de configurer facilement un espace adaptable sur votre hébergeur.

Vous avez appris quels volumes physiques , groupes de volumes et volumes logiques sont et comment ils peuvent être utilisés ensemble afin d'agrandir ou de réduire facilement les systèmes de fichiers.

Si vous êtes intéressé par l'administration du système Linux , nous avons une section complète qui lui est consacrée sur le site Web, alors assurez-vous de la consulter !


Linux
  1. Comment créer un volume physique sous Linux en utilisant LVM

  2. Créer des volumes logiques sous Linux avec LVM

  3. Augmentez et réduisez les volumes avec la gestion des disques

  4. CentOS / RHEL :Comment trouver les volumes logiques (LV) contenus dans le volume physique (PV) dans LVM

  5. Configuration LVM :Opérations/Utilitaires de Volume Physique (PV)

Gestionnaire de volume logique (LVM) par rapport au partitionnement standard sous Linux

Gestion des volumes logiques

Sauvegarde et restauration d'instantanés LVM sous Linux

Explication de la commande Arping sur Linux

Développer le volume logique Lvm sur la machine virtuelle ?

Guide du débutant sur LVM (gestion des volumes logiques)