Introduction
LVM, ou Logical Volume Management, est une technologie de gestion des périphériques de stockage qui donne aux utilisateurs le pouvoir de regrouper et d’abstraire la disposition physique des périphériques de stockage des composants pour une administration plus facile et flexible. Utilisant le framework device mapper du noyau Linux, l’itération actuelle, LVM2, peut être utilisée pour rassembler les périphériques de stockage existants en groupes et allouer des unités logiques à partir de l’espace combiné selon les besoins.
LVM a pour principaux avantages une abstraction, une flexibilité et un contrôle accrus. Les volumes logiques peuvent avoir des noms significatifs comme « bases de données » ou « sauvegarde de la racine ». Les volumes peuvent être redimensionnés dynamiquement en fonction de l’évolution 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 exportés facilement. LVM offre également des fonctionnalités avancées telles que l’instantané, le striping et le mirroring.
Dans ce guide, nous aborderons brièvement le fonctionnement de LVM, puis nous démontrerons les commandes de base nécessaires pour être rapidement opérationnel.
Architecture et terminologie de LVM
Avant de nous plonger dans les commandes d’administration LVM proprement dites, il est important d’avoir une compréhension de base de la façon dont LVM organise les périphériques de stockage et de certaines des terminologies qu’il emploie.
Structures de gestion du stockage de LVM
LVM fonctionne en superposant des abstractions sur les périphériques de stockage physiques. Les couches de base que LVM utilise, en commençant par la plus primitive, sont.
- Volumes physiques :
- préfixe de l’utilitaire LVM :
pv...
- Description : Les périphériques blocs physiques ou d’autres périphériques de type disque (par exemple, d’autres périphériques créés par device mapper, 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 ordinaires. LVM écrit un en-tête sur le périphérique pour l’allouer à la gestion.
- préfixe de l’utilitaire LVM :
- Groupes de volumes:
- Préfixe de l’utilitaire LVM :
vg...
- Description : LVM combine les volumes physiques en pools de stockage connus sous le nom de groupes de volumes. Les groupes de volumes abstraient 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 composants.
- Préfixe de l’utilitaire LVM :
- Volumes logiques:
- Préfixe de l’utilitaire LVM :
lv...
(les utilitaires LVM génériques pourraient commencer parlvm...
) - Description : Un groupe de volumes peut être découpé en un nombre quelconque de volumes logiques. Les volumes logiques sont fonctionnellement équivalents aux partitions sur un disque physique, mais avec beaucoup plus de flexibilité. Les volumes logiques sont le composant principal avec lequel les utilisateurs et les applications vont interagir.
- Préfixe de l’utilitaire LVM :
En résumé, LVM peut être utilisé pour combiner des volumes physiques en 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.
Qu’est-ce que les extents ?
Chaque volume d’un groupe de volumes est segmenté en petits morceaux de taille fixe appelés extents. La taille des extents est déterminée par le groupe de volumes (tous les volumes au sein du groupe se conforment à la même taille d’extent).
Les extents d’un volume physique sont appelés extents physiques, tandis que les extents d’un volume logique sont appelés extents logiques. Un volume logique est simplement un mappage que LVM maintient entre les extents logiques et physiques. En raison de cette relation, la taille des extents représente la plus petite quantité d’espace qui peut être allouée par LVM.
Les extents sont à l’origine d’une grande partie de la flexibilité et de la puissance de LVM. Les extents logiques qui sont présentés comme un périphérique unifié par LVM ne doivent pas nécessairement correspondre à des extents physiques continus. LVM peut copier et réorganiser les extensions physiques qui composent un volume logique sans aucune interruption pour les utilisateurs. Les volumes logiques peuvent également être facilement étendus ou réduits en ajoutant simplement des extents au volume ou en supprimant des extents du volume.
Le cas d’utilisation simple
Maintenant que vous êtes familiarisé avec une partie de la terminologie et des structures utilisées par LVM, nous pouvons explorer certaines façons courantes d’utiliser LVM. Nous commencerons par parcourir une procédure de base qui utilisera deux disques physiques pour former quatre volumes logiques.
Marquer les périphériques physiques comme des volumes physiques
Notre première étape consiste à analyser le système pour trouver des périphériques de bloc que LVM peut voir et gérer. Vous pouvez le faire en tapant :
- sudo lvmdiskscan
La sortie affichera tous les périphériques de bloc disponibles avec lesquels LVM peut interagir :
Output /dev/ram0 /dev/sda /dev/ram1 . . . /dev/ram15 /dev/sdb 2 disks 17 partitions 0 LVM physical volume whole disks 0 LVM physical volumes
D’après la sortie ci-dessus, nous pouvons voir qu’il y a actuellement deux disques et 17 partitions. Les partitions sont principalement des /dev/ram*
partitions qui sont utilisées le système comme un disque Ram pour améliorer les performances. Les disques dans cet exemple sont /dev/sda
, qui a 200G d’espace, et /dev/sdb
, qui a 100G.
Avertissement : Assurez-vous de bien vérifier que les périphériques que vous avez l’intention d’utiliser avec LVM n’ont pas de données importantes déjà écrites sur eux. L’utilisation de ces périphériques au sein de LVM écrasera le contenu actuel. Si vous avez déjà des données importantes sur votre serveur, faites des sauvegardes avant de procéder.
Maintenant que nous connaissons les périphériques physiques que nous voulons utiliser, nous pouvons les marquer comme volumes physiques au sein de LVM à l’aide de la commande pvcreate
:
- sudo pvcreate /dev/sda /dev/sdb
Output Physical volume "/dev/sda" successfully created Physical volume "/dev/sdb" successfully created
Cela va écrire 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 colonne PV
, qui signifie 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 sélectionner un nom pour le groupe de volumes, que nous garderons générique. La plupart du temps, vous n’aurez qu’un seul groupe de volume par système pour une flexibilité maximale dans l’allocation. Nous appellerons notre groupe de volume LVMVolGroup
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 pvs
, 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 volume 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 voir, notre groupe de volumes possède actuellement deux volumes physiques, zéro volume logique et possède la capacité combinée des périphériques sous-jacents.
Création de volumes logiques à partir du pool de groupe de volumes
Maintenant que nous avons un groupe de volumes disponible, nous pouvons l’utiliser comme un pool à partir duquel nous pouvons allouer des volumes logiques. Contrairement au partitionnement conventionnel, lorsque vous travaillez avec des volumes logiques, vous n’avez pas besoin de connaître la disposition du volume puisque LVM mappe et gère cela pour vous. Vous devez seulement fournir la taille du volume et un nom.
Nous allons créer quatre volumes logiques distincts à partir de notre groupe de volumes :
- 10G volume « projects »
- 5G volume « www » pour le contenu web
- 20G volume « db » pour une base de données
- volume « workspace » qui remplira l’espace restant
Pour créer des volumes logiques, nous utilisons la commande lvcreate
. Nous devons passer dans le groupe de volumes à tirer, et pouvons nommer le volume logique avec l’option -n
. Pour spécifier directement la taille, on peut utiliser l’option -L
. Si, au contraire, vous souhaitez spécifier la taille en termes de nombre d’extents, 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 la sortie personnalisée de la commande vgs
:
- 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 que nous puissions voir l’espace alloué à nos volumes logiques.
Maintenant, nous pouvons allouer le reste de l’espace du groupe de volumes au volume « workspace » en utilisant le drapeau -l
, qui fonctionne en extents. Nous pouvons également fournir un pourcentage et une unité pour mieux communiquer nos intentions. Dans notre cas, nous souhaitons allouer l’espace libre restant, nous pouvons donc passer en 100%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 pourrions constater 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 voir, le volume « workspace » a été créé et le groupe de volume « LVMVolGroup » est entièrement alloué.
Formater et monter les volumes logiques
Maintenant que nous avons des volumes logiques, nous pouvons les utiliser comme des 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 bloc normaux :
- sudo nano /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 devrait maintenant monter les volumes logiques LVM automatiquement au démarrage.
Conclusion
En espérant qu’à ce stade, vous aurez une assez bonne compréhension des différents composants que LVM gère pour créer un système de stockage flexible. Vous devriez également avoir une compréhension de base de la façon de mettre en place et de faire fonctionner des périphériques de stockage dans une configuration LVM.
Ce guide n’a abordé que brièvement la puissance et le contrôle que LVM fournit aux administrateurs de systèmes Linux. Pour en savoir plus sur le travail avec LVM, consultez notre guide d’utilisation de LVM avec Ubuntu 16.04.
.