Gestion des disques avec LVM

Un des avantages de Linux est l’utilisation des LVM. Les LVM permettent de gérer les tailles des partitions à la volée et sans arrêt de production. Cependant, si l’ajout d’espace disque est facile, l’augmentation de la taille du disque en lui-même est moins évident. Nous allons voir aujourd’hui comment augmenter la taille de son disque dur sur une machine virtuelle VMware.

Analyse

Notre système de fichier est arrivé à saturation et il est nécessaire de lui attribuer de l’espace supplémentaire.

# df -h  
Filesystem                    Size  Used Avail Use% Mounted on  
udev                           12G     0   12G   0% /dev  
tmpfs                         2.4G  1.2M  2.4G   1% /run  
/dev/mapper/graylog--vg-root  170G  160G   10G  5% /  
tmpfs                          12G     0   12G   0% /dev/shm  
tmpfs                         5.0M     0  5.0M   0% /run/lock  
tmpfs                          12G     0   12G   0% /sys/fs/cgroup  
tmpfs                         2.4G     0  2.4G   0% /run/user/1000  

Nous contrôlons l’espace disque restant à attribuer sur notre LVM :

# pvdisplay
--- Physical volume ---
PV Name               /dev/sda1
VG Name               graylog-vg
PV Size               <170.00 GiB / not usable 2.00 MiB
Allocatable           yes
PE Size               4.00 MiB
Total PE              43219
**Free PE               1**
Allocated PE          43518
PV UUID               7m0kJE-Z1dJ-sfih-xpWv-YdUd-zsZi-9eGzxj

Solution

En premier lieu, il faut augmenter la taille du disque sous VMware. Lorsque celà est fait, nous lançons un rescan des disques, afin de s’épargner un reboot de la machine.

Nous cherchons alors l’ID du disque (notre disque est ici /dev/sda) :

[    2.837055] sd **2:0:0:0:** [sda] 524288000 512-byte logical blocks: (174 GB/170 GiB)
     [    2.837080] sd 2:0:0:0: [sda] Write Protect is off
[    2.837082] sd 2:0:0:0: [sda] Mode Sense: 61 00 00 00
[    2.837101] sd 2:0:0:0: [sda] Cache data unavailable
[    2.837102] sd 2:0:0:0: [sda] Assuming drive cache: write through
[    2.837754]  sda: sda1
[    2.837990] sd 2:0:0:0: [sda] Attached SCSI disk

Nous utilisons alors cet ID dans notre commande de rescan :

# echo "1" > /sys/bus/scsi/devices/target2:0:0/2:0:0:0/rescan

Nous contrôlons que l’ajout de disque est bien détecté

 # dmesg |grep "sda"
     [    2.837055] sd 2:0:0:0: [sda] 524288000 512-byte logical blocks: (174 GB/170 GiB)
          [    2.837080] sd 2:0:0:0: [sda] Write Protect is off
     [    2.837082] sd 2:0:0:0: [sda] Mode Sense: 61 00 00 00
     [    2.837101] sd 2:0:0:0: [sda] Cache data unavailable
     [    2.837102] sd 2:0:0:0: [sda] Assuming drive cache: write through
     [    2.837754]  sda: sda1
     [    2.837990] sd 2:0:0:0: [sda] Attached SCSI disk
     [4738732.712227] sd 2:0:0:0: [sda] 629145600 512-byte logical blocks: (322 GB/300 GiB)
     [4738732.712364] sda: detected capacity change from 182536110080 to 322122547200

L’étape suivante est l’ajustement de la table de partition afin que le nouvel espace disque soit attribué à la partition qui nous intéresse. Pour cela nous utilisons l’utilitaire parted.

# parted
     GNU Parted 3.2
     Using /dev/sda
     Welcome to GNU Parted! Type 'help' to view a list of commands.

Nous allons tout de suite passer en mode secteur (u s), afin de ne pas avoir de problème avec les tailles de partitions qui sont exprimées par défaut en Mb.
Ci-dessous, nous prennons soin de noter la valeur “start”, que nous réutiliserons plus tard lors de la recréation de la partition.

     (parted) u s
     (parted) print
     Model: VMware Virtual disk (scsi)
     Disk /dev/sda: 629145600s
     Sector size (logical/physical): 512B/512B
     Partition Table: msdos
     Disk Flags:
     
     Number  Start  End         Size        Type     File system  Flags
      1      2048s  524287999s  524285952s  primary               lvm

Nous supprimons la partition.
Attention, prévoyez toujours une sauvegarde !!

     (parted) rm 1
     Error: Partition(s) 1 on /dev/sda have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.  As a result, the old partition(s) will remain in use.  You should reboot now before making further changes.
     Ignore/Cancel? ignore

Puis nous la recréons avec les données notées plus haut.

	 
     (parted) mkpart
     Partition type?  primary/extended? primary
     File system type?  [ext2]?
     Start? 2048s
     End? 100%
     (parted) toggle 1 lvm
     (parted) 	quit
     Information: You may need to update /etc/fstab.

Nous scannons de nouveau pour voir la modification

# echo "1" > /sys/bus/scsi/devices/target2:0:0/2:0:0:0/rescan

Et nous vérifions que la modification est effective.

# dmesg |grep "sda"
[    2.837055] sd 2:0:0:0: [sda] 524288000 512-byte logical blocks: (268 GB/250 GiB)
[    2.837080] sd 2:0:0:0: [sda] Write Protect is off
[    2.837082] sd 2:0:0:0: [sda] Mode Sense: 61 00 00 00
[    2.837101] sd 2:0:0:0: [sda] Cache data unavailable
[    2.837102] sd 2:0:0:0: [sda] Assuming drive cache: write through
[    2.837754]  sda: sda1
[    2.837990] sd 2:0:0:0: [sda] Attached SCSI disk
[4738732.712227] sd 2:0:0:0: [sda] 629145600 512-byte logical blocks: (322 GB/300 GiB)
[4738732.712364] sda: detected capacity change from 268435456000 to 322122547200

A ce stade, l’espace n’est pas encore disponible pour LVM. Nous le constatons en faisant “pvdisplay”.

# pvdisplay
--- Physical volume ---
PV Name               /dev/sda1
VG Name               graylog-vg
PV Size               <170.00 GiB / not usable 2.00 MiB
Allocatable           yes
PE Size               4.00 MiB
Total PE              43219
**Free PE               1**
Allocated PE          43518
PV UUID               7m0kJE-Z1dJ-sfih-xpWv-YdUd-zsZi-9eGzxj

Nous allons donc relire la table de partition avec “partprobe” et faire un “pvresize”.

# partprobe
# pvresize /dev/sda1
Physical volume "/dev/sda1" changed
1 physical volume(s) resized / 0 physical volume(s) not resize

Un nouveau “pvdisplay” nous permets de constater que l’espace disque est maintenant pris en compte.

#pvdisplay
--- Physical volume ---
PV Name               /dev/sda1
VG Name               graylog-vg
PV Size               <300.00 GiB / not usable 2.00 MiB
Allocatable           yes
PE Size               4.00 MiB
Total PE              76799
Free PE               19200
Allocated PE          57599
PV UUID               7m0kJE-Z1dJ-sfih-xpWv-YdUd-zsZi-9eGzxj

Nous pouvons ainsi modifier les “volume groups”

# vgchange -a y graylog-vg
2 logical volume(s) in volume group "graylog-vg" now active

Nous pouvons ainsi ajouter de l’espace disque dans notre LVM avec “lvresize”.

# lvresize /dev/graylog-vg/root -L +10G
Size of logical volume graylog-vg/root changed from <224.04 GiB (57354 extents) to <234.04 GiB (59914 extents).
Logical volume graylog-vg/root successfully resized.

Et étendre le file system.

# resize2fs /dev/graylog-vg/root
resize2fs 1.44.1 (24-Mar-2018)
Filesystem at /dev/graylog-vg/root is mounted on /; on-line resizing required
old_desc_blocks = 29, new_desc_blocks = 30
The filesystem on /dev/graylog-vg/root is now 61351936 (4k) blocks long.

Si le resize2fs génère une erreur, il faut changer la méthode d’extension du file system.

# xfs_growfs /dev/graylog-vg/root