1 LVM2 : Le gestionnaire de volumes logiques
1.1 Introduction à LVM :
1.1.1 Pourquoi aurais-je besoin de LVM ?
LVM est un mécanisme permettant de gérer l’allocation de l’espace disque aux applications et au utilisateurs à un niveau d’abstraction plus élevé que la conception habituelle des disques et partitions. Cette abstraction permet ainsi de s’affranchir des limitations de la gestion du stockage par partitions.
Les volumes logiques peuvent êtres redimensionnés, étendus sur un autre disques ou déplacés sur le système de stockage sous jacent sans les risques du redimmensionnement des partitions. Ils sont également nommés par des labels définis par l’utilisateurs sans recourir à la notation habituelle des disques (sda, sdb etc…).
Si à l’installation les tailles de partition de données ont été mal calculées causant des tailles de partition systèmes ou de données étriquées, avec LVM il n’est plus nécessaire de détruire ces partitions (et de réinstaller s’il s’agit d’une partition système), il suffit de redimensionner la partition.
1.1.2 Terminologie de LVM :
Volume Physique (PV ou Physical Volume) : Il s’agit d’un élément de stockage physique de l’ordinateur, comprendre un disque dur, une partition de disque, un disque en RAID logiciel etc… qui est attribué à LVM.
Groupe de Volume (VG ou Volume Group) : C’est un pool de volumes physiques dont la gestion est assurée par LVM.
Volume Logique (LV ou Logical Volume) : C’est un espace de stockage alloué sur un Groupe de Volume. Au final c’est ce qui est utilisé par le système en remplacement des partitions.
Physical Extent / Logical Extent : Les volumes logiques et physiques sont divisés en blocs de données. Ces blocs sont nommés ainsi et ont tous les même taille sur un même volume.
1.1.3 Installation :
LVM2 est désormais disponible en standard dans la plupart des distributions Linux. Si vous utilisez le noyau standard de votre distribution, les modules nécessaires seront déja compilés pour vous. Si vous utilisez un noyau personnalisé, je suis certain que vous saurez trouver vous même les options à sélectionner 😉
Il restera juste les outils en ligne de commande à installer :
# apt-get install lvm2
En effet, LVM ne s’administre qu’en ligne de commande. Néanmoins celles-ci sont simples, leur nom est suffisament explicite et il commence systématiquement par :
- pv lorsqu’elles portent sur les volumes physiques
- vg pour les commandes pour manipuler un groupe de volume
- lv lorsqu’il s’agit d’administrer les volumes logiques
Ces commandes sont également présentes dans le « shell » lvm.
1.2 Administration de LVM2 :
1.2.1 Création d’un volume logique :
On commence par créer un périphérique physique LVM :
debian:~# pvcreate /dev/hdb1 VG1 Physical volume "/dev/hdb1" successfully created Device VG1 not found (or ignored by filtering).
debian:~# pvdisplay /dev/hdb1 --- NEW Physical volume --- PV Name /dev/hdb1 VG Name PV Size 4,09 GB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID c2XjmK-HWad-xms2-2NXb-UsMn-ETfy-eXEyJF
Ensuite on créé un Volume Physique utilisant ce disque physique :
debian:~# vgcreate MyVG /dev/hdb1 Volume group "MyVG" successfully created debian:~# vgdisplay MyVG --- Volume group --- VG Name MyVG 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 4,09 GB PE Size 4,00 MB Total PE 1046 Alloc PE / Size 0 / 0 Free PE / Size 1046 / 4,09 GB VG UUID 1tjZ0L-JHPS-43tc-jFD8-22Jh-QuQf-KLy5Pd
Il ne reste plusqu’à créer un ou plusieurs volumes logiques. Dans notre cas, nous allons créer deux volumes logiques. L’un nommé Softs et l’autre Data :
debian:~# lvcreate -L 1g -n Softs MyVG Logical volume "Softs" created debian:~# lvcreate -L 2g -n Data MyVG Logical volume "Data" created debian:~# lvdisplay -a --- Logical volume --- LV Name /dev/MyVG/Softs VG Name MyVG LV UUID z4MFxB-8tvO-v5g3-zkyD-3lOD-AhST-hZqDRT LV Write Access read/write LV Status available # open 0 LV Size 1,00 GB Current LE 256 Segments 1 Allocation inherit Read ahead sectors 0 Block device 254:0 --- Logical volume --- LV Name /dev/MyVG/Data VG Name MyVG LV UUID Dj1iVU-wSCa-DLgT-hzlQ-ielB-bArY-EKkfPQ LV Write Access read/write LV Status available # open 0 LV Size 2,00 GB Current LE 512 Segments 1 Allocation inherit Read ahead sectors 0 Block device 254:1
On peut maintenant créer un système de fichier et monter ces volumes logiques dans l’arbrorescence. Par commodité il sera plus simple d’indiquer les lignes adéquates dans le fichier /etc/fstab.
debian:~# mkdir /mnt/Data debian:~# mkfs.ext3 /dev/MyVG/Softs debian:~# mkfs.ext3 /dev/MyVG/Data debian:~# mount /dev/MyVG/Data /mnt/Data debian:~# mount /dev/MyVG/Softs /usr/local
1.2.2 Redimensionnement d’un volume logique :
Il est important ici de voir que modifier la taille du volume logique ne revient à modifier que la taille de la « boite ». Il est indispensable de propager les modifications de la taille du système de fichier et cela doit être fait dans un ordre précis.
1.2.2.1 Agrandissement :
L’opération consiste à démonter le volume, le vérifier, augmenter la taille du volume logique et enfin augmenter la taille du système de fichiers.
debian:~# umount /mnt/Data/ debian:~# fsck /dev/MyVG/Data fsck 1.40-WIP (14-Nov-2006) e2fsck 1.40-WIP (14-Nov-2006) /dev/MyVG/Data: clean, 11/262144 files, 25406/524288 blocks debian:~# lvresize -L 3G /dev/MyVG/Data Extending logical volume Data to 3,00 GB Logical volume Data successfully resized debian:~# fsck -f /dev/MyVG/Data fsck 1.40-WIP (14-Nov-2006) e2fsck 1.40-WIP (14-Nov-2006) 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/MyVG/Data: 11/262144 files (9.1% non-contiguous), 25406/524288 blocks debian:~# resize2fs /dev/MyVG/Data resize2fs 1.40-WIP (14-Nov-2006) Resizing the filesystem on /dev/MyVG/Data to 786432 (4k) blocks. Le système de fichiers /dev/MyVG/Data a maintenant une taille de 786432 blocs. debian:~# mount /dev/MyVG/Data /mnt/Data/
1.2.2.2 Rétrécissement :
L’opération consiste à démonter le volume, le vérifier, réduire la taille du système de fichier et enfin réduire la taille du volume logique.
debian:~# umount /mnt/Data/ debian:~# fsck -f /dev/MyVG/Data fsck 1.40-WIP (14-Nov-2006) e2fsck 1.40-WIP (14-Nov-2006) 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/MyVG/Data: 11/393216 files (9.1% non-contiguous), 29518/786432 blocks debian:~# resize2fs /dev/MyVG/Data 2G resize2fs 1.40-WIP (14-Nov-2006) Resizing the filesystem on /dev/MyVG/Data to 524288 (4k) blocks. Le système de fichiers /dev/MyVG/Data a maintenant une taille de 524288 blocs. debian:~# lvresize -L 2G /dev/MyVG/Data WARNING: Reducing active logical volume to 2,00 GB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce Data? [y/n]: y Reducing logical volume Data to 2,00 GB Logical volume Data successfully resized debian:~# mount /dev/MyVG/Data /mnt/Data/ debian:~# fd -h /mnt/Data/ debian:~# df -h /mnt/Data/ Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur /dev/mapper/MyVG-Data 2,0G 68M 1,9G 4% /mnt/Data
1.2.3 Les snaphots :
Les snapshots constituent l’une des fonctionnalités clé de LVM2. Un snapshot est un cliché du volume à un instant t, ce qui est très pratique pour toutes les opérations qui nécessitent que les données ne soient pas modifiées comme les sauvegardes. De plus, depuis LVM2, les snapshots sont en lecture/écriture. Ce qui signifie qu’il est possible de faire un snapshot du système. De remonter le snapshot des partitions systèmes en lecture/écriture pour par exemple installer un logiciel sensible. Si le résultat n’a pas été problant, que les système est endommagé ou autre, il suffit de démonter ce snapshot, de remonter le volume logique puis de supprimer le snapshot et le tour est joué!
1.2.4.1 Création d’un snapshot :
Commençons par créer un snapshot du volume logique Softs :
debian:~# lvcreate -L512M -s -n SnapSofts /dev/MyVG/Softs Logical volume "SnapSofts" created
1.2.4.2 Montage d’un snapshot :
Un snapshot de monte comme n’importe quel volume logique :
debian:~# mkdir /mnt/snapsofts debian:~# mount /dev/MyVG/SnapSofts /mnt/snapsofts/
1.2.4.3 Suppression d’un snapshot :
debian:~# umount /mnt/snapsofts/ debian:~# lvremove /dev/MyVG/SnapSofts Do you really want to remove active logical volume "SnapSofts"? [y/n]: y Logical volume "SnapSofts" successfully removed
1.2.4 Redimensionnement d’un Groupe de Volume :
Grâce à LVM, il est possible à tout moment d’ajouter ou de retirer des disques dans un groupe de volume pour ajuster l’espace disque nécessaire.
1.2.4.1 Agrandissement :
Ajoutons tout le disque /dev/hdd à notre groupe de volume MyVG. Pour cela il est obligatoire d’initialiser le disque via la commande pvcreate. C’est seulement après qu’il est possible d’étendre le volume de groupe pour qu’il utilise ce disque
debian:~# pvcreate /dev/hdd Physical volume "/dev/hdd" successfully created debian:~# vgextend MyVG /dev/hdd Volume group "MyVG" successfully extended debian:~# vgdisplay MyVG --- Volume group --- VG Name MyVG System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 9 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size 12,07 GB PE Size 4,00 MB Total PE 3089 Alloc PE / Size 768 / 3,00 GB Free PE / Size 2321 / 9,07 GB VG UUID 1tjZ0L-JHPS-43tc-jFD8-22Jh-QuQf-KLy5Pd
On constate que désormais notre volume de groupe fait désormais 12Go. Cet espace est désormais accessible pour les volumes logiques créés (lvresize) ou à créer dans cet espace (lvcreate).
1.2.4.2 Retrait d’un disque :
Les opérations de retrait d’un disque peuvent être souhaitées lorsque l’un des disques est de capacité trop faible ou pire, lorsque celui-ci présente des signes de faiblesses. Avant de procéder à une telle opération, il est important de sauvegarder les données, ainsi que de s’assurer qu’au final la capacité du VG sera au moins équivalente à ce qu’elle était avant le retrait du disque.
Pour réduire un volume de groupe, il est nécessaire de déplacer tous les Physical Extent du premier disque vers le second.
debian:~# pvmove /dev/hdb1 /dev/hdb1: Moved: 27,1% /dev/hdb1: Moved: 33,3% /dev/hdb1: Moved: 62,5% /dev/hdb1: Moved: 91,9% /dev/hdb1: Moved: 100,0% debian:~# vgreduce MyVG /dev/hdb1 Removed "/dev/hdb1" from volume group "MyVG"
Le disque /dev/hdb1 peut désormais être retiré sans perte de données car il était entièrement dédié à notre groupe de volume (une seule partition sur tout le disque).
2 Le RAID Logiciel :
2.1 Introduction :
Linux supporte depuis maintenant assez longtemps le RAID au niveau du noyau. Cela permet d’utiliser des disques en RAID sans pour autant nécessiter de contrôleur RAID. Le noyau supporte actuellement le RAID 0 (stripping), 1 (mirroring), 0+1 (stripping en mirroir), 4, 5 et 6 (parité).
2.2 Avantages et inconvénients du RAID logiciel :
Avantages :
- Faible coût
- Ne nécessite pas de contrôleur RAID
- Pas de risque de corruption de données à cause d’un bug ou d’une mise à jour du firmware
- Le format de données du RAID est ouvert
- Le format du RAID est neutre du point de vue du contrôleur. Le RAID soft ne connait pas les problèmes de compatibilité entre les différents fabricants de carte
- Les performances du RAID peuvent être augmentées par l’upgrade du CPU
- Un niveau d’abstraction plus élevé permettant un éventail de matériel supporté plus étendu
- Le noyau de Linux a une durée de support plus étendue que la plupart de celle fournie par les fabricants de cartes RAID
- Il est plus rapide et facile de corriger un problème au niveau du noyau qu’au niveau matériel
- Alors que les fonctionnalités d’une carte RAID sont fixées à l’achat pour un model donné, celles du noyau peuvent évoluer avec le temps
- Certaines cartes RAID ATA et SATA ont tendance à masquer certaines fonctionnalités comme les alertes SMART
Inconvénients :
- Le cache des cartes RAID améliore significativement les performances
- Le calcul de parité est généralement plus rapide lorsqu’il est effectué par la carte que par le CPU
- Les batteries des cartes RAID permettent de correctement flusher les données sur les disques
- Le bus PCI sera saturé bien avant qu’une carte RAID ne le soit.
3.3 Création d’un RAID 1 (mirror) pas à pas :
Nous allons voir la création d’un RAID 1 avec les partitions /dev/hdb1 et /dev/hdd1 sans gestion des disques spare qui est pourtant une fonctionnalité extraordinaire. Ces partitions sont de capacité identique (6Go) et leur type est 0xFD (Linux RAID Autodetect). Notez qu’il est tout à fait possible de faire du RAID directement avec des disques comme support physique.
La gestion du RAID se fera via la commande mdadm qui devra être installée auparavent sur le système.
On commence par créer une partition RAID à partir de ces partitions :
debian:~# mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/hdb1 /dev/hdd1 mdadm: array /dev/md0 started.
Le détail de ce RAID peut être obtenu via cette commande :
debian:~# mdadm --detail /dev/md0 /dev/md0: Version : 00.90.03 Creation Time : Tue Sep 25 01:03:34 2007 Raid Level : raid1 Array Size : 6291328 (6.00 GiB 6.44 GB) Device Size : 6291328 (6.00 GiB 6.44 GB) Raid Devices : 2 Total Devices : 2 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Tue Sep 25 01:03:34 2007 State : clean, resyncing Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Rebuild Status : 86% complete UUID : 20ba3ba8:41d75456:9d4deba6:47ca997f (local to host debian) Events : 0.1 Number Major Minor RaidDevice State 0 3 65 0 active sync /dev/hdb1 1 22 65 1 active sync /dev/hdd1
Ensuite il faut figer la configuration du RAID dans le fichier /etc/mdadm/mdadm.conf :
DEVICE partitions CREATE owner=root group=disk mode=0660 auto=yes HOMEHOSTMAILADDR root ARRAY /dev/md0 devices=/dev/hdb1,/dev/hdd1
A noter qu’il est possible d’obtenir le même résultat grâce à la commande mdadm –detail –scan >> /etc/mdadm/mdadm.conf
Et on peut s’assurer que le RAID est ok grâce à cette commande :
debian:~# cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 hdb1[0] hdd1[1] 6291328 blocks [2/2] [UU] unused devices:
La partition RAID peut ainsi être formatée et montée comme n’importe quelle partiton :
debian:~# mkfs.ext3 /dev/md0 debian:~# mount /dev/md0 /usr/local/
3.4 Réparation d’un RAID soft :
Le RAID permet de se protéger d’une panne disque, il est néanmoins important de savoir comment récupérer un système sain lorsqu’il passe en mode dégradé. Sur ce RAID le second disque /dev/hdd a rendu l’âme et il n’est même plus détecté. Comme on peut le constater, il est absent du RAID.
debian:~# cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 hdb1[0] 6291328 blocks [2/1] [U_] unused devices:
Une fois ce disque remplacé et repartitionné comme il faut, il s’agit juste de l’ajouter à la grappe et de vérifier que le RAID se reconstruit :
debian:~# mdadm -a /dev/md0 /dev/hdd1 mdadm: added /dev/hdd1 debian:~# cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 hdd1[2] hdb1[0] 6291328 blocks [2/1] [U_] [===================>.] recovery = 99.9% (6291264/6291328) finish=0.0min speed=202944K/sec
Dans certaint cas, le retrait d’un disque défaillant peut nécessiter au préalable que ce disque soit marqué comme défaillant pour être retiré du RAID. Cela se fait comme suit :
debian:~# mdadm -f /dev/hdd1 debian:~# mdadm -r /dev/hdd1
3.4 Le boot avec grub en RAID soft :
L’installation de la plupart des distribution moderne en RAID soft ne posent pas de problème en général avec la partition /boot. Néanmoins il est important de s’assurer que le bootloader n’a pas été installé uniquement sur le MBD (Master Boot Record) du premier disque. En RAID 1 cela se fait simplement en bootant la machine avec successivement un disque de débranché. Si le PC ne boot pas sur le second disque, il suffit de réinstaller grub sur les 2 MBR de cette façon (en considérant que vos disques sont /dev/hda et /dev/hdb) :
debian:~# grub grub>device (hd0) /dev/hda grub>root (hd0,0) grub>setup (hd0) grub>device (hd0) /dev/hdb grub>root (hd0,0) grub>setup (hd0)