GNU/Linux >> Tutoriels Linux >  >> Linux

Le guide complet du débutant sur LVM sous Linux

Il s'agit d'un guide complet pour débutants sur LVM (Logical Volume Management) sous Linux.

Dans ce tutoriel, vous apprendrez le concept de LVM, ses composants et pourquoi vous devriez l'utiliser.

Je ne me limiterai pas à l'explication théorique. Je montrerai également des exemples pratiques de création et de gestion de LVM sous Linux.

En bref, je vais vous donner toutes les informations nécessaires dont vous auriez besoin pour commencer à travailler avec LVM dans le monde réel.

Qu'est-ce que LVM sous Linux ?

LVM signifie gestion de volume logique. Il s'agit d'une méthode alternative de gestion des systèmes de stockage par rapport à la méthode traditionnelle basée sur les partitions. Dans LVM, au lieu de créer des partitions, vous créez des volumes logiques, puis vous pouvez monter ces volumes aussi facilement dans votre système de fichiers que vous le feriez pour une partition de disque.

Une exception à la déclaration précédente est que vous ne pouvez pas utiliser de volumes logiques pour /boot . En effet, GRUB (le chargeur de démarrage le plus courant pour Linux) ne peut pas lire à partir de volumes logiques. L'alternative bien connue à GRUB, systemd-boot, ne lit que les systèmes de fichiers vfat, donc cela ne fonctionnera pas non plus.

Composants de LVM

Il y a trois composants principaux dans LVM :

  1. Volumes physiques
  2. Groupes de volumes
  3. Volumes logiques

Bien que la liste se compose de trois composants, seuls deux d'entre eux sont des homologues directs du système de partitionnement. Le tableau suivant enregistre cela.

Système de partitionnement de disque LVM
Partitions Volumes logiques
Disques Groupes de volumes

Les volumes physiques n'ont pas d'équivalent direct, mais j'en reparlerai bientôt.

Pourquoi utiliser LVM ?

Le principal avantage de LVM est la facilité avec laquelle il est possible de redimensionner un volume ou un groupe de volumes. Il élimine toutes les parties laides (partitions, disques bruts) et nous laisse avec un pool de stockage central avec lequel travailler.

Si vous avez déjà vécu l'horreur du redimensionnement de partition, vous devriez utiliser LVM.

Préparation en laboratoire pour les travaux pratiques

Cet article n'est pas juste la théorie. Je montrerai des exemples de commandes réels en cours de route et la meilleure façon d'apprendre quelque chose est de travailler avec, de manière pratique. Pour cela, je vous recommande d'utiliser une machine virtuelle.

Pour vous aider, j'ai déjà préparé un simple Vagrantfile que vous pouvez utiliser pour faire tourner une machine virtuelle très légère avec VirtualBox. Cette machine virtuelle dispose de trois disques supplémentaires que vous et moi pouvons utiliser pour les exemples de commandes ci-dessous.

Créez un répertoire quelque part dans votre système de fichiers et enregistrez ce qui suit dans un fichier là-bas, nommé Vagrantfile .

Vagrant.configure "2" do |config|
    config.vm.box = "ubuntu/focal64"
    config.vm.hostname = "lvm"
    3.times {|i| config.vm.disk :disk, size: "5GB", name: "drive-#{i}"}
    config.vm.provider :virtualbox do |machine|
        machine.memory = 1024
        machine.cpus = 1
        machine.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
    end
end

# vi: set ft=ruby

Ou si vous le souhaitez, vous pouvez utiliser wget ou curl pour télécharger le fichier depuis mon gist.

wget https://gist.githubusercontent.com/debdutdeb/98ed1b6aef36885d07ce8247188dfd5e/raw/524259da5dfa2d8750883d01c8159829729e224d/Vagrantfile

Assurez-vous que Vagrant et VirtualBox sont installés.

Une fois le Vagrantfile en place, définissez la variable d'environnement VAGRANT_EXPERIMENTAL vers disks .

export VAGRANT_EXPERIMENTAL=disks

Enfin, démarrez la machine virtuelle à l'aide de la commande suivante (assurez-vous d'être dans le même répertoire que le Vagrantfile) :

vagrant up

Une fois la machine en marche, vous pouvez utiliser vagrant ssh connectez-vous en SSH et exécutez les exemples de commandes de cet article.

N'oubliez pas d'exécuter vagrant destroy dans le même répertoire que le Vagrantfile une fois que vous avez terminé.

Installer LVM

Avant de pouvoir utiliser l'une des commandes, vous devez installer le lvm2 emballer. Cela devrait être préinstallé dans la plupart des distributions modernes, en particulier celles basées sur Ubuntu. Mais encore, je devais le mentionner avant d'aller de l'avant. Pour installer lvm2 , consultez la documentation de votre distribution.

Travailler avec LVM

Pour cette procédure pas à pas, j'ai construit une machine virtuelle avec un stockage racine de 40G (sans importance) et trois disques externes de taille 5G. La taille de ces disques est arbitraire.

[email protected]:~$ lsblk -o name,size,fstype
NAME    SIZE FSTYPE
loop0  55.5M squashfs
loop1  32.3M squashfs
loop2  70.4M squashfs
sda      40G 
└─sda1   40G ext4
sdb      10M iso9660
sdc       5G 
sdd       5G 
sde       5G

Comme vous pouvez le voir, les appareils que je vais utiliser sont sdc , sdd et sde .

Rappelez-vous que je vous ai dit qu'il y a trois composants principaux dans LVM ?

  1. Volumes physiques
  2. Groupes de volumes
  3. Volumes logiques

Il est temps de les voir un par un.

1. Volumes physiques

La toute première chose que vous devez savoir sur LVM, ce sont les volumes physiques. Les volumes physiques sont les matières premières ou les blocs de construction utilisés pour réaliser l'abstraction que sont les volumes logiques. En termes plus simples, les volumes physiques sont l'unité logique d'un système LVM.

Un volume physique peut être n'importe quoi, un disque brut ou une partition de disque. La création et l'initialisation d'un volume physique sont la même chose. Les deux signifient que vous ne faites que préparer les blocs de construction (c'est-à-dire les partitions, les disques) pour d'autres opérations. Cela deviendra plus clair dans le moment.

Utilitaires : Tous les utilitaires qui gèrent des volumes physiques commencent par les lettres pv pour P V physique olume. Par exemple. pvcreate , pvchange , pvs , pvdisplay etc.

Tout ce qui est mentionné après cette case est destructeur, à moins que vous n'utilisiez un environnement virtuel ou un serveur sur le cloud où aucune donnée importante n'est stockée ou ne peut être atteinte par accident, je vous conseille d'arrêter tout de suite.

Création de volumes physiques

Vous pouvez créer un volume physique à l'aide d'un disque brut non partitionné ou des partitions elles-mêmes.

Comme je l'ai mentionné précédemment, j'ai trois disques externes connectés à ma machine virtuelle, commençons par /dev/sdc .

Nous utilisons le pvcreate commande pour créer un volume physique. Transmettez-lui simplement le nom de l'appareil et rien d'autre.

sudo pvcreate /dev/sdc

Vous devriez voir quelque chose comme ceci :-

[email protected]:~$ sudo pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created.

Ensuite, je vais partitionner /dev/sdd en parties égales. Utilisez n'importe quel outil, cfdisk , parted , fdisk etc, il existe de nombreux outils pour réaliser ce travail.

[email protected]:~$ lsblk -o name,size,fstype | grep sdd
sdd       5G 
├─sdd1  2.5G 
└─sdd2  2.5G

Vous pouvez maintenant créer rapidement deux volumes physiques supplémentaires à partir de ces deux partitions en une seule étape, passer ces deux périphériques à pvcreate à la fois.

sudo pvcreate /dev/sdd1 /dev/sdd2

Jetez un oeil :-

[email protected]:~$ sudo pvcreate /dev/sdd1 /dev/sdd2
  Physical volume "/dev/sdd1" successfully created.
  Physical volume "/dev/sdd2" successfully created.

Liste des volumes physiques disponibles

Il existe trois commandes que vous pouvez utiliser pour obtenir la liste des volumes physiques disponibles, pvscan , pvs et pvdisplay . Vous n'avez généralement pas besoin de transmettre quoi que ce soit à ces commandes.

pvscan :-

[email protected]:~$ sudo pvscan
  PV /dev/sdc                       lvm2 [5.00 GiB]
  PV /dev/sdd1                      lvm2 [2.50 GiB]
  PV /dev/sdd2                      lvm2 [<2.50 GiB]
  Total: 3 [<10.00 GiB] / in use: 0 [0   ] / in no VG: 3 [<10.00 GiB]

pvs :-

[email protected]:~$ sudo pvs
  PV         VG Fmt  Attr PSize  PFree 
  /dev/sdc      lvm2 ---   5.00g  5.00g
  /dev/sdd1     lvm2 ---   2.50g  2.50g
  /dev/sdd2     lvm2 ---  <2.50g <2.50g

pvdisplay :-

[email protected]:~$ sudo pvdisplay
  "/dev/sdc" is a new physical volume of "5.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc
  VG Name               
  PV Size               5.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               SzSkdD-xKYa-4y7P-teyU-481p-uiQ8-qieMJJ
   
  "/dev/sdd1" is a new physical volume of "2.50 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdd1
  VG Name               
  PV Size               2.50 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               553Iy4-JJ21-LfIw-udtO-j9Cd-7gFS-iXXFVS
   
  "/dev/sdd2" is a new physical volume of "<2.50 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdd2
  VG Name               
  PV Size               <2.50 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               bf7ghn-QkPm-EUdp-GdyW-shMG-5sMn-VhNtYB

Comme vous pouvez le constater, en plus de la simple liste des volumes physiques, ces commandes vous donnent également une tonne d'autres informations sur ces volumes.

Supprimer un volume physique

Vous pouvez supprimer un volume physique avec le pvremove commande. Tout comme pvcreate , passez simplement les périphériques (qui sont initialisés en tant que volumes physiques) à pvremove commande.

Pour la démonstration, je supprimerai /dev/sdd2 de la liste.

sudo pvremove /dev/sdd2

La sortie devrait être identique à ceci :-

[email protected]:~$ sudo pvremove /dev/sdd2
  Labels on physical volume "/dev/sdd2" successfully wiped.

Lister maintenant les volumes physiques avec sudo pvs

[email protected]:~$ sudo pvs
  PV         VG Fmt  Attr PSize PFree
  /dev/sdc      lvm2 ---  5.00g 5.00g
  /dev/sdd1     lvm2 ---  2.50g 2.50g

/dev/sdd2 n'est plus ici.

2. Groupes de volumes

Les groupes de volumes sont des ensembles de volumes physiques. C'est le prochain niveau d'abstraction dans LVM. Les groupes de volumes sont le pool de stockage qui combine la capacité de stockage de plusieurs périphériques de stockage bruts.

Utilitaires : Tous les noms d'utilitaires de groupe de volumes commencent par vg , signifie V olume G groupe, par ex. vgcreate , vgs , vgrename etc.

Créer des groupes de volumes

Les groupes de volumes sont créés à l'aide de vgcreate commande. Le premier argument de vgcreate est le nom que vous voulez donner à ce groupe de volumes, et le reste est la liste des volumes physiques qui vont sauvegarder le pool de stockage.

sudo vgcreate lvm_tutorial /dev/sdc /dev/sdd1

Exemple :-

[email protected]:~$ sudo vgcreate lvm_tutorial /dev/sdc /dev/sdd1
  Volume group "lvm_tutorial" successfully created

Liste des groupes de volumes

La liste des groupes de volumes est similaire à la liste des volumes physiques, vous pouvez utiliser différentes commandes avec différents niveaux de verbosité, vgdisplay , vgscan et vgs .

Personnellement, je préfère le vgs commande, sudo vgs

[email protected]:~$ sudo vgs
  VG           #PV #LV #SN Attr   VSize VFree
  lvm_tutorial   2   0   0 wz--n- 7.49g 7.49g

vgscan :-

[email protected]:~$ sudo vgscan
  Found volume group "lvm_tutorial" using metadata type lvm2

vgdisplay :-

[email protected]:~$ sudo vgdisplay 
  --- Volume group ---
  VG Name               lvm_tutorial
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               7.49 GiB
  PE Size               4.00 MiB
  Total PE              1918
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1918 / 7.49 GiB
  VG UUID               LYVE9P-vY0G-OAW6-an8q-yfBx-rrB1-YU61m1

Liste des volumes physiques attachés à un groupe de volumes

Vous pouvez répertorier tous les volumes physiques connectés à un groupe de volumes spécifique en utilisant la commande suivante :-

sudo pvdisplay -S vgname=<volume_group_name> -C -o pv_name

Exemple :-

[email protected]:~$ sudo pvdisplay -S vgname=lvm_tutorial -C -o pv_name
  PV        
  /dev/sdc  
  /dev/sdd1

Vous pouvez également obtenir le nombre de volumes physiques.

sudo vgdisplay -S vgname=<volume_group_name> -C -o pv_count

Exemple :-

[email protected]:~$ sudo vgdisplay -S vgname=lvm_tutorial -C -o pv_count
  #PV
    3

Étendre un groupe de volumes

L'extension d'un groupe de volumes signifie l'ajout de volumes physiques supplémentaires à un groupe de volumes. Pour ce faire, le vgextend commande est utilisée. La syntaxe est simple :-

vgextend <volume_group> <physical_volume1> <physical_volume2> ....

Étendons notre lvm_tutorial volume par /dev/sdd2 .

sudo vgextend lvm_tutorial /dev/sdd2

Concentrez-vous sur le résultat :-

[email protected]:~$ sudo vgextend lvm_tutorial /dev/sdd2
  Physical volume "/dev/sdd2" successfully created.
  Volume group "lvm_tutorial" successfully extended

Dans la section du volume physique, nous avons fini par supprimer /dev/sdd2 en tant que volume physique, mais une partition ou un disque brut doit être initialisé en tant que volume physique, sinon LVM ne pourra pas le gérer dans le cadre d'un groupe de volumes. Alors vgextend prépare /dev/sdd2 avant de l'ajouter au groupe de volumes.

Maintenant, répertoriez les volumes physiques attachés à ce groupe de volumes, juste pour être sûr.

sudo pvdisplay -S vgname=lvm_tutorial -C -o pv_name

Sortie :-

[email protected]:~$ sudo pvdisplay -S vgname=lvm_tutorial -C -o pv_name
  PV        
  /dev/sdc  
  /dev/sdd1 
  /dev/sdd2

/dev/sdd2 est maintenant dans la liste comme prévu.

Réduire un groupe de volumes

Tout comme étendre un groupe de volumes signifie ajouter un autre volume physique, le réduire signifie supprimer un ou plusieurs volumes physiques.

Nous utilisons le vgreduce commande pour le faire. La syntaxe générale est la suivante :-

vgreduce <vgname> <physical_volume1> <physical_volume2> ....

Supprimons les volumes physiques /dev/sdc et /dev/sdd1 .

sudo vgreduce lvm_tutorial /dev/sdc /dev/sdd1

Exemple :-

[email protected]:~$ sudo vgreduce lvm_tutorial /dev/sdc /dev/sdd1
  Removed "/dev/sdc" from volume group "lvm_tutorial"
  Removed "/dev/sdd1" from volume group "lvm_tutorial"
Si un groupe de volumes a des volumes logiques actifs, vous ne pourrez pas le réduire de cette manière.

Listez à nouveau les volumes physiques.

sudo pvdisplay -S vgname=lvm_tutorial -C -o pv_name

Sortie :-

[email protected]:~$ sudo pvdisplay -S vgname=lvm_tutorial -C -o pv_name
  PV        
  /dev/sdd2

Ces deux volumes physiques ont disparu.

Maintenant, pour le reste de cet article, rajoutez ces deux volumes physiques.

sudo vgextend lvm_tutorial /dev/sdc /dev/sdd1

Supprimer un groupe de volumes

Vous pouvez supprimer un volume logique avec le vgremove commande.

sudo vgremove lvm_tutorial

N'exécutez pas cette commande maintenant, sinon vous devrez recréer le groupe de volumes. Si vous voulez le tester, lancez-le à la toute fin de cet article.

3. Volumes logiques

C'est avec cela que vous allez principalement travailler. Un volume logique est comme une partition, mais au lieu de s'asseoir sur un disque brut, il se trouve sur un groupe de volumes. Vous pouvez,

  • Formatez un volume logique avec le système de fichiers de votre choix.
  • Montez-le n'importe où dans le système de fichiers de votre choix.

Dans cette section, vous apprendrez,

  • Comment créer des volumes logiques.
  • Opérations courantes sur un volume logique.
  • Redimensionner un volume logique.
  • Suppression d'un volume logique.

Utilitaires : Tous les noms d'utilitaires de groupe de volumes commencent par lv , signifie L V logique olume. par exemple. lvcreate , lvs , lvreduce etc.vgcreate , vgs , vgrename etc.

Création de volumes logiques

Les volumes logiques sont créés à l'aide de lvcreate commande. La syntaxe couramment utilisée se présente comme suit,

sudo lvcreate -L <size> -n <lvname> <vgname>

Permettez-moi de le décomposer pour vous :-

  • Le -L est pour la taille du nouveau volume logique, vous pouvez utiliser n'importe quel nombre entier avec "GB", "MB" ou "KB" à la fin. Par exemple. "1 Go".
  • Le -n l'option sert à nommer ce volume logique.
  • Enfin, vous devez lui transmettre le nom du groupe de volumes dont ce volume logique fera partie. Ainsi, tout en fournissant une taille au volume logique, assurez-vous que le groupe de volumes dispose de l'espace disponible.

Exécutez la commande suivante sur la machine virtuelle :-

sudo lvcreate -L 5GB -n lv1 lvm_tutorial

Exemple de sortie :-

[email protected]:~$ sudo lvcreate -L 5GB -n lv1 lvm_tutorial
  Logical volume "lv1" created.

Opérations courantes sur un volume logique

Comme je l'ai dit précédemment, vous pouvez placer un système de fichiers sur un volume logique et le monter n'importe où sur le système de fichiers.

Une fois créé, vous pouvez trouver le volume logique dans /dev/<vgname>/<lvname> chemin. Par exemple dans notre cas le volume va être dans /dev/lvm_tutorial/lv1 .

[email protected]:~$ ls -l /dev/lvm_tutorial/lv1 
lrwxrwxrwx 1 root root 7 May 17 02:09 /dev/lvm_tutorial/lv1 -> ../dm-0

Vous pouvez maintenant l'utiliser comme n'importe quelle partition. Formatez-le avec ext4,

sudo mkfs.ext4 /dev/lvm_tutorial/lv1

Montez-le à un endroit de votre structure de répertoires actuelle comme /mnt ,

sudo mount -t ext4 /dev/lvm_tutorial/lv1 /mnt

Redimensionner un volume logique

Vous pouvez étendre un volume logique en utilisant lvextend commande et réduisez sa taille en utilisant lvreduce commande. Ou vous pouvez utiliser la seule commande lvresize pour accomplir les deux tâches.

Voyons d'abord s'il reste de l'espace dans le groupe de volumes ou non.

sudo vgs -S vgname=lvm_tutorial -o vg_free

Sortie :-

[email protected]:~$ sudo vgs -S vgname=lvm_tutorial -o vg_free
  VFree 
  <4.99g

Selon la sortie, il me reste de l'espace, alors augmentons la taille du volume de 2 Go.

N'oubliez pas que le volume logique est toujours monté sur /mnt .

[email protected]:~$ mount | grep '/mnt'
/dev/mapper/lvm_tutorial-lv1 on /mnt type ext4 (rw,relatime)

Utilisez la commande suivante pour redimensionner le volume :-

sudo lvresize -L +2GB lvm_tutorial/lv1

La syntaxe générale ressemble à ceci :-

lvresize -L [+|-][Size] <vgname>/<lvname>

Le symbole + ou - après -L dépend si vous essayez d'augmenter la taille du volume ou de le diminuer respectivement.

Une fois la taille du volume augmentée, le système de fichiers doit également être redimensionné. Pour ext4, la commande à utiliser est resize2fs .

sudo resize2fs /dev/lvm_tutorial/lv1

Sortie :-

[email protected]:~$ sudo resize2fs /dev/lvm_tutorial/lv1
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/lvm_tutorial/lv1 is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/lvm_tutorial/lv1 is now 1835008 (4k) blocks long.
Tous les systèmes de fichiers ne prennent pas en charge le redimensionnement à chaud, Ext4 et XFS sont l'un de ceux pris en charge. Je vous recommande de vous en tenir à ceux-ci.

Réduire un volume logique est une tâche un peu plus compliquée et je ne vais pas en parler ici dans cet article. Je réduis la taille de ce volume de 1 Go.

Supprimer un volume logique

Vous supprimez un volume logique avec le lvremove commande. La syntaxe de la commande est la suivante :-

lvremove <vgname>/<lvname>

Exécutez cette commande sur la machine virtuelle :-

sudo lvremove lvm_tutorial/lv1

Sortie :-

[email protected]:~$ sudo lvremove lvm_tutorial/lv1
Do you really want to remove and DISCARD active logical volume lvm_tutorial/lv1? [y/n]: y
  Logical volume "lv1" successfully removed

Il existe une multitude d'autres opérations réalisables sur les volumes logiques, les volumes physiques et les groupes de volumes, mais il n'est pas possible d'écrire tout cela dans un seul article.

Je vous ai laissé un autre disque /dev/sde dans la machine virtuelle. Utilisez-le, pratiquez certaines des commandes de cet article, créez un nouveau groupe de volumes, étendez-en un existant, entraînez-vous simplement.

J'espère que cet article vous a été utile. Si vous souhaitez en savoir plus à ce sujet à l'avenir, faites-le moi savoir dans la section des commentaires ci-dessous.


Linux
  1. Un guide du terminal Linux pour les débutants

  2. Présentation du guide de communication inter-processus sous Linux

  3. Un guide du débutant sur les autorisations Linux

  4. Guide du débutant sur le pare-feu sous Linux

  5. Installer Linux Mint 19 sur VirtualBox :Le guide complet

Guide complet du débutant sur le déploiement du cluster Kubernetes sur CentOS (et autres Linux)

Guide du débutant sur Syslogs sous Linux

Un guide complet pour installer Tomcat sur Linux

Le guide complet pour installer MySQL sur Ubuntu

Commandes du répertoire Linux :un guide complet

Cronjob - Le guide complet des Cronjobs