Gérer les espaces disques avec LVM

En termes d’espace de stockage, le Raspberry Pi ne dispose, par défaut, que de la carte micro SD. Aussi grande qu’elle puisse être, la capacité de stockage montrera rapidement ses limites pour peu qu’on y stocke quelques films. Je vous propose ici de recycler des disques durs de « récupération » qui pourraient dormir dans un placard pour monter un espace de stockage à moindre prix en utilisant LVM.

Le matériel

Station d'accueil 2xHD
Station d’accueil 2xHD

Les disques durs sont connectés sur une station d’accueil (de l’ordre de 25.00€) qui dispose de sa propre alimentation. En effet, comme vous le savez probablement, le Raspberry Pi n’est pas dimensionné pour alimenter de tels périphériques. Il est donc important de brancher les disques durs sur une borne disposant d’une alimentation dédiée. Les deux disques durs (A et B que l’on voit sur la photo) sont identiques : 250 Go chacun. Au-delà de la création d’un serveur NAS, l’objectif est d’exploiter cet espace de stockage pour le media center Kodi également installé sur un Raspberry Pi.

Alors voilà le problème… Sans aucun paramétrage supplémentaire, une fois ces deux disques montés sur le système, on dispose bien de 500 Go supplémentaires, mais dans deux points de montage distincts. Ce cloisonnement ne permet pas de disposer d’une médiathèque unique, accessible en un point central pour y stocker les fichiers.

Comment fusionner ces deux disques en un espace de stockage unique ?

Logical Volume Manager

Logical Volume Manager (LVM) est un système de gestion des espaces de stockage. Le LVM consiste à regrouper des disques physiques ou partitions (appelés volumes physiques) en un seul grand espace (appelé groupe de volumes) dans lequel vous pouvez découper des espaces logiques à volonté (appelés volumes logiques), les agrandir et les réduire dynamiquement.

Voyons maintenant comment LVM fonctionne…

Principes de fonctionement du LVM

Le schéma ci-dessous décrit le principe de fonctionnement de LVM, avec les notions suivantes :

  • PV : un support de stockage de données physique ;
  • VG : un regroupement logique de 1 à n PV ;
  • LV : un découpage logique au sein d’un VG.
Principes de fonctionnement de LVM
Principes de fonctionnement de LVM

Le LVM regroupe les disques physiques, ou tout autre support de stockage dit physique (disque, matrice RAID (matérielle ou logicielle), support de stockage en provenance d’un SAN), qu’on appelle volumes physiques PV (Physical Volume) en  un groupe de volumes VG (Volume Group). Ce groupe VG est vu par le LVM en quelque sorte comme un métadisque, dans  lequel nous allons pouvoir créer des volumes logiques LV (Logical Volume) à volonté.

Un volume logique est vu comme une partition qui peut contenir des données, dès l’instant où l’on à créé et monté un système de fichiers (comme on le ferait de manière classique sur une partition ordinaire).

Avantages du LVM

Le LVM permet de :

  • créer autant  de volumes logiques de différentes que l’on souhaite ;
  • ajouter ou supprimer dynamiquement des PV d’un VG. Lorsqu’on ajoute un PV, la capacité de stockage du VG supplémentaire ainsi disponible peut être utilisée pour créer de nouveaux LV ou agrandir un LV existant ;
  •  agrandir ou réduire dynamiquement un LV à volonté (il faut aussi pouvoir  agrandir/réduire un système de fichiers) ;

Il y a évidemment un revers à tous ces avantages. Si l’un des volumes physiques venait à péricliter, tous les volumes logiques s’appuyant sur ce dernier seraient perdus.

Installation de LVM

Installez lvm à l’aide de la commande :

Les disques A et B étant connectés, vérifions que le système les a reconnus :

Parmi les résultats figurent le disque A avec son unique partition /dev/sda1 et le disque B avec son unique partition /dev/sdb1 :

Pour ma part, j’ai effectué la configuration au niveau des partitions /dev/sda1 et /dev/sdb1. Je réalise que ce n’est pas forcément le meilleur choix puisque chacun des disques A et B ne contient qu’une seule partition occupant la totalité des disques et que l’idée est de fusionner l’intégralité des espaces disponibles… Je pense que dans mon cas, il aurait été préférable de configurer les PV au niveau des disques durs.

Création des Physical Volume

Les deux partitions de 250 Go sont effectivement reconnus telles que /dev/sda1 et /dev/sdb1. Nous allons maintenant les initialiser pour qu’elles soient utilisées par LVM :

Pour afficher les caractéristiques des PV disponibles sur le système, lancez la commande :

A ce stade, la configuration est succinte, les PV n’appartiennent à aucun VG. PE signifie Physical Extend (extension physique). Chaque PV constituant un VG est « découpé en tranches » appelées PE qui est l’unité de base de travail du LVM. Les valeurs ici à 0 seront renseignées dès que le PV sera assigné à un VG.

Création des Volum Group

Pour créer un VG, il est nécessaire de disposer d’au moins un PV. Pour créer le VG, lancer la commande :

Pour afficher les propriétés du VG créé, tapez la commande vgdisplay (l’option -v affiche également les volumes qui le composent) :

Les paramètres MAX LV et MAX PV indiquent respectivement le nombre maximum de volumes logiques pouvant être crées et de volumes physiques pouvant être ajoutés au groupe de volume (0 indique l’infini).

On remarque que le groupe de volume dispose de 119 236 PE de 4Mo chacun, soit 476 Go.

Maintenant que les PV /dev/sda1 et /dev/sdb1 font partie du VG volgrp, davantage d’infomations sont disponibles avec la commande pvdisplay :

Les PE des PV ne sont pas encore alloués car aucun LV n’est créé.

Création d’un Volume Logique (LV)

Un volume logique est un découpage d’un VG. C’est l’équivalent d’une partition dans laquelle on pourra créer un système de fichiers. Un LV occupe un certain nombre de PE d’un VG (contigus ou non), ce qui siginifie qu’il est possible :

  • d’agrandir un LV tant qu’il reste des PE sont libres dans le VG ;
  • de réduire un LV, ce qui libérera des PE dans le VG concerné, utilisables pour créer de nouveaux LV ou agrandir les LV existants.

Pour créer un volume logique dans un groupe de volume existant, on utilise la commande lvcreate en précisant le nom du LV à créer (option -l) ainsi que sa taille exprimée soit en LE (Logical Extension : représentation du PE au sein d’un LV, option -l), soit en Ko, Mo, Go, To, Po ou Eo (option -L).

La commande lvcreate ci-dessus permet donc de créer le LV « lvol1 » d’une taille de 119236 PE (la totalité des PE disponibles) dans le VG « volgrp ».

Propriétés du Volume Logique

Pour afficher les informations des LV, taper la commande lvdisplay :

Comme l’indique le retour de la commande ci-dessus, un LV est vu comme une partition associée à un ficheir périphérique : /dev/volgrp/lvol1. Il s’agit en fait d’un lien symbolique vers le fichier /dev/dm-0 qui est également pointé par /dev/mapper/volgrp-lvol1 pour des raisons de compatibilités avec les autres systèmes Unix :

L’option -m de la commande lvdisplay permet d’afficher également les segments occupés par le LV au sein des différents PV, c’est-à-dire la répartition des PE occupés par le LV dans chaque PV.

On retrouve bien les PE 0 à 59617 sur le premier PV (partition /dev/sda1) et les PE 59618 à 119235 sur le deuxième PV (partition /dev/sdb1).

Accès au volume

Il est maintenant possible de créer un système de fichier sur le LV :

et de le monter comme une partition classique :

La commande df listera le LV comme une partition classqiue :

Retour d’expérience sur les déconvenues rencontrées…

Souhaitant automatiser le montage du LV au démarrage de la machine, j’avais initialement ajouté la ligne suivante dans le fichier /etc/fstab :

Mais une erreur survenait au démarrage : « fsck.ext4 : no such file or directory while trying to open /dev/mapper/volgrp-lvol1 ». La combinaison des touches Ctrl+D permet de poursuivre le démarrage de la machine malgré cette erreur. Une fois démarré, la commande lvdisplay indiquait la statut « Not Available » pour le LV lvol1. La commande :

permet d’activer le LV, pour ensuite faire le montage. Donc, en résumé, le montage automatique via /etc/fstab ne fonctionne pas car à chaque redémarrage de la machine, le statut du LV passe systématiquement à « NOT AVAILABLE ». Il est donc nécessaire, à chaque démarrage du Raspberry :

  1. D’activer le LV ;
  2. De procéder au montage du LV.

Pour cela, on ajoutera les lignes :

dans le fichier de configuration /etc/rc.local. Le caractère & permet d’attendre la fin de l’exécution de la commande d’activation avant de lancer la commande pour le montage.

Astuce

Les commandes permettant de manipuler les volumes physiques (PV) sont préfixées par pv, celles manipulant les groupes de volumes (VG) sont préfixées par vg et celles relatives aux volumes logiques (LV) par lv.

Grâce à la commande « apropos » (équivalent à la commande « man -k ») qui permet d’afficher le nom et la description des pages de manuel, on peut lister rapidement les commandes disponibles sur les PV, VG et LV :

La  configuration  du  LVM  est  située  dans  les  fichiers  et  répertoires  présents  dans  /etc/lvm.  Le  fichier  /etc/lvm/lvm.conf  contient  la  configuration  globale.  La  configuration  des  différents  volumes  (physiques, groupes et logiques) ne se trouve pas dans un fichier, mais dans une structure présente au sein des périphériques  eux­mêmes, dans les premiers blocs : ce sont les métadatas des volumes physiques.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *