Billet de Joey : création et redimensionnement d'un volume logique

Version française de l'article Joey's Notes : Logical Volume Creation and Expansion, paru dans la Gazette Linux numéro 148 de mars 2008.

Adaptation française:

Relecture de la version française: Deny

Version : 1.0

Conditions de distribution : cet article est distribué selon les conditions de la licence Open Publication License, version 1.0, du 8 juin 1999. Pour plus d'informations, consultez : http://linuxgazette.net/copying.html.

2008-10-16

Historique des versions
Version 1.02008-10-16CT
Première traduction française.
2008-03-01JP
Version originale de l'article.

Résumé

Cet article a pour but de détailler la procédure de création d'un volume physique, d'un groupe de volumes, d'un volume logique et leur redimensionnement.


Table des matières

Les informations à propos de la configuration des volumes logiques sont quelque peu clairsemées, d'autant plus si vous voulez utiliser la ligne de commande. Il y a bien un outil de gestion de volume logique sous RHEL  5© mais qui requiert une interface graphique, et la plupart des serveurs ne fournissent qu'une interface console.

La partie la plus difficile lorsque l'on veut créer un volume logique est de savoir ce qu'il faut créer en premier. A partir de là c'est franchement plus facile. Premièrement nous devons créer des volumes physiques sur notre disque dur; puis, en se basant sur ces volumes physiques, nous crérons nos groupes de volumes; et finalement nous créerons nos volumes logiques. Démarrons avec un disque dur qui n'est pas partitionné—je veux dire, un disque dur que nous venons d'ajouter dans notre système. Exécuter fdisk -l pour voir comment est assigné le disque (nous utiliserons /dev/sdb dans cet exemple). Tant que nous sommes dans fdisk, créer deux partitions de même taille (500 Mo), et s'assurer qu'elles ont le type '8e' (LVM)

[root@localhost ~]#fdisk /dev/sdb

Disk /dev/sdb: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         200     1020096   8e  Linux LVM
/dev/sdb2             201         400     1020096   8e  Linux LVM

Appliquer les changements et quitter fdisk, puis utiliser la commande partprobe pour recharger la table des partitions.

    [root@localhost ~]#partprobe
    

À présent que nous avons rechargé la table des partitions, nous allons pouvoir créer nos volumes physiques sur nos partitions de disque dur—celles que nous avons marquées comme Linux LVM quand nous utilisions la commande dans fdisk. Nous utiliserons pvcreate pour effectuer cette tâche. Nous pouvons spécifier les deux partitions sur une seule ligne, la commande pvcreate ne nous en tient pas rigueur.

[root@localhost ~]#
    pvcreate /dev/sdb1 /dev/sdb2
Physical volume "/dev/sdb1" sucessfully created
Physical volume "/dev/sdb2" sucessfully created

Nous avons maintenant deux volumes physiques, et nous pouvons créer nos groupes de volumes à partir de ça. Nous utiliserons la commande vgcreate pour cette opération, et cette fois nous allons spécifier un nom pour le groupe de volumes que nous allons créer. Nous n'utiliserons qu'une seule partition et réserver l'autre pour plus tard.

   [root@localhost ~]#vgcreate VolumeGroup_1 /dev/sdb1
Volume group "VolumeGroup_1" successfully created

Jusqu'ici tout va bien. Jetons un oeil aux statistiques de ce groupe de volumes—nous utiliserons vgdisplay. Nous avons besoin de porter une attention particulière aux sections VG Size et Total PE. PE est le nombre d'extensions physiques que nous pouvons utiliser. Nous voulons éviter d'épuiser le nombre d'extensions physiques, car cela nous empêcherait de pouvoir redimentionner nos volumes logiques—ce que nous ferons plus avant

    [root@localhost ~]#vgdisplay
    --- Volume group ---
  VG Name                  VolumeGroup_1
  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                  476.00 MB
  PE Size                  4.00 MB
  Total PE                 119
  Alloc PE / Size          0 / 0
  Free  PE / Size          119 / 476.00 MB
  VG UUID                  BCkPP1-2CM1-1hxW-7B2J-yfSt-mEMJ-7fMwNL

Ceci montre que nous avons tout fait correctement; cela nous indique également le nombre d'extension physiques dont nous disposons. Ici nous en avons 119—et nous aurons besoin de 5% à 12% des extensions physiques disponibles pour exécuter les opérations de modification de la taille des volumes logiques.

À présent, créons un volume logique sur ce groupe de volumes, puis nous pourrons monter un système de fichiers dessus. Nous utiliserons —vous vous en doutez—la commande lvcreate. Elle est similaire à la commande vgcreate, mais nous devons spécifier plus de détails dans la ligne de commande pour qu'elle s'exécute correctement. Nous utiliserons les options -l pour spécifier le nombre d'extensions que nous utiliserons et -n pour assigner un nom à notre volume logique. Nous devrons le désigner par /dev/VolumeGroup_1 plutôt que par la désignation physique /dev/sdb1 comme précédemment.

    [root@localhost ~]#lvcreate -l 50 -n LogicalVolume_1 /dev/VolumeGroup_1
     Logical volume "LogicalVolume_1"  created
     

Nous avons utilisé 50 extensions dans cet exemple, soit environ 200 Mo utilisables pour le système de fichiers. Exécuter lvdisplay pour voir le résultat. Maintenant, installons un système de fichiers que nous pourrons ensuite monter et rendre utilisable.

[root@localhost ~]# mkfs.ext3 /dev/VolumeGroup_1/LogicalVolume_1
    

Nommons-le /data

[root@localhost ~]#e2label /dev/VolumeGroup_1/LogicalVolume_1 /data
    

Maintenant nous allons créer un répertoire /data et monter notre volume logique dessus.

[root@localhost ~]#mkdir /data
[root@localhost ~]#mount /dev/VolumeGroup_1/LogicalVolume_1 /data
[root@localhost ~]#ls /data 
lost+found

Remplissons ce nouvel espace afin de réellement voir comment se déroule le redimensionnement du volume logique.

[root@localhost ~]#cd /data
[root@localhost data]#dd if=/dev/zero of=crap bs=1000k  count=190
190+0 records in 
190+0 records out
194560000 bytes (195 MB) copied, 16.2202 seconds, 12.0 MB/s

Cette opération nous permet d'arriver à la limite de l'espace alloué à ce volume logique. Vous pouvez le voir via la commande df -h :

[root@localhost data]#df -h
Filesystem            Size    Used   Avail Use% Mounted on
/dev/sda8             965M    302M   614M   33%      /
/dev/sda1              99M    5.9M    88M    7%      /boot
tmpfs                 629M       0   629M    0%      /dev/shm
/dev/sda7             965M    618M   298M   68%      /home
/dev/sda5             9.5G    3.1G   6.0G   34%      /usr
/dev/sda2              19G    8.6G   9.5G   48%      /var
/dev/mapper/VolumeGroup_1-LogicalVolume_1 
                      194M    192M      0  100%      /data

Premièrement, augmentons légèrement la taille. Une manière simple de faire ça est d'utiliser la commande lvresize :

[root@localhost data]#lvresize -l 100 /dev/VolumeGroup_1/LogicalVolume_1
 Extending logical volume LogicalVolume_1 to 400.00 MB
 Logical volume Log_1 successfully resized

Maintenant ça semble bon— mais nous ne pouvons pas encore utiliser cet espace ajouté. Vous devez d'abord étendre le système de fichiers sur ce nouvel espace ajouté—rappelez-vous, c'est une sorte d'« espace brut ». Nous pouvons exécuter cette opération en utilisant resize2fs. Le système de fichiers peut être monté pendant l'opération, mais je vous recommande d'arrêter toute activité du système de fichiers sur cette partition pendant que l'opération s'exécute. Si vous avez des données critiques sur cette partition vous devriez la démonter avant de redimensionner. Dans l'exemple j'ai effectué un redimensionnement en direct car notre partition ne contient aucune donnée critique.

[root@localhost data]#resize2fs /dev/VolumeGroup_1/LogicalVolume_1 

resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolumeGroup_1/LogicalVolume_1 is mounted on /data; on-line resizing required
Performing an on-line resize of /dev/VolumeGroup_1/LogicalVolume_1 to 409600 (1k) blocks 
The filesystem on /dev/VolumeGroup_1/LogicalVolume_1 is now 409600 blocks long
[root@localhost data]#df -h
Filesystem            Size    Used   Avail Use% Mounted on
/dev/sda8             965M    302M   614M   33%      /
/dev/sda1              99M    5.9M    88M    7%      /boot
tmpfs                 629M       0   629M    0%      /dev/shm
/dev/sda7             965M    618M   298M   68%      /home
/dev/sda5             9.5G    3.1G   6.0G   34%      /usr
/dev/sda2              19G    8.6G   9.5G   48%      /var
/dev/mapper/VolumeGroup_1-LogicalVolume_1 
                      388M    193M   175M   53%      /data

Comme dernier exercice, nous allons ajouter l'autre volume physique au groupe de volumes. Supposons que nous avons besoin d'ajouter plus d'espace à notre volume logique; comme nous avons un volume physique de côté (/dev/sdb2), utilisons-le. Pour cette opération nous aurons besoin des commandes vgextend et lvextend. Rappelons-nous l'ordre dans lequel nous devons le créer : d'abord le volume physique, puis le groupe de volumes, et le volume logique en dernier. Cet ordre est très important et il faut l'inverser pour supprimer ces lecteurs logiques. Ici nous ajoutons le volume physique /dev/sdb2 à notre groupe de volumes VolumeGroup_1 :

[root@localhost data]#vgextend /dev/VolumeGroup_1 /dev/sdb2
 Volume group "VolumeGroup_1" successfully extended
[root@localhost data]#vgdisplay
    --- Volume group ---
  VG Name                  VolumeGroup_1
  System ID             
  Format                   lvm2
  Metadata Areas           2
  Metadata Sequence No     4
  VG Access                read/write
  VG Status                resizable
  MAX LV                   0
  Cur LV                   1
  Open LV                  1
  Max PV                   0
  Cur PV                   2
  Act PV                   2
  VG Size                  952.00 MB
  PE Size                  4.00 MB
  Total PE                 238
  Alloc PE / Size          100  / 400.00 MB
  Free  PE / Size          138  / 552.00 MB
  VG UUID                        BCkPP1-2CM1-1hxW-7B2J-yfSt-mEMJ-7fMwNL

C'est bon, nous avons créer des volumes physiques, des groupes de volumes, des volumes logiques et nous les avons redimensionnés. On peut faire beaucoup plus de choses et je vous recommande de pratiquer beaucoup avant de faire quoique ce soit qui impliquerait des données critiques et assurez-vous d'avoir une sauvegarde ou une image de vos données.

Commands:
 fdisk ----- partitionne le disque dur 
 partprobe - force le noyau à relire la table des partitions
 pvcreate -- crée des volumes physiques
 pvdisplay - affiche des détails à propos des volumes physiques
 vgcreate -- crée des groupes de volumes
 vgdisplay - affiche des détails à propos des groupes de volumes
 vgextend -- étend le groupe des volumes	
 lvcreate -- crée des volumes logiques
 lvdisplay - affiche des détails au sujet des volumes logiques
 lvextend -- étend des volumes logiques
 lvresize -- redimentionne des volumes logiques
 resize2fs - élargit le système de fichiers dans l'espace nouvellement étendu
 

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://www.traduc.org/Gazette_Linuxhttp://www.traduc.org/Gazette_Linux

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.