Comment gérer son espace mémoire avec LVM (Logical Volume Manager) ?
Par Freecrazy -
—
Dernière modification
26/12/2014 15:26
Nous allons ici voir comment gérer son espace mémoire dynamiquement en le partitionnant avec des Volumes Logiques (LV). Les exemples de cet article viennent de l'installation d'un serveur de fichiers et plus particulièrement de cette page. Nous allons montrer comment gérer un espace mémoire (ici un RAID 5 de 2To, mais cela vaut pour n'importe quel autre espace disque) avec LVM. 1 - Mais quel est l'intérêt de LVM (Logical Volume Manager) ?La question mérite d'être posée car à première vue, il y a peu d'intérêt à ajouter une surcouche de gestion avec la crainte d'avoir un risque supplémentaire de perdre ses données lors de manipulations hasardeuses. D'autant plus que l'apport de ce système de gestion n'est pas apparent au premier abord si ce n'est pour les gros systèmes avec de nombreux disques durs. C'est certainement pour ces raisons que peu de particuliers la mettent en œuvre. Pourtant, les solutions d'entreprise (comme Red Hat Enterprise Linux) l'intègrent par défaut et sont utiles même pour des petits systèmes. Pour illustrer l'intérêt de ce système de gestion très perfectionné des supports de stockage, je vais prendre un exemple qui rappellera certainement des souvenirs à ceux qui ont un peu de vécu Linux. Vous avez installé votre Linux sur votre ordinateur, et comme c'était votre première installation, vous avez défini vos partitions 'au petit bonheur la chance'. Les mois passent, et Linux est devenu votre compagnon indispensable pour réaliser vos documents, surfer sur Internet, stocker vos photos, films de vos vacances, etc.. Bref, votre partition /home devient trop juste. Quelle solution s'offre à vous ?
Dans ces 2 cas, au mieux, vous allez devoir démonter les partitions pour les recréer aux bonnes dimensions, et remettre vos données dessus car bien sûr dans ces manip vos données auront été effacées. Avec LVM installé dès le départ c'est beaucoup plus simple, car il vous est possible de redimensionner "à chaud" vos volumes. Bon soyons honnêtes, l'augmentation de volume est plus facile que la diminution. Mais avouez que des partitions initiales réduites au strict minimum et que vous augmentez au fur à mesure de vos besoins, c'est plutôt sympa, non ? Bon, concrètement voici comment cela se passe ... 2 - Le paquetage logiciel nécessaire (lvm2)
Les volumes logiques se gère à l'aide du paquetage lvm2. Il nous faut donc l'installer si ce n'est pas déjà fait. # urpmi lvm2 3 - Créer un Groupe de Volume (VG)Oui, il est possible de créer un VG sur un RAID, la preuve nous allons le faire ! Si vous avez joué avec les LV lors de l'installation, ce qui suit n'a plus de secret pour vous. On commence donc par créer une partition sur notre RAID que l'on 'type' en 'Linux LV' code hexa 8E. Pour cela, on lance fdisk sur notre RAID md127 (pour le créer voir cette page) : # fdisk /dev/md127 Le périphérique ne contient pas une table de partitions DOS ou Sun, SGI, OSF valide Création d'une nouvelle étiquette DOS avec id de disque 0x2c0e51a5. Les modifications restent en mémoire jusqu'à ce que vous les écriviez. Après quoi, bien sûr, le contenu précédent sera irrécupérable. Le nombre de cylindres pour ce disque est fixé à 488379968. Il n'y a rien d''incorrect avec cela, mais c'est plus grand que 1024, et cela pourrait causer des problèmes pour certaines installations: 1) logiciels qui sont exécutés à l'amorçage (i.e., vieilles versions de LILO) 2) logiciels d'amorçage et de partitionnement pour d'autres OS (i.e., DOS FDISK, OS/2 FDISK) AVERTISSEMENT: fanion 0x0000 non valide dans la table de partitions 4, sera corrigé par w(écriture) Commande (m pour l'aide) : n Commande d'action e étendue p partition primaire (1-4) p Numéro de partition (1-4): 1 Premier cylindre (1-488379968, par défaut 1): Utilisation de la valeur par défaut 1 Dernier cylindre, +cylindres or +taille{K,M,G} (1-488379968, par défaut 488379968): Utilisation de la valeur par défaut 488379968 Commande (m pour l'aide) : t Partition sélectionnée 1 Code Hexa (taper L pour lister les codes): 8e Type système de partition modifié de 1 à 8e (Linux LVM) Commande (m pour l'aide) : w La table de partition a été altérée ! Appel de ioctl() pour relire la table de partitions. Synchronisation des disques Ne vous inquiétez pas des avertissements initiaux, ils ne nous concernent pas ici. Voilà, vous avez maintenant un /dev/md127p1, restent la création du PV (Volume Physique) puis du VG (Volume Groupe) proprement dit, en n'oubliant pas (pour le nom) qu'il y a déjà un vg01 sur le disque qui accueille le système d'exploitation : # pvcreate /dev/md127p1 Physical volume "/dev/md127p1" successfully created # vgcreate vg_user_data /dev/md127p1 Volume group "vg_user_data" successfully created A ce stade, vous avez la possibilité de voir les propriétés de votre PV et VG, avec respectivement les commandes pvdisplay et vgdisplay. 4 - Créer les Volumes Logiques (LV)
Nous pouvons maintenant créer nos LV aux dimensions voulues. Le process de création d'un LV est le même pour tous, je ne vous montre que pour le volume lv_archives de 200Go : # lvcreate -n lv_archives -L 200Go vg_user_data Logical volume "lv_archives" created Vous aurez compris que l'option -n permet de définir le nom (sinon il est créé par le système) et que l'option -L permet de spécifier sa taille en Mo, Go, To ou Po. Enfin il faut préciser dans quel volume de groupe on veut le construire, ici vg_user_data. Voilà, votre Volume Logique (LV) est créé et on peut l'utiliser comme une simple partition, c.a.d qu'on peut le "formater" : # mkfs -t ext4 /dev/vg_user_data/lv_archives .... et le monter : # mount /dev/vg_user_data/lv_archives /mnt/archives N'oubliez pas avant le 'mount' de créer le répertoire /mnt/archives si ce n'est déjà fait : # mkdir /mnt/archives Comme toute partition, on peut voir son taux d'occupation avec : # df -h /mnt/archives 5 - Quelques commandes d'administration
5.1 - pvdisplay, vgdisplay et lvdisplayComme leurs noms le suggèrent, ces commandes permettent d'afficher les propriétés des PV, VG et LV. Les 3 peuvent être utilisées tel quel ou avec comme argument le nom, respectivement, du PV (ex /dev/sda3), du VG (ex /dev/vg01), du LV (ex /dev/vg01/lv_archives). Les options les plus intéressantes sont :
5.2 - vgextendLà aussi on se doute : vgextend permet d'étendre un Groupe de Volumes (VG). Et c'est la première commande qui donne tout l'intérêt du LVM, à savoir la gestion dynamique de l'espace mémoire. Supposons que vous ayez un vg01 qui commence à être saturé. Vous avez ajouté un disque dur de 100Go (sur /dev/sdc1 par exemple) de type 8E, que vous souhaitez ajouté à vg01, et bien la commande vgextend est fait pour cela, de plus elle fonctionne comme vgcreate : #pvcreate /dev/sdc1 Physical volume "/dev/sdc1" successfully created #vgextend vg01 /dev/sdc1 Volume group "vg01" successfully extended La commande "vgdisplay vg01" vous montera que vg01 possède maintenant un PV supplémentaire. Et vous pouvez maintenant créer des Volumes Logiques sur ce VG agrandi. Nota : En principe LVM cherchera à optimiser l'allocation des PE afin qu'ils soient les plus contigus possibles et si possible sur le même PV, mais il est possible que votre LV soit "assis" sur 2 disques différents. 5.3 - lvextend et resize2fsNous avons vu comment agrandir un VG, maintenant nous allons voir comment agrandir un LV existant avec successivement :
Voici la situation de départ : Et la commande lvextend : Quelques précisions :
Agrandissement du système de fichier (fs) Nous avons agrandi le LV, mais le système de fichier n'a pas suivi. Pour vous en convaincre lancez un "df -h /mnt/user1". Pour cela il nous faut utiliser la commande resize2fs : A noter :
Nous pouvons vérifier le nouveau dimensionnement de notre LV : Les plus curieux pourront également aller voir ce que donne un lvdisplay -m 5.4 - lvreduce avec fsck et resize2fs
Après l'agrandissement, voici le temps de réduire un LV, pour cela il faudra lancer successivement :
Mais avant toute chose, il nous faut démonter le fs : # umount /home/user1 Puis lancer fsck : Redimensionner le système de fichiers à 5Go avec resize2fs : Par curiosité et pour se rassurer, on peut vérifier la nouvelle taille du système de fichiers avec dumpe2fs : Vous constatez que 1310720*4096 est bien égal à 5Go soit 5*(1024)*(1024)*(1024) Et enfin réduire le LV, avec lvreduce dont la syntaxe est la même que lvextend. Ici il s'agit de ne pas se tromper car le risque de perte de données est alors réel. Et voilà il nous reste plus qu'à remonter le système de fichier et constater que notre LV est bien redimensionné. Les curieux pourront aussi voir ce que donne un lvdisplay -m 5.4 - Liste d'autres commandes
6 - Autres liens sur le sujet :Pour ceux qui en veulent plus, ces liens m'ont été utiles :
Actions sur le document |
|