Blog DevOps

Comment fonctionne le partitionnement de disques avec LVM ?

Rédigé par Max Teiger | 26 mai 2021 22:00:00

Qu'est-ce-que le partitionnement ?

En informatique, une partition, région ou un disque est une section d'un support de stockage (disque dur, SSD, carte-mémoire...). Le partitionnement est l'opération qui consiste à diviser ce support en partitions dans lesquelles le système d'exploitation peut gérer les informations de manière séparée, généralement en y créant un système de fichiers, une manière d’organiser l’espace disponible.

Chaque système d’exploitation a une manière différente de désigner les partitions qu’il détecte :

  • les systèmes Windows les désignent par des lettres suivies du signe deux-points (C:, D:, etc.) ;
  • les systèmes Mac OS les désignent par un identifiant sous la forme diskNsM, avec N le numéro du support et M le numéro de la partition sur le support (par exemple disk2s3 pour la troisième partition du disque 2) ;
  • les systèmes Unix ou Gnu/Linux, les désignent par un identifiant sous la forme sdXN, avec X une lettre représentant le support et N le numéro de la partition sur le support (par exemple sdb3 pour la troisième partition du disque b).

Quelle est l'utilité du partitionnement ?

Résilience

Le partitionnement propose également d’autres avantages que la rapidité d’accès aux données. Imaginons un disque non-partitionné, celui-ci est considéré par le système d’exploitation comme une seule et unique unité. 

Cette unité contiendrait votre installation Linux (ou n’importe quel autre système d’exploitation), vos logiciels, vos fichiers, les logs de vos applications, vos fichiers binaires. 

Dans le cadre d’un serveur, imaginons que suite à une attaque virale, un crash Linux, ou toute autre raison vous deviez réinstaller le système d’exploitation. 

Dans le cadre d’une réinstallation de système d’exploitation, le plus souvent le formatage de disque sur lequel se trouve l’installation actuelle est inévitable. Seulement, ce formatage a pour effet de supprimer de supprimer toutes les données présentes sur la partition, et ce de manière irréversible si vous n’avez réalisé aucune sauvegarde. La partitionnement permet de remédier à ce problème, il suffit de réserver une partition à son système d’exploitation, ainsi, si une réinstallation est nécessaire, celle-ci n’effacera que les données sur cette partition, et conservera les données des autres partitions. Et ce même si elles se trouvent sur un même disque physique. 

En plus de cela, le partitionnement propose beaucoup d’avantages en termes de sécurité.

Sécurité et bonnes pratiques sur un système Linux

La sécurité est un aspect capital de la gestion des systèmes d’informations, beaucoup de serveurs utilisent l’OS Linux et le partitionnement peut aider à les sécuriser.

Les lignes qui suivent sont tirées des mesures de sécurités recommandées par l’ANSSI pour les systèmes Linux.

Il est usuel de réserver des partitions dédiées aux services pouvant générer beaucoup de volumétrie afin d’éviter de saturer les partitions système. L’espace à réserver pour chaque partition dépend des cas d’usage : un serveur de fichiers aura besoin d’une volumétrie importante pour /srv ou /var/ftp/, tandis qu’un serveur de journaux sera plutôt concerné par la volumétrie utilisable pour /var/log.>

Le partitionnement doit ainsi permettre de protéger et d’isoler les différents composants du système de fichiers. Il est par défaut souvent insatisfaisant.

Il faut noter que suivant les systèmes et distributions, certaines des options de montage ne seront pas applicables transitoirement; par exemple des utilitaires, installeurs ou produits estimeront que les fichiers écrits dans /tmp ou /var peuvent être exécutables. Dans ces cas exceptionnels il est nécessaire d’adapter le partitionnement. Un de ceux les plus fréquemment rencontrés est celui des distributions dérivées de Debian dont le /var/lib/dpkg nécessite des droits d’exécution. 

Une alternative est d’implémenter une procédure de maintenance durant laquelle les mises à jour sont installées, à l’image de ce que l’on trouve sur d’autres systèmes d’exploitation.

À noter : 

  • La partition /boot contient notamment le noyau de démarrage et des fichiers dans ce dossier sont souvent parcouru par différents programmes malveillants afin de construire plus facilement des « exploits » de code noyau.
  • Lorsque c’est possible, la partition /boot ne doit pas être montée automatiquement. Dans tous les cas, l’accès au dossier /boot doit être uniquement autorisé pour l’utilisateur root. 

Autres utilités

Le partitionnement de disque peut également être utile dans le cadre de la mise en place d’un chiffrement au repos de votre disque dur. Et si vous souhaitez plus d’informations sur la résilience et la sécurité des systèmes d’informations, n’hésitez pas à vous tenir informer en lisant les articles du blog Padok !

Comment fonctionne le partitionnement sur Linux avec LVM ?

Mais LVM dans tout ça, à quoi ça sert ?

LVM est un gestionnaire de volumes logiques pour le noyau Linux. Le but de LVM est de fournir une couche d'abstraction entre l'espace de stockage physique et le système : il permet de créer des « partitions virtuelles » faciles à gérer (changements de taille, création et suppression...). 

Les éléments qui composent LVM sont :

  • Les volumes physiques (PV) : ce sont les espaces de stockage traditionnels (disques, partitions, éventuellement des fichiers montés en loopback), sur lesquels LVM crée ses volumes logiques. Il comprend un en-tête spécial et se divise en blocs physiques (extents).

  • Les groupes de volumes (VG) : Ce sont des groupes de volumes physiques (PV) réunis par LVM en un seul « disque virtuel ». Un groupe de volumes contient des volumes logiques, ceux-ci sont répartis par LVM de manière transparente sur les différents volumes physiques : un volume logique peut même être dispersé à travers les disques disponibles.

  • Les volumes logiques (LV) : ce sont des « partitions virtuelles » (logiques parce qu'elles sont produites par un logiciel sans forcément correspondre à une portion d'un disque matériel. Les volumes logiques sont constitués d'étendues de blocs physiques réunis en un seul espace de stockage et rendus lisibles par le système. On peut les utiliser comme des partitions ordinaires.

  • Étendue physique (PE) : un petit bloc de disques (en général de 4 Mo) qui peut être affecté à un volume logique. Les étendues physiques se comportent comme les secteurs ou les cylindres des disques durs physiques.

Prise en main de l'outil LVM

Scénario

Maintenant, je suis sûr que beaucoup d'entre vous ont rencontré la redoutable notification de manque d'espace disque, et alors vous devez commencer à passer en revue vos téléchargements, supprimer tous vos gros fichiers, supprimer vos jeux ou autres. Vous devez penser à l'expansion de votre disque ! 

Alors, allez-vous ajouter un autre disque dur, y monter votre partition personnelle et commencer à y déplacer des fichiers, ou allez-vous acheter un disque plus grand, copier toutes vos partitions, puis étendre les partitions ?

L'un des meilleurs choix que vous pouvez faire est d'installer votre distribution Linux sur une partition LVM. 

Lorsque vous vous renseignez pour la première fois des informations sur LVM, cela ressemble un peu à une matrice RAID où vous avez plusieurs disques et où les données sont réparties sur ces disques d'une manière ou d'une autre. Cependant, LVM ne fournit aucune redondance, mais cela étend bien vos partitions sur plusieurs disques physiques, comme le RAID. Et ce que vous pouvez faire, c'est continuer à ajouter des disques pour continuer à étendre cette partition à la volée.

Quelques commandes basiques pour commencer à s’amuser avec LVM:

Note : Exécutez toutes les commandes en tant que root (en utilisant sudo) ou cela ne fonctionnera pas.

Exemple : sudo lvs

La commande la plus basique de LVM est l’affichage des différents volumes et groupes, pour cela nous disposons de :

  • pvs : Afficher les détails succincts des volumes physiques
  • vgs : Afficher les détails succincts des groupes de volumes
  • lvs : Afficher les détails succincts des volumes logiques

Pour les besoins de cet article, j'utiliserai "my-virtual-group" à la place du nom de votre groupe de volumes. Remplacez donc “my-virtual-group partout dans ce document par le nom de VOTRE groupe de volumes. 

Pour voir quels groupes de volumes sont sur votre système, exécutez la commande vgs dans votre terminal. 

Je vais également utiliser /dev/sdXX comme nom de périphérique. Remplacez-le par la partition que vous prévoyez d'utiliser sur votre nouveau disque. Vous pouvez le confirmer avec sudo fdisk -l.

Pour trouver où se trouve le chemin d'accès à votre volume physique, exécutez lvdisplay et recherchez-le LV Path dans la liste. Nous allons utiliser ce chemin avec la commande lvextend plus tard.

Pour étendre les partitions à un nouveau lecteur

  1. Créer une partition LVM vide sur le nouveau disque avec fdisk ou gparted.

  2. Créez un volume physique sur le nouveau disque avec pvcreate /dev/sdXX- Vous pouvez vérifier le nom de la nouvelle partition avec sudo pvs qui devrait avoir une entrée vide sous VG.

  3. Étendez votre groupe de volume au nouveau disque avec vgextend my-virtual-group /dev/sdXX.

  4. Étendez votre volume logique et redimensionnez la partition à l'intérieur avec lvextend -l +100%FREE -r /dev/my-virtual-group/root

Dans la commande précédente, vous pouvez changer la valeur de +100%FREE en fonction de l'espace que vous voulez que le nouveau volume logique prenne sur le nouveau disque.

Vous pourriez dire par exemple :

lvextend -l +50%FREE r /dev/my-virtual-group/root

Ou, si vous voulez l'étendre d'une taille spécifique (+10G l'étend de 10 gigaoctets), utilisez :

lvextend -L +10G -r /dev/my-virtual-group/root

Vous pouvez également utiliser +500M pour 500 Mégaoctets et ainsi de suite.

À noter que si vous spécifiez des tailles, la commande passe de -l minuscule à -L majuscule après lvextend.

Si tout s'est bien passé, vous avez maintenant étendu votre espace au nouveau disque et pouvez à nouveau disposer d’espace de stockage sans modifier votre expérience avec vos programmes ou data stockées sur votre ordinateur.

Et vous, connaissez-vous d’autres techniques de partitionnement ? Quel est votre gestionnaire de volumes préféré ? N'hésitez pas à me faire des retours dans les commentaires ou par mail, j’y répondrai avec plaisir.