http://www.ed-diamond.com



Documents pareils

Principe. Technologies utilisées. 1. Linux et LVM. Les snapshots (instantannés) sous Linux et FreeBSD. Présentation de LVM. Organisation de LVM

Logical Volume Manager (LVM)

Administration de Parc Informatique TP07 : Installation de Linux Debian

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Le stockage. 1. Architecture de stockage disponible. a. Stockage local ou centralisé. b. Différences entre les architectures

INSTALLATION DE BACKUPPC

Il est courant de souhaiter conserver à

Mise en oeuvre TSM 6.1

Chi rement des postes PC / MAC / LINUX

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Session 8: Android File System

Sauvegarde sur un serveur Scribe

PPE 1 PRISE EN MAIN DE VMWARE VSPHERE 5.5 & CONFIGURATION D UNE MACHINE VIRTUELLE

Stockage Réseau. Le stockage s'échappe du système pour devenir une fonction réseau

Guide pour l Installation des Disques Durs SATA et la Configuration RAID

VMware ESX/ESXi. 1. Les composants d ESX. VMware ESX4 est le cœur de l infrastructure vsphere 4.

Systèmes informatiques

SAN AoE (ATA over Ethernet)

Introduction à Xen. Mehdi Sebbar MiNET. 5 Novembre 2010

Chapitre 3 : Système de gestion de fichiers

Stockage des machines virtuelles d un système ESXi jose.tavares@hesge.ch & gerald.litzistorf@hesge.ch

Installation d'un serveur Zentyal

UBUNTU Administration d'un système Linux (4ième édition)

DmilZ pour le forum Kimsufi.com. How-To : ESXi avec une seule IPv4 et une IPv6. Sommaire Historique Introduction...

INSTALL ATION D UNE D I S T RIBUTION

Les sauvegardes de l ordinateur

Cloner un disque dur

Commandes Linux. Gestion des fichiers et des répertoires. Gestion des droits. Gestion des imprimantes. Formation Use-IT

TD 1 - Installation de système UNIX, partitionnement

Administration de Systèmes UNIX

PARAGON Disk Wiper. Guide de l utilisateur. Paragon Technology GmbH, System Programmierung. Copyright Paragon Technology GmbH

Les méthodes de sauvegarde en environnement virtuel

Ordinateur Logiciel Mémoire. Entrées/sorties Périphériques. Suite d'instructions permettant de réaliser une ou plusieurs tâche(s), de résoudre un

Cours 13. RAID et SAN. 2004, Marc-André Léger

Guide Pratique: Installation Réseau

LES SYSTÈMES DE FICHIERS

Atelier : Virtualisation avec Xen

Linux Partition Mini-HOWTO

SYSTÈME DE GESTION DE FICHIERS

Boot Camp Guide d installation et de configuration

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes

Présentation du SC101

Guide pour l Installation des Disques Durs SATA et la Configuration RAID

Outils en ligne de commande

PROCÉDURE D'INSTALLATION

Acronis True Image 10 Home Edition

Entraide-Info. Entraide pour les informaticiens LINUX FEDORA CORE 4 : ADMINISTRATION DU SYSTEME OLIVIER D.

NON URGENTE TEMPORAIRE DEFINITIVE OBJET : RÉCUPÉRATION DES DONNÉES CLIENT SUR DISQUE DUR DÉFECTUEUX OU INVALIDÉ

Ce TP consiste à installer, configurer et tester un serveur DNS sous Linux. Serveur open source : bind9 Distribution : Mandriva

Backup , l intégration du backup sur disque

LINUX REMPLAÇANT WINDOWS NT

Système de Gestion de Fichiers

INSTALLATION DE WINDOWS 2000 SERVER POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

SERVEUR DE SAUVEGARDE POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

Acquisition des données

Chapitre IX : Virtualisation

Tout d abord les pré-requis : Au menu un certain nombre de KB

Gestion répartie de données - 1

Windows 7, Configuration

Personnes ressources Tice. Académie de Rouen

UPSTREAM for Linux on System z

Dexia Guide d installation de NetWorker Server 25 juin Legato Systems, Inc.

UNE VITESSE DE SAUVEGARDE EXCEPTIONNELLE

Fonctionnalités d Acronis :

Enoncé du TP 8 Système

Sauvegarde/Restauration

Architecture de la plateforme SBC

TP 1 et 2 de Réseaux en Master 1 Informatique : Assemblage d un réseau, configuration d adresses IP sous Linux et Windows

DEPLOIEMENT 1. IMAGEX. IMAGEX est le nom de la ligne de commande fournie pour gérer les fichiers WIM. 1. Créer un fichier WIM : capture

Retrouver de vieux programmes et jouer sur VirtualBox

Gestion des sauvegardes

IV- Comment fonctionne un ordinateur?

EX4C Systèmes d exploitation. Séance 14 Structure des stockages de masse

G.U.S.T.A.V. Gestion Unifiée des Systèmes de fichiers Transposée aux Appareillages Virtuels G U S T A V

Introduction. René J. Chevance

Guide pour l Installation des Disques Durs SATA et la Configuration RAID

DESKTOP Internal Drive. Guide d installation

La gestion des disques

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Stage SambaÉdu Module B. Jour 9 Outils complémentaires et problèmes récurrents divers

Haute Disponibilité High-Availability : HA. Les enjeux

Activité 1 : Création et Clonage d'une première machine virtuelle Linux OpenSuSE.

Sébastien Geiger IPHC Strasbourg

Cours de Système : Gestion de Fichiers

!" #$$%& Disque dur 2.5 pouces Firewire Apple MacOS FR V2.4 - Page 1/17

ORDINATEUR DOSSIERS FICHIERS

Howto: Comment faire cohabiter Backtrack et un Windows?

Configuration matériel. Tâche 2 : Installation proprement dite de l application sur un serveur de test virtualisé sous VmWare Workstation.

Service Informatique et Télématique (SITEL), Emile-Argand 11, 2009 Neuchâtel, Tél ,

I. Présentation du serveur Samba

Monter automatiquement des disques distants ou locaux avec automount/autofs

Tutorial Terminal Server sous

Table des matières. Serveur Mesnil Administration. Rédacteur : Jean-Louis Cech Date création : 10 Avril 2008

JaZUp manuel de l'utilisateur v2.4

Transcription:

Ceci est un extrait électronique d'une publication de Diamond Editions : http://www.ed-diamond.com Ce fichier ne peut être distribué que sur le CDROM offert accompagnant le numéro 100 de GNU/Linux Magazine France. La reproduction totale ou partielle des articles publiés dans Linux Magazine France et présents sur ce CDROM est interdite sans accord écrit de la société Diamond Editions. Retrouvez sur le site tous les anciens numéros en vente par correspondance ainsi que les tarifs d'abonnement. Pour vous tenir au courant de l'actualité du magazine, visitez : http://www.gnulinuxmag.com Ainsi que : http://www.linux-pratique.com et http://www.miscmag.com

renons l exemple d un disque dur pointé par le fichier spécial /dev/hda qui contient une partition /dev/hda2 pour le swap, /dev/hda5 pour le /home et /dev/hda6 pour le root (vous pouvez utiliser la commande système sfdisk -l pour lister les partitions de votre machine). Chaque partition possède un type (par exemple, 0x82 pour le swap ou 0x83 pour des partitions Linux) et contient en dehors du swap un système de fichiers (par exemple Ext3 ou Reiserfs). # sfdisk -l LVM ou comment changer d idée sur le stockage de données sous Linux P Disk /dev/hda: 608 cylinders, 255 heads, 63 sectors/track Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/hda1 * 101 607 506 4060144 5 Extended /dev/hda2 0+ 100 100-802400+ 82 Linux swap /dev/hda3 0-0 0 0 Empty /dev/hda4 0-0 0 0 Empty /dev/hda5 101+ 151 50-401200+ 83 Linux /dev/hda6 152+ 324 172-1380128 83 Linux La partition étendue est une contrainte du format de partition de type DOS dans lequel on ne peut créer plus de quatre partitions primaires mais où l on peut, par une partition étendue, créer un grand nombre de partitions logiques : Figure 1 : Partitionnement standard de type DOS Pourquoi utiliser un gestionnaire de volume logique? Sur un système Linux traditionnel, le découpage de l espace disque se fait habituellement par la création de partitions physiques de taille fixe lors de l installation du système. Le système de fichiers (structure logique abritant les fichiers et les répertoires, vos données en l occurrence) prenant place à l intérieur d une partition. Ce mode de mise en œuvre est simple et efficace mais permet difficilement d étendre l espace disponible en cas de saturation d une partition : si vous souhaitez ajouter 2 Go au système de fichiers /home, vous n avez pratiquement pas d autres possibilités que de réinstaller votre machine en choisissant un nouveau découpage lors de l installation. Et si le disque dur ne suffit pas, il vous faudra en ajouter un second mais en sacrifiant toujours à une réinstallation du système. Pour résumer le problème, puisque vous devez créer une partition sur un disque dur avant de pouvoir mettre en place un système de fichiers, ce dernier sera statique et impossible à étendre car il est impossible nativement de créer des partitions, et donc un système de fichiers, qui couvrent plusieurs disques durs (je passe sur la notion de Raid logiciel qui autorise cette fonctionnalité mais qui dépasse le cadre de cet article). Introduction à LVM LVM, dont l acronyme anglo-saxon signifie Logical Volume Manager, est un gestionnaire de volumes logiques qui apporte une vision abstraite du stockage de votre machine. La partition physique devient un composant élémentaire et ne va plus directement supporter le système de fichiers. Entre ces deux couches de bas et de haut niveau (successivement, la partition et le système de fichiers), vont s intercaler une première couche regroupant les partitions physiques (appelée volume groupe ) et une deuxième couche, dans laquelle nous allons créer les systèmes de fichiers (appelés volumes logiques ) mais qui seront dynamiquement retaillables (indifféremment en réduction ou en extension). 18 LM 54

Figure 2 : Découpage des données sous LVM L intérêt principal de cette approche est à la fois de pouvoir étendre facilement un volume groupe en ajoutant des partitions physiques (par exemple, un nouveau disque dur) et de changer la taille à chaud des volumes logiques sachant que ces derniers ne possèdent pas un emplacement précis sur un volume groupe et ne sont représentés que par leur nom et leur taille. Vous pouvez vérifier que votre distribution supporte LVM en chargeant le driver (module) lvm-mod et en validant la présence du package lvm (j utilise RPM sur la SuSE 8.0 mais l utilisation du format DEB est similaire) : # modprobe lvm-mod # lsmod grep lvm lvm-mod 58016 0 (unused) # rpm -q lvm lvm-1.0.3-22 Vous pouvez laisser le support par module (plus souple) mais aussi le compiler en dur : Figure 3 : Compilation du support LVM dans le noyau Linux Pour être précis, nous allons parler de volumes physiques comme composant élémentaire du stockage (un disque dur, une partition, un volume Raid logiciel, un device bloc réseau, voire un device en loopback), de volumes groupes comme abstraction de l espace disque (composés de un ou plusieurs volumes physiques présents ou non sur le même disque dur) et de volumes logiques dans lesquels nous allons créer nos systèmes de fichiers. Figure 4 : Couches d abstractions du modèle LVM Nous allons appeler PV un volume physique (Physical Volume), VG un volume groupe (Volume Group) et LV un volume logique (Logical Volume). Le nommage des volumes groupes et logiques est libre même si la convention habituelle est de préfixer un volume groupe par vg_ et un volume logique par lv_. Tout l espace disponible dans un volume groupe peut ne pas être utilisé dans les volumes logiques. Cela permet de garder en réserve de l espace disque pour l ajouter aux volumes logiques qui en auront besoin. Un peu d histoire LVM (dont les principes ont été développés par l Open Software Foundation) est notamment un ticket d entrée incontournable dans le monde de l entreprise actuel. Il faut bien comprendre que les gros Unix propriétaires possèdent tous leurs propres gestionnaires de volumes : Aix, Solaris, HP-UX, Tru64... (l implémentation actuelle LVM de Linux, qui en est à sa version 1.0.7, est très proche de celle de HP- UX). Linux n est donc pas un précurseur en la matière, mais disposer d un LVM est un enjeu primordial pour les décideurs informatiques souhaitant traiter des volumes de données conséquents. LVM 1.0.x (développé principalement par la société Sistina) est directement implémenté au niveau du noyau Linux depuis sa version 2.4 (avec possibilité d implémentation à partir du 2.2.17) ; la version 2.6 qui devrait arriver fin 2003 va intégrer la version 2.0 de LVM. Cette dernière version repose sur une nouvelle couche du noyau, le device mapper, qui rationalise l implémentation de drivers supportant des devices virtuels en mode blocs comme par exemple le Raid logiciel. On peut donc s attendre à de meilleures performances et une plus grande fiabilité. Pour la petite histoire, il s en est fallu de peu que le LVM Linux ne soit supplanté par un équivalent développé par IBM, appelé du doux acronyme de EVMS, et qui avait pour ambition de modifier la vision que l on pouvait avoir du stockage de données sous Linux en fédérant l essentiel LVM : Stockage de données Octobre 2003 19

des couches dans un même outil : partition, LVM, Raid logiciel, etc. (concept qui avait tout pour séduire). Les développeurs du noyau Linux ont finalement tranché en faveur du LVM2 de la startup Sistina plutôt que de choisir l outil novateur (peut-être un peu trop) du géant IBM : cela est la preuve, s il en est besoin, de l approche démocratique et mature du développement du noyau Linux. Autant être honnête, les fonctionnalités du driver EVMS restent très alléchantes à l heure qu il est ; la preuve en est que le projet continue d être développé, comme vous pourrez le constater sur le site officiel chez IBM. Peut-être entendrons-nous un jour reparler de cet outil sous une forme différente? Cas d utilisation de LVM Après avoir lu le début de cet article, vous avez peut-être la désagréable impression qu utiliser un gestionnaire de volumes est exclusivement réservé aux sociétés qui manipulent de grosses quantités de données. Cette impression est fausse car LVM peut être aussi très utile sur la machine d un particulier, en fait sur n importe quelle configuration. Vous êtes un particulier et vous possédez une machine disposant d un disque dur de 40 Go : vous échangez régulièrement beaucoup de fichiers avec vos amis et cela entraîne une saturation du répertoire /home? Vous installez régulièrement de nouveaux logiciels et votre /usr ne peut plus tenir la cadence? Une utilisation intensive de la machine cause la génération de fichiers de log qui remplissent la partition supportant /var? Avec LVM, il vous sera possible de préparer votre machine avec des tailles de partitions adaptées en prévision de leur occupation théorique et, en cas de nécessité, il vous sera possible d adapter au fur et à mesure des besoins la taille des partitions à leur utilisation réelle. Vous êtes un ingénieur système et le volume de données à traiter de votre société est en continuelle augmentation? Avec LVM, il vous suffira de rajouter un nouveau disque dur (en SCSI, cela peut même être fait à chaud) et de l ajouter dans un de vos volumes groupes. L espace nouvellement affecté pourra être utilisé par les systèmes de fichiers les plus demandeurs en quelques commandes. C est même souvent utilisé pour isoler les applications critiques en créant un volume groupe par application : vous gardez le contrôle de l occupation disque et vous sécurisez votre système en cas de débordement d une application dont la volumétrie a été sous-évaluée. Le LVM Linux n intègre pas directement le support du Raid1 (mode miroir où les données sont dupliquées sur au moins 2 disques pour supporter la perte d un disque). Il faut pour cela utiliser une carte Raid hardware ou plus simplement le driver Linux MD (Linux Multiple Device) : LVM utilise autant des partitions physiques que des partitions créées par Raid logiciel. Par contre, le support du mode striping (les données sont écrites par morcellement sur plusieurs disques durs pour améliorer les performances) est natif. Dans une utilisation professionnelle, l utilisation d une carte Raid est tout de même fortement conseillée vu son faible coût. La plupart des distributions Linux récentes disposent du support LVM. La configuration du volume manager est accessible aussi à l installation de votre machine, au moins sur les distributions RedHat, SuSE et Mandrake (l installation se fait en mode graphique). Cela n est pas possible par défaut sur la distribution Debian. Figure 5 : Installation graphique de LVM sur la SuSE, RedHat et Mandrake Passons maintenant à la mise en œuvre du LVM Linux en passant en revue les commandes disponibles ainsi que des exemples de mise en situation. Un peu de pratique A ce stade de l article, il paraît incontournable de pouvoir tester LVM en conditions réelles et je peux parfaitement concevoir que disposer d une machine vierge ou d un disque dur supplémentaire n est pas à la portée de tout le monde. Heureusement, le couteau suisse Linux va venir à votre service car, comme précisé rapidement en début de cet article, le LVM Linux supporte en particulier les devices en loopback (loop device) : nous allons donc pouvoir créer de faux disques durs (conceptuellement s entend) que vous allez manipuler comme des vrais. # dd if=/dev/zero of=/tmp/lvm0.iso count=50000 # dd if=/dev/zero of=/tmp/lvm1.iso count=50000 # dd if=/dev/zero of=/tmp/lvm2.iso count=50000 # modprobe loop # losetup /dev/loop0 /tmp/lvm0.iso # losetup /dev/loop1 /tmp/lvm1.iso # losetup /dev/loop2 /tmp/lvm2.iso Les commandes précédentes (exécutées sous root) créent trois fichiers vides d approximativement 25 Mo chacun (commande dd) et les montent en loopback sur les devices /dev/loop0 à /dev/loop2 (commande losetup). Pour résumer, 20 LM 54

Tableau 1 cela permet de simuler un device en mode bloc (comme l est un disque dur) à partir d un simple fichier ; une astuce très pratique et qui va nous aider à mettre en œuvre la quasi-totalité des commandes disponibles sans crainte de laisser le système instable (vous utiliserez losetup -d /dev/loopx pour supprimer le device). Voici donc une présentation non exhaustive des principales commandes à connaître pour mettre en œuvre LVM sous Linux (nous aborderons ensuite les plus importantes dans des exemples commentés tableau 1) : lvmdiskscan La première étape consiste donc à initialiser les deux pseudo-disques et à les ajouter dans un volume groupe : # pvcreate /dev/loop0 pvcreate physical volume /dev/loop0 successfully created # pvcreate /dev/loop1 pvcreate physical volume /dev/loop1 successfully created # pvscan pvscan reading all physical volumes (this may take a while...) pvscan inactive PV /dev/loop0 is in no VG [24.41 MB] Cette commande donne un aperçu de tous les périphériques utilisables par LVM sur votre machine : liste les disques durs IDE et SCSI, les partitions en Raid logiciel, les devices en loopback (loop device) et les devices bloc réseau (network block device). pvscan Lecture et affichage de tous les volumes physiques disponibles sur le système : utile pour localiser l espace non utilisé. vgscan lvscan pvcreate vgcreate lvcreate vgextend vgreduce lvextend lvreduce pvdisplay vgdisplay lvdisplay lvremove lvrename vgremove pvmove vgchange Lecture et affichage de tous les volumes groupes présents sur le système. Lecture et affichage de tous les volumes logiques présents sur le système. Initialisation d une partition (ou périphérique compatible) pour pouvoir l utiliser en volume physique : mise en place d un descripteur de volume groupe en début de partition. Les partitions doivent être de type 0x8e, à changer avec l utilitaire fdisk. Création d un volume groupe à partir de 1 ou plusieurs volumes physiques. Le VG sera accessible sous /dev/[vg] et peut être créé dans un mode linéaire (par défaut) ou un mode striping. Le volume est automatique activé. Création d un volume logique dans un volume groupe. Le LV sera accessible sous /dev/[vg]/[lv]. Ajout d un volume physique dans un volume groupe. Suppression d un volume physique dans un volume groupe. Extension de la taille d un volume logique. Réduction de la taille d un volume logique. Affiche des informations liées à un volume physique. Affiche des informations liées à un volume groupe. Affiche des informations liées à un volume logique. Supprime un volume logique. Renomme un volume logique. Supprime un volume groupe : vous devez vérifier qu il n y a pas de volume logique présent dans ce VG avant de le supprimer (le VG doit aussi être désactivé). Déplace les données d un volume physique dans un autre volume physique appartenant au même volume groupe. Est souvent utilisé pour pouvoir enlever un disque du gestionnaire de volume sans arrêt de service. Active ou désactive un volume groupe. LVM : Stockage de données Octobre 2003 21

pvscan inactive PV /dev/loop1 is in no VG [24.41 MB] pvscan total: 2 [48.83 MB] / in use: 0 [0] / in no VG: 2 [48.83 MB] # lvmdiskscan lvmdiskscan reading all disks / partitions (this may take a while...) lvmdiskscan /dev/hda1 [ 2.45 GB] DOS extended partition [0x05] lvmdiskscan /dev/hda2 [ 400 MB] Extended LINUX swap partition [0x82] lvmdiskscan /dev/hda5 [ 200 MB] Extended LINUX native partition [0x83] lvmdiskscan /dev/hda6 [ 700 MB] Extended LINUX native partition [0x83] lvmdiskscan /dev/loop0 [ 24.41 MB] new LVM loop device lvmdiskscan /dev/loop1 [ 24.41 MB] new LVM loop device lvmdiskscan /dev/loop2 [ 24.41 MB] free loop device lvmdiskscan 1 disk lvmdiskscan 0 whole disks lvmdiskscan 3 loop devices lvmdiskscan 0 multiple devices lvmdiskscan 0 network block devices lvmdiskscan 4 partitions lvmdiskscan 0 LVM physical volume partitions # vgcreate -s 8k vg01 /dev/loop0 /dev/loop1 vgcreate INFO: maximum logical volume size is 511.98 Megabyte vgcreate doing automatic backup of volume group vg01 vgcreate volume group vg01 successfully created and activated Vous aurez certainement remarqué que j ai utilisé une taille de bloc élémentaire (Extend Physique, résumé sous l acronyme PE) de 8k avec l option -s. Par défaut, ce dernier est à 4 Mo.Ce paramètre, essentiel, influe directement sur la taille qu il sera possible d atteindre dans un volume logique : pour réduire la trace mémoire dans le noyau Linux, il existe une limitation de 65536 PE dans un volume logique (la taille des PE va de 8 Ko jusqu à 16 Go par multiple de 2). La taille théorique (il existe des limitations dans le noyau Linux comme nous allons le voir plus loin) d un volume logique est donc de 16GBx65536PE = ~1 Petabytes. Pour en finir avec les limites du LVM Linux, vous devez savoir qu il est possible de créer jusqu à 99 volumes groupes, 256 volumes logiques et 256 volumes physiques. Il convient donc particulièrement de prévoir ce type de limitation en cas de gros volumes à traiter. Qu est-ce qu un Extend Physique? LVM divise chaque volume physique en unité adressage, appelées extend physique (PE), dont la taille est paramétrable lors de la création du volume groupe. Tous les volumes physiques présents dans un volume groupe possèdent la même taille d extend. Par symétrie, la plus petite unité allouable sur un volume logique est appelée un extend logique (LE). Techniquement, il va en fait y avoir mapping entre un extend logique (LE) d un volume logique et un extend physique (PE) présent dans un volume physique, comme indiqué dans le schéma qui suit (la taille d un extend logique est donc celle de l extend physique) : Figure 6 : Liaison des extends logiques et des extends physiques Un dernier point, si vous utilisez Devfs (notamment sous la Mandrake), vous devez utiliser le nom réel (/dev/ide/host0/bus0/target0/lun0/part1) et non le lien symbolique (par exemple, /dev/hda) lors de la création du volume groupe. Nous allons à présent créer un volume logique de 4 Mo et le renommer en lv_test : # lvcreate -L4M -n lv01 vg01 lvcreate doing automatic backup of vg01 lvcreate logical volume /dev/vg01/lv01 successfully created # vgdisplay vg01 - Volume group - VG Name VG Access VG Status VG # 0 MAX LV 256 Cur LV 1 Open LV 0 MAX LV Size Max PV 256 Cur PV 2 Act PV 2 vg01 read/write available/resizable 511.98 MB VG Size 48.44 MB PE Size 8 KB Total PE 6200 Alloc PE / Size 512 / 4 MB Free PE / Size 5688 / 44.44 MB VG UUID MDAQBd-6wUz-Qwl1-rJqM-Ju8Y-ceRG-YNK6gm # lvrename /dev/vg01/lv01 /dev/vg01/lv_test lvrename doing automatic backup of volume group vg01 lvrename logical volume /dev/vg01/lv01 successfully renamed to /dev/vg01/lv_test Vous pouvez constater que nous avons utilisé 512 PE (4Mo/8Ko) et puisque par défaut un volume est créé dans un mode linéaire, tous les extends utilisés doivent 22 LM 54

Tableau 2 logiquement se trouver en début de volume physique /dev/loop0 (en retrouve le nombre d extends 512) : # pvdisplay /dev/loop0 - Physical volume - PV Name /dev/loop0 VG Name vg01 PV Size 24.41 MB [50000 secs] / NOT usable 200 KB [LVM: 140 KB] PV# 1 PV Status available Allocatable yes Cur LV 1 PE Size (KByte) 8 Total PE 3100 Free PE 2588 Allocated PE 512 PV UUID UblT7g-X295-qL1u-YbJZ-PdGh-7xSF-9h4EDt J ai déjà précisé que le mode striping était natif à LVM : il convient à la création d un volume logique de préciser le nombre de stripes (généralement égal au nombre de volumes physiques) et la taille en ko d un stripe. Ce mode peut amener une amélioration des performances si les volumes physiques sont présents sur des disques durs différents et éventuellement sur des interfaces disques séparées. Dans l exemple suivant, on crée un découpage de 2 stripes de 4ko chacun. # lvcreate -i2 -I4 -n lv01 vg01 Il est de plus possible de préciser, à la création d un volume logique, le ou les volume(s) physique(s) où seront réservés les Extends Physiques (PE). Lire le manuel (man lvcreate) pour connaître les modalités d applications. Le volume logique est configuré, nous allons y mettre en place un système de fichiers : # lvdisplay /dev/vg01/lv01 - Logical volume - LV Name /dev/vg01/lv01 VG Name vg01 LV Write Access read/write LV Status available LV # 1 # open 0 LV Size 4 MB Current LE 512 Allocated LE 512 Allocation next free Read ahead sectors 10000 Block device 58: Ext2/3 (*) Il n est pas possible (voir le commentaire en bas du tableau) d étendre la taille d un système de fichiers Ext2/3 à chaud. Il est nécessaire de démonter la partition et d augmenter la taille du système de fichiers à froid (l extension du volume logique peut être faite à chaud) : # lvextend -L+1G /dev/vg01/lv01 # umount /montage # resize2fs /dev/vg01/lv01 # mount /dev/vg01/lv01 /montage # mkfs.ext2 -j /dev/vg01/lv_test... Writing inode tables: done Creating journal (1024 b0 locks): done Writing superblocks and filesystem accounting information: done # mount /dev/vg01/lv_test /mnt On pourra donc désormais ajouter un volume physique par un simple vgextend vg01 /dev/loop2, ou encore supprimer un volume physique avec vgreduce après avoir déplacé les extends physiques utilisés dans un autre volume physique avec pvmove. La suppression d un volume groupe est plus délicate car il faut désactiver le VG avant (il ne doit pas y avoir de VL présents) : # vgchange -a n /dev/vg0x # vgremove /dev/vg0x Extension ou réduction d un volume logique L extension et la réduction d un volume logique est plus complexe car il faut à la fois réduire la taille du volume logique, mais aussi celle du système de fichiers. Et pour compliquer la donne, il y a plusieurs systèmes de fichiers majeurs disponibles (Ext2/3, Reiserfs, JFS ou encore XFS) et tout autant de méthodologies/outils pour étendre ou réduire un volume logique. Si vous initialisez un volume logique avec du swap, il ne vous sera pas possible de l étendre ou de le réduire dynamiquement à moins de reformater la partition après l avoir désactivée. Si vous souhaitez l étendre, il sera même plus simple d ajouter une nouvelle partition de swap (tableau 2). (*) Il existe malgré tout un outil (ext2online) qui permet de faire grossir ou de réduire un volume logique sous Ext2/3 à chaud en une seule commande (pas besoin d utiliser lvextend/lvreduce et de démonter la partition). Par contre, cela demande un patch dans les noyaux 2.4 (cette fonctionnalité semblerait incluse en standard dans le noyau 2.6) : cela dépend donc de la distribution que vous utilisez(tableau 3). Tout comme l extension, il n est pas possible de réduire un volume logique à chaud. Vous devez démonter la partition, réduire le système de fichiers et enfin réduire le volume logique : # umount /montage # resize2fs /dev/vg01/lv01 [taille] # lvreduce -L-1G /dev/vg01/lv01 # mount /dev/vg01/lv01 /montage LVM : Stockage de données Octobre 2003 23

Tableau 3 Tableau 4 Tableau 5 Reiserfs Il est possible d étendre la taille d un système de fichiers Reiserfs à chaud : # lvextend -L+1G /dev/vg01/lv01 # resize_reiserfs /dev/vg01/lv01 JFS Il semble possible (non testé) d étendre un système de fichiers JFS (à partir de la release 11.0.21) : # lvextend -L+1G /dev/vg01/lv01 # mount -o remount,resize /dev/vg01/lv01 XFS Il est possible d étendre un système de fichiers XFS, par contre cela doit être obligatoirement fait le device monté (fonctionnement atypique qui mérite d être signalé) : # lvextend -L+1G /dev/vg01/lv01 # xfs_growfs /montage Il n est pas possible de réduire la taille d un système de fichiers Reiserfs à chaud. Il est nécessaire de démonter la partition avant de réduire la taille du système de fichiers : # umount /montage # resize_reiserfs -s -1G /dev/vg01/lv01 # lvreduce -L-1G /dev/vg01/lv01 # mount /dev/vg01/lv01 /montage Il n est pas possible de réduire la taille d un système de fichiers JFS. Il n est pas possible de réduire un système de fichiers XFS. Tableau 6 Une fusion de tous ces outils dans une même commande est en cours d étude (ce qui nous simplifierait grandement la vie). Une des grandes questions existentielles que l on est en droit de se poser est : quel système de fichiers utiliser? Outre le côté affectif qui nous lie tous à l utilisation de l un ou de l autre, il vaut mieux s en remettre à la raison et regarder du côté des limitations de chacun (sur une base de 4 KB pour la taille des blocs sachant que cela reste configurable dans la plupart des cas)(tableau 6) : Pour information, 1024 octets équivaut à 1 Kilobytes, 1024 Ko = 1 Megabytes, 1024 Mo = 1 Gigabytes, 1024 Go = 1 Terabytes, 1024 To = 1 Petabytes et enfin 1024 Po = 1 Exabytes (ouf!). Par contre, il faut bien avoir conscience que ces valeurs représentent la taille maximale supportée par le format du système de fichiers en théorie. Elles ne préjugent pas de la capacité du système à exploiter ces tailles : le fait est que, même en jouant avec le type d architecture (32 bits ou 64 bits) et la version du noyau Linux (2.4, voire le futur 2.6) il est assez délicat d atteindre de telles limites. Il faut savoir par exemple que sur architecture 32 bits, la taille d un fichier ne peut excéder 2 Go (2^32-1) pour des raisons d adressage. Afin de casser cette limite, il existe un projet appelé LFS (Large File Size) implémenté moitié dans le noyau, moitié dans la libc, qui permet d adresser en théorie 8 Exabytes (2^64-1). Ext2/3 Reiserfs v3.6 XFS JFS Taille de bloc utilisé 4 KB 4KB 4KB 4KB Taille maximale 2 Terabytes 1 Exabytes 9 Exabytes 4 Petabytes d un fichier Taille maximale du 16 Terabytes 16 Terabytes 18 Exabytes 4 (32?) système de fichiers Petabytes On peut malgré tout avancer les chiffres suivants en appuyant quelques réserves justifiées (les informations présentes sur Internet sont souvent contradictoires, même au sein des développeurs Linux) : Sur un noyau 2.4.x récent sur architecture 32 bits : les systèmes de fichiers, fichiers et devices physiques sont limités à 2 Terabytes par une limitation interne au noyau. Sur un noyau de développement 2.5.x sur architecture 32 bits : la taille d un fichier reste limitée à 2 Terabytes alors qu il n y a presque plus de limitation pour les devices 24 LM 54

physiques et les systèmes de fichiers (ces derniers resterait malgré tout limités à 16 Terabytes). Sur architectures 64 bits : virtuellement pas de limite sauf celle de l adressage (8 Hexabytes). Il est évident que l accès à 2 Terabytes de données semble suffisant par rapport aux supports physiques disponibles actuellement (cela est particulièrement vrai pour les particuliers), mais les choses évoluent rapidement et devient indispensable dans l entreprise. Utilisation des Snapshots Un dernier point à aborder (et non des moindres) avant d arriver à la conclusion de cet article : la notion de snapshot. Imaginons que vous deviez sauvegarder des fichiers possédant une forte dépendance entre eux et modifiés quasiment en temps réel (comme les fichiers systèmes d une base de données) : le fichier A est synchronisé avec le fichier B, si le fichier B est sauvegardé 5 minutes plus tard que le fichier A, vos données ne pourront être restaurées car considérées comme inconsistantes. Pour traiter ce cas, il faut arrêter l applicatif, lancer la sauvegarde et attendre la fin de la sauvegarde pour redémarrer l applicatif : d où interruption du service que l on aimerait pouvoir éviter ou réduire. Les snapshots LVM sont la solution : nous allons créer un volume logique virtuel (snapshot) qui sera la copie conforme en lecture seule de celui que vous souhaitez sauvegarder à un instant T. Vous pourrez supprimer un fichier dans le volume logique initial, celui-ci sera toujours présent dans le volume logique virtuel. A l inverse, si vous ajoutez un fichier, ce dernier sera absent du snapshot. En cas de modification des données sur le volume initial, les données resteront consistantes sur le volume virtuel. Pourtant, un snapshot LVM n est pas une copie intégrale des données présentes dans un volume logique. Il n a même pas besoin de disposer de la même quantité d espace disque. L astuce est qu un snapshot ne contient absolument rien, en dehors de la liste des Extends Logiques (LE) modifiés dans le volume initial. Les blocs modifiés ne sont donc pas supprimés, mais simplement référencés dans le volume virtuel : après la suppression du snapshot, ces derniers seront définitivement recyclés. Ce fonctionnement fait que nous allons pouvoir tranquillement lancer la sauvegarde sur les données du volume virtuel et immédiatement après (sans attendre la fin), relancer l applicatif : quelques secondes d interruption en somme. Un snapshot est créé avec une taille initiale dont la volumétrie est calculée en estimant la quantité de données (LE) qui va être modifiée durant toute la durée du snapshot. C est à peu près la seule contrainte en dehors du fait qu un snapshot n est pas persistant (supprimé après redémarrage de votre machine). Voici un exemple de mise en œuvre d un snapshot sur un volume logique vl_data sachant que le volume logique virtuel nouvellement créé sera obligatoirement présent dans le même volume groupe : # lvcreate -size 600M -snapshoot -n lv_snap /dev/vg01/vl_data # mkdir /lv_snap # mount /dev/vg01/lv_snap /lv_snap [sauvegarde des données] # umount /lv_snap # lvremove /dev/vg01/lv_snap Conclusion J espère que cet article vous aura permis d avoir un aperçu pertinent de la mise en œuvre d un volume manager sous Linux. Je souhaite que vous gardiez à l esprit qu il est intéressant, dès l installation de votre machine, de placer toutes vos partitions sous LVM car nul ne peut prédire l avenir, et il n y a rien de plus rageant que de devoir réinstaller une machine suite à la saturation d une partition ou de l ajout d un nouveau disque. Je tiens aussi à remercier Andreas Jaeger (SuSE) et Peter Chubb d avoir si diligemment répondu à mes questions concernant les limites des systèmes de fichiers sous Linux (malgré tout, n hésitez pas à me contacter si vous possédez des informations plus à jour). Lionel Tricon lionel.tricon@free.fr Membre de l association Linux d Aix-en-Provence, Axul Ingénieur caméléon et Linuxien prosélythique dans la société Diginext Liens LVM : http://www.sistina.com/lvm HOWTO LVM : http://tldp.org/howto/lvm-howto LFS : http://www.suse.de/~aj/linux_lfs.html EVMS : http://evms.sourceforge.net ext2online : http://ext2resize.sourceforge.net EXT2/3 : http://e2fsprogs.sourceforge.net ReiserFS : http://www.namesys.com XFS : http://oss.sgi.com/projects/xfs JFS : http://oss.software.ibm.com/jfs LVM : Stockage de données Octobre 2003 25