Objectif
Ce tutoriel peut être utilisé comme la suite du tutoriel sur la Mise en place d’un RAID-1 Logiciel ou tout simplement avec des disques physiques non monté en RAID.
L’exemple d’installation qui suivra se base sur un volume RAID de 1000.2 Go, dont l’installation a été décrite dans le tutoriel RAID (lien ci-dessus).
Le volume physique utilisé dans tout l’exemple sera /dev/md0 (qui correspond aux RAID1 de 1000.2 Go).
Quelques explications sur LVM
Fonctionnement
LVM (ou Logical Volume Management) permet de créer une sorte de « couche d’abstraction » entre vos disques durs, unités RAID ou encore unité SAN et la gestion de vos points de montage.
Cela permet de gérer de manière plus souple vos allocations d’espace disque pour chaque point de montage.
Le principe de fonctionnement LVM se base sur des PV ou Physical Volumes (volumes physiques) tels que des disques durs, des unités RAID, des espaces distants tels que des SAN, DAS.
Toutes ces unités (PV) sont regroupées dans un VG ou Volume Groups, (groupes de volumes) pour former un espace de stockage plus important.
Dans ce (ou ces) VG, on découpe ensuite des LV ou Logical Volumes (volumes logiques) qui seront formatés puis monté sur différents points de montage.
Cela permet par la suite une plus grande souplesse de gestion de ces LV, ayant la possibilité de les redimensionner (à chaud, même si déconseillé) d’en ajouter ou d’en supprimer, sans jamais à avoir à toucher aux unités physiques (PV).
Vocabulaire
PV: Physical Volumes
Toute unité de stockage, disque dur, unité RAID, SAN, DAS forment donc des volumes physiques.
VG: Volumes Groups
Les différents volumes physiques sont concaténés dans des groupes de volumes. C’est concrètement « l’espace utile » dans lequel vous pourrez créer des systèmes de fichier et les monter.
Il faut bien entendu au minimum un Volumes Group pour pouvoir utiliser lvm.
Généralement, on créé les VG en rassemblant les unité de stockage de même caractéristique, un SAN, deux disques durs de même caractéristique…
LV: Logical Volume
les LV, Logical Volumes, sont des fragments de ces VG que vous pouvez créer dynamiquement, redimensionner. Ce sont ces éléments qui serviront à héberger un système de fichier et que vous monterez.
Installation de LVM
L’installation est extrêmement simple, elle consiste uniquement à l’installation du paquet lvm2
sudo apt-get install lvm2
Mise en place de LVM
Aperçu de l’organisation du LVM de cet exemple
Création du PV (Physical Volume)
Dans cet exemple le Physical Volume utilisé sera la partition RAID de 1To (/dev/md0). Vous devez donc lancer la commande suivante :
sudo pvcreate /dev/md0 File descriptor 4 left open Physical volume "/dev/md0" successfully created
Si tout se passe bien, vous aurez cette dernière phrase « successfully created« .
Création du VG (Volumes Group)
Le VG contiendra donc uniquement dans cet exemple le volume physique /dev/md0
Tapez la commande suivante pour créer un VG.
sudo vgcreate vg1 /dev/md0 File descriptor 4 left open Volume group "vg1" successfully created
vg1 correspond au nom du Volume Group et /dev/md0 le physical volume qui y sera inclu.
Il semblerait qu’avec des noms trop long, l’affichage lors de la commande df -h, par exemple, ne se fasse pas bien. L’auteur de ce tutoriel a donc préconisé une longueur maximale de 7 caractères pour l’ensemble VG/VL, soit 2 caractères pour le VG et 5 caractères pour le LV, soit 3 caractères pour le VG et 4 caractères pour le LV.
La syntaxe pour l’accès aux systèmes de fichiers des LV sera la suivante: /dev/vg1/foo où vg1 est le nom du VG et foo le nom du LV.
Afin d’obtenir des informations sur le VG précédemment créé (et de vérifier que tout est en ordre) vous pouvez taper la commande suivante :
sudo vgdisplay File descriptor 4 left open --- Volume group --- VG Name vg1 System ID Format lvm2 Metadata Areas 1 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 1 Act PV 1 VG Size 931,51 GB PE Size 4,00 MB Total PE 238466 Alloc PE / Size 0 / 0 Free PE / Size 238466 / 931,51 GB VG UUID XjP6Mq-Snc1-1GZ5-G8Hh-awbJ-V1Nr-IpPAw3
Création des LV
Maintenant que le Volume Group est créé, on peut le découper en plusieurs LV (ou volumes logiques) pour affecter des systèmes de fichiers et points de montages à chacun.
Par exemple, dans cet exemple, l’objectif est de créer une partition de 45 Go /home, une partition de 20 Go /serveurs pour tout ce qui est services (mySQL, Apache, …) et une partition de 600 Go /public pour un stockage public.
L’espace disque restant servira à agrandir ces différentes partitions au fil du temps.
Espace Serveurs
Lancez la commande suivante pour créer une partition de 20 Go pour les serveurs.
sudo lvcreate -n srv -L 20G vg1 File descriptor 4 left open Logical volume "srv" created
La commande lvcreate prend pas mal d’arguments, mais les deux principaux sont
- -n pour le nom du LV (s’il n’est pas spécifié, il prendra le nom de lvol# où # est un nombre autoincrémenté géré par LVM)
- -L (la majuscule est importante) pour la taille de ce LV
- Le troisième argument est tout simplement le nom du VG dans lequel ce LV sera affecté.
Espace home
sudo lvcreate -n home -L 45G vg1 File descriptor 4 left open Logical volume "home" created
Espace Public
sudo lvcreate -n public -L 600G vg1 File descriptor 4 left open Logical volume "public" created
Une fois tous les LV créés, vous pouvez lancer la commande lvdisplay pour vous assurer que tout est en ordre
sudo lvdisplay File descriptor 4 left open --- Logical volume --- LV Name /dev/vg1/srv VG Name vg1 LV UUID 08SrI7-o4JU-avRr-k8HM-Y90Z-ctNq-a0vgmB LV Write Access read/write LV Status available # open 0 LV Size 20,00 GB Current LE 5120 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0 --- Logical volume --- LV Name /dev/vg1/home VG Name vg1 LV UUID fgs6qj-2etI-iJwr-bAhH-TGXw-z6Nf-dwzhsg LV Write Access read/write LV Status available # open 0 LV Size 45,00 GB Current LE 6400 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:1 --- Logical volume --- LV Name /dev/vg1/public VG Name vg1 LV UUID kM8miD-HICf-cKh4-aVvD-z4GR-g3OH-tShVt6 LV Write Access read/write LV Status available # open 0 LV Size 600,00 GB Current LE 153600 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:4
Formatage et Montage des LV
Une fois tous vos LV créés, il suffit de les formater (dans cet exemple, tout se fera en ext3) puis de les monter (et bien sûr, de les ajouter au fstab, afin qu’ils soient automatiquement montés au démarrage de la machine)
Formatage
Le formatage est tout à fait classique, de la même manière que l’on formaterait un disque dur physique
sudo mkfs -t ext3 /dev/vg1/srv sudo mkfs -t ext3 /dev/vg1/home sudo mkfs -t ext3 /dev/vg1/public
Montage et inscription dans /etc/fstab
Pour les monter, rien de plus simple:
sudo mkdir /public /serveurs sudo mount /dev/vg1/public /public sudo mount /dev/vg1/src /serveurs
pour la home, c’est plus délicat, puisqu’elle est déjà utilisée. Il faut donc, monter temporairement le système de fichiers afin de copier les données
sudo mkdir /home_tmp sudo mount /dev/vg1/home /home_tmp sudo cp -r /home/* /home_tmp/ sudo umount /home_tmp
Puis inscrire tous les LV dans la table de montage /etc/fstab comme ceci:
sudo vim /etc/fstab
# Volumes Logiques LVM # SRV (Partition Serveurs) /dev/vg1/srv /serveurs ext3 relatime 0 2 # HOME (Partitions home) /dev/vg1/home /home ext3 relatime 0 2 # PUBLIC (Partition Public) /dev/vg1/public /public ext3 relatime 0 2
Voilà ! La mise en place est terminée.
Administration de LVM
Agrandissement d’un volume logique
Pour agrandir un volume logique, il est préférable de démonter en premier lieu la partition à redimensionner.
Dans cet exemple, la partition à agrandir sera /dev/vg1/srv. Elle a été créée avec 20 Go et sera agrandie à 35 Go.
Première étape, démontage de la partition:
sudo umount /serveurs
Une fois démontée, on agrandit le volume logique avec la commande lvresize
Il est primordial que la nouvelle taille choisie soit supérieure à celle du système de fichier actuel. Dans cet exemple, il faut que la nouvelle taille du volume logique soit supérieur à 20 Go. Sinon vous détruiriez complètement le système de fichier contenu dans le volume logique ! (Donc toutes les données se trouvant dans /serveurs)
sudo lvresize -L 35G /dev/vg1/srv File descriptor 4 left open Extending logical volume srv to 35,00 GB Logical volume srv successfully resized
Après l’agrandissement logique, il faut à présent agrandir le système de fichier contenu dans ce volume logique. Etant donné que le système de fichier est au format ext3, la commande à utiliser est resize2fs
sudo e2fsck -f /dev/vg1/srv e2fsck 1.41.4 (27-Jan-2009) Passe 1 : vérification des i-noeuds, des blocs et des tailles Passe 2 : vérification de la structure des répertoires Passe 3 : vérification de la connectivité des répertoires Passe 4 : vérification des compteurs de référence Passe 5 : vérification de l'information du sommaire de groupe /dev/vg1/srv : 11/1638400 fichiers (0.0% non contigus), 146882/6553600 blocs
Lancez la commande suivante (la nouvelle taille par défaut sera l’intégralité du volume physique, à savoir 35 Go)
sudo resize2fs /dev/vg1/srv resize2fs 1.41.4 (27-Jan-2009) Resizing the filesystem on /dev/vg1/srv to 9175040 (4k) blocks. Le système de fichiers /dev/vg1/srv a maintenant une taille de 9175040 blocs.
Il ne reste plus qu’à remonter le système de fichier
sudo mount /serveurs
Et vérifier que la taille est correcte:
sudo df -h | grep srv /dev/mapper/vg1-srv 35G 177M 33G 1% /serveurs
Rétrécissement d’un volume logique
Création d’un nouveau volume logique
Suppression d’un volume logique
Afin de supprimer un volume logique, il faut d’abord le démonter.
sudo umount /dev/vg1/srv
Puis une fois démonté, il suffit simplement de lancer la commande lvremove
sudo lvremove /dev/vg1/srv
Le volume logique est supprimé et la place qu’il occupait de nouveau disponible.