Linux : ajout d’espace disque à chaud dans LVM sur Machine Virtuelle

Il y a peu de temps un de mes serveurs mySQL s’est retrouvé avec un manque d’espace sur le système LVM (Volume Logique Linux), le symptôme est assez flagrant, le service mySQL est HS et refuse de redémarrer.


2019-02-22T07:57:03.351896Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2019-02-22T07:57:03.357354Z 0 [Warning] InnoDB: 1048576 bytes should have been written. Only 663552 bytes written. Retrying for the remaining bytes.
2019-02-22T07:57:2019-02-22T07:57:03.862606Z 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
2019-02-22T07:57:03.862660Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2019-02-22T07:57:03.862671Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2019-02-22T07:57:03.862680Z 0 [ERROR] Failed to initialize plugins.
2019-02-22T07:57:03.862686Z 0 [ERROR] Aborting

Je me suis vite rendu compte dans les lignes 1 2 et 5 qu’il manque réellement de l’espace sur le système. J’ai donc dû faire de la place dans un premier temps (en supprimant de vieux backups) et redémarrer le service. Mais une fois le service redémarré il fallait régler le problème à la source : on manque de place sur la racine et il faut en rajouter « à chaud » car la prod est repartie.

Ajout d’espace sur la partie Hardware

l’extension du disque se fait par le VMware vSphere Client, en éditant les paramètres de la VM (Click droit > Modifier les Paramètres)

lvm1.png

Ajouter l’espace disque nécessaire sur le disque souhaiter, dans cet exemple je n’ai qu’un seul disque donc le choix est rapide 🙂

lvm2lvm3

Identification du disque et Rescan du Bus SCSI

Une fois l’espace disque ajouter sur la partie hardware, il faudra rescanner vos devices SCSI dans la console Linux du serveur. Dans un premier temps, trouver les noms de vos devices SCSI :


root@SVLXBDDVM01:/# ls /sys/class/scsi_device/
2:0:0:0 32:0:0:0 
root@SVLXBDDVM01:/#

Ensuite on rescan le bus scsi.

root@SVLXBDDVM01:/# echo 1 /sys/class/scsi_device/32\:0\:0\:0/device/rescan

Cette commande va permettre de rescanner le bus scsi et la nouvelle taille du disque sera alors prise en compte.

Création de la nouvelle partition

Une fois le rescan fait (cela ne devrait pas prendre plus de quelques secondes), vous serez en mesure de voir la nouvelle taille du disque.

fdisk -l

2019-02-22 10 22 54-Cmder

Le serveur a désormais un disque de 40Go, nous allons maintenant créer la partition pour le disque /dev/sda.

root@SVLXBDDVM01:/# fdisk /dev/sda

Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Commande (m pour l'aide) :

Maintenant entrer ‘n’, pour créer la nouvelle partition.

Commande (m pour l'aide) : n
Partition type
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p):

Maintenant choisir p pour créer une nouvelle partition primaire.

Un système Linux ne peux contenir que 4 partitions primaires sur un disque ! Si vous dépasser cette limite il faudra créer une partition étendue à la place.

Numéro de partition (3,4, 3 par défaut) : 3

Choisir le numéro de partition. Etant donné que j’ai déjà /dev/sda1 et /dev/sda2, la logique veux que celui-ci soit 3.

Numéro de partition (3,4, 3 par défaut) : 3
Premier secteur (999424-83886079, 999424 par défaut) :
Last sector, +sectors or +size{K,M,G,T,P} (999424-1001469, 1001469 par défaut) :

Les valeurs de cylindres seront certainement différents sur votre système, le plus sûr est de choisir les valeurs proposées par défaut, celle-ci sélectionnerons automatiquement l’espace disque disponible. Dans mon cas je n’ai pas pu prendre les valeurs par défaut et j’ai du calculer le nombre de cylindres mais ce n’est normalement pas le cas si vous avez utiliser le gestionnaire de stockage par défaut lors de l’installation de votre serveur.

Commande (m pour l'aide) : t
Numéro de partition (1-3,5, 5 par défaut) : 3
Partition type (type L to list all types): 8e

Changed type of partition 'Linux' to 'Linux LVM'.

Maintenant nous allons changer le type de partition pour basculer celui-ci en LVM pour cela choisir 8e en code Hex lors du changement de type de partition pour celle que nous venons de créer.

Commande (m pour l'aide) : w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Périphérique ou ressource occupé

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

root@SVLXBDDVM01:/#

Nous allons maintenant écrire les modifications dans la table de partitions, taper w afin de faire ceci. Vous aurez un message de warning vous indiquant qu’il faut redémarrer le serveur pour lire la nouvelle table de partition, ce n’est pas nécessaire puisque nous allons utiliser partprobe pour refaire un scan des partitions « à chaud »

root@SVLXBDDVM01:/# partprobe -s
/dev/sda: msdos partitions 1 3 2 
/dev/mapper/SVLXBDDVM01--vg-swap_1: loop partitions 1
/dev/mapper/SVLXBDDVM01--vg-root: loop partitions 1
root@SVLXBDDVM01:/#

Pour vérifier la partition nouvellement créée.

2019-02-22 11 11 38-Cmder

Extension du Volume LVM avec la nouvelle partition

Maintenant, créer le volume physique comme base de votre LVM.

root@SVLXBDDVM01:/# pvcreate /dev/sda3 
Physical volume "/dev/sda3" successfully created 
root@SVLXBDDVM01:/#

Maintenant trouver comment votre volume LVM s’appel.

root@SVLXBDDVM01:/# vgdisplay
  --- Volume group ---
  VG Name               SVLXBDDVM01-vg
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               19,52 GiB
  PE Size               4,00 MiB
  Total PE              4997
  Alloc PE / Size       4997 / 19,52 GiB
  Free  PE / Size       0 / 0
  VG UUID               uyPHvb-w2YW-FGYz-H56B-331f-dQIg-lNm68g

root@SVLXBDDVM01:/#

On étend le volume sur le LVM avec le nouveau volume physique créé.

root@SVLXBDDVM01:/# vgextend SVLXBDDVM01-vg /dev/sda3
  Volume group "SVLXBDDVM01-vg" successfully extended
root@SVLXBDDVM01:/#

Avec pvscan, nous pouvons voir le nouveau volume physique, et l’espace disque disponible.

root@SVLXBDDVM01:/# pvscan
  PV /dev/sda5   VG SVLXBDDVM01-vg   lvm2 [19,52 GiB / 0    free]
  PV /dev/sda3   VG SVLXBDDVM01-vg   lvm2 [20,00 GiB / 20,00 GiB free]
  Total: 2 [39,52 GiB] / in use: 2 [39,52 GiB] / in no VG: 0 [0   ]
root@SVLXBDDVM01:/#

Maintenant nous allons étendre le volume logique.

root@SVLXBDDVM01:/# lvextend /dev/mapper/SVLXBDDVM01--vg-root /dev/sda3
  Size of logical volume SVLXBDDVM01-vg/root changed from 15,52 GiB (3973 extents) to 35,52 GiB (9093 extents).
  Logical volume root successfully resized.
root@SVLXBDDVM01:/#

Tout ce qu’il reste à faire est d’étendre le système de fichier du volume groupe, de façon a pouvoir utiliser l’espace libre.

root@SVLXBDDVM01:/# resize2fs /dev/mapper/SVLXBDDVM01--vg-root
resize2fs 1.42.13 (17-May-2015)
Le système de fichiers de /dev/mapper/SVLXBDDVM01--vg-root est monté sur / ; le changement de taille doit être effectué en ligne
old_desc_blocks = 1, new_desc_blocks = 3
Le système de fichiers sur /dev/mapper/SVLXBDDVM01--vg-root a maintenant une taille de 9311232 blocs (4k).

Et enfin, vérifier que le volume à bien pris en compte le changement de taille

root@SVLXBDDVM01:/# df -h
Sys. de fichiers                 Taille Utilisé Dispo Uti% Monté sur
udev                               2,0G       0  2,0G   0% /dev
tmpfs                              396M     41M  355M  11% /run
/dev/mapper/SVLXBDDVM01--vg-root    35G     14G   20G  43% /
tmpfs                              2,0G       0  2,0G   0% /dev/shm
tmpfs                              5,0M       0  5,0M   0% /run/lock
tmpfs                              2,0G       0  2,0G   0% /sys/fs/cgroup
/dev/sda1                          472M     58M  390M  13% /boot
tmpfs                              396M       0  396M   0% /run/user/1002
root@SVLXBDDVM01:/#

Une réflexion sur « Linux : ajout d’espace disque à chaud dans LVM sur Machine Virtuelle »

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

Concevoir un site comme celui-ci avec WordPress.com
Commencer