Gestion des LVM : augmenter un disque sur un VM
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