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)
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 🙂
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
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.
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 »