LVM

De Wiki de Jordan LE NUFF
Sauter à la navigation Sauter à la recherche

Présentation

Cette page a pour objet de lister les gestes techniques relatifs à l'utilisation de LVM sur un serveur Linux.

Lexique

  • PV
    • Physical Volume
  • VG
    • Volume Group
  • LV
    • Logical Volume
  • FS
    • File System

Création

Création de partition

Pour créer une partition, lancer la commande fdisk sur le disque concerné :

fdisk /dev/sdb

Le programme est interactif et des renseignements sont à donner pour créer la partition.

Les options sont les suivantes :

  • n : pour new partition
    cela va créer une nouvelle partition
  • p : pour primary partition
    cela va créer une partition primaire
  • 1-4 : pour le choix du numéro de partition à créer
    on ne peut pas créer plus de 4 partitions primaires sur un disque
  • un nombre : ce nombre indique que le premier secteur disponible à partir duquel créer la partition
    il faut laisser la valeur par défaut à moins de savoir exactement ce que l'on fait
  • Dernier secteur, +secteur ou +taille{K,M,G} : cette option permet de définir la taille de la partition
    la valeur par défaut correspond à la totalité de l'espace disque disponible
  • t : pour partition type
    cela permet de choisir le type de partition. Pour faire du LVM, faire le choix 8e.
  • w : pour write
    cela permet de valider et d'écrire les nouvelles informations dans la table de partitions du disque

Exemple de retour :

Putty icon.png Console SSH

Création de PV

Pour créer un PV (Physical Volume) à partir d'un disque ou d'une partition, lancer la commande suivante :

 pvcreate /dev/sdb1

Exemple de retour :

Putty icon.png Console SSH

Création de VG

Pour créer un VG (Volume Group) à partir d'un ou plusieurs PVs, lancer la commande suivante :

vgcreate vg_data /dev/sdb1

Exemple de retour :

Putty icon.png Console SSH

Création de LV

Pour créer un LV, s'assurer préalablement que le VG sur lequel il sera créé dispose de suffisamment d'espace.

Une fois ce point vérifié, lancer la création du LV comme ceci :

lvcreate -L 1G VG_DATA -n LV_DATA_GDB

Cette commande aura pour effet de créer un LV nommé LV_DATA_GDB d'une taille de 1G sur le VG VG_DATA.

Création de FS

Pour créer un FS, il faut s'assurer que le LV qui l'héberge soit bien créé et qu'il dispose de l'espace désiré.

Une fois ce point vérifier, récupérer le chemin d'accès du LV avec la commande :

lvdisplay VG_DATA/LV_DATA_GDB|grep "LV Path"|awk '{print $NF}'

Puis, lancer la création en ext4 du FS sur le chemin d'accès du LV comme ceci :

mkfs.ext4 /dev/VG_DATA/LV_DATA_GDB

Exemple de retour :

mke2fs 1.44.4 (18-Aug-2018)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: e5ec0bfe-f7e1-41ad-a055-dd0897a2d0d7
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376

Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

Pour vérifier, lancer la commande :

file -sL /dev/VG_DATA/LV_DATA_GDB

Exemple de retour :

/dev/VG_DATA/LV_DATA_GDB: Linux rev 1.0 ext4 filesystem data, UUID=e5ec0bfe-f7e1-41ad-a055-dd0897a2d0d7 (extents) (64bit) (large files) (huge files)

Extension

L'exemple utilisé ici est un cas fréquent : le LV dans lequel se trouvent les dossiers dans lesquels les utilisateurs travaillent vient à saturation. Il faut l'agrandir.

Afficher les informations

LV

Sur le serveur myserver par exemple, le LV LV_DATA monté dans le dossier /data fait 12 Go et vient à saturation.

Pour visualiser le point de montage, faire :

df -h /data

Exemple de retour :

Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/VG_DATA-LV_DATA   12G   11G  460M  96% /data

Le LV concerné est donc /dev/mapper/VG_DATA-LV_DATA, ou plus simplement appelé VG_DATA/LV_DATA, et est rempli à 96%.

Pour afficher les informations relatives au LV, lancer la commande :

lvs /dev/mapper/VG_DATA-LV_DATA

Exemple de retour :

  LV      VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  LV_DATA VG_DATA -wi-ao---- 12.00g

VG

Le VG sur lequel se trouve le LV est VG_DATA. Pour afficher ses informations, taper :

vgs VG_DATA

Exemple de retour :

  VG      #PV #LV #SN Attr   VSize  VFree
  VG_DATA   1   1   0 wz--n- 13.33g 1.33g

Ce la permet de constater qu'il n'y a que 1,33 Go d'espace disponible sur VG_DATA.

PV

Pour voir les PV associés à VG_DATA, lancer la commande :

pvs

Exemple de retour :

  PV         VG       Fmt  Attr PSize  PFree
  /dev/sda2  VG_SYS   lvm2 a--  19.99g    0
  /dev/sdb1  VG_APPLI lvm2 a--   6.66g 3.05g
  /dev/sdb2  VG_DATA  lvm2 a--  13.33g 1.33g

Cela indique qu'il y a 3 PV, dont 2 sur le disque dur /dev/sdb, dont 1 étant rattaché au VG VG_DATA, le PV /dev/sdb2.

Disque dur

Pour afficher des informations relatives au disque dur /dev/sdb, lancer la commande :

fdisk -l /dev/sdb*

Exemple de retour :

Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x4f477c8d

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sdb1           2048 13981013 13978966  6.7G 8e Linux LVM
/dev/sdb2       13981696 41943039 27961344 13.3G 8e Linux LVM


Disk /dev/sdb1: 6.7 GiB, 7157230592 bytes, 13978966 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdb2: 13.3 GiB, 14316208128 bytes, 27961344 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Ce retour permet de constater qu'il n'y a pas d'espace libre disponible sur /dev/sdb pour étendre une partition ou en créer de nouvelle. En effet, le disque dur /dev/sdb fait 20 Go et est composé de 2 partitions faisant respectivement 6,7 Go et 13,3 Go, soit un total de 20 Go.

Réaliser l'extension

Ajout/modification disque dur

Il est possible d'ajouter un disque dur, ou bien d'en étendre un existant. Cette action dépendant du type de machine, et non de Linux ou LVM, elle ne sera pas traitée ici.

Prise en compte modification disque dur

Dans le cas d'une extension de disque dur, après l'extension réalisée, il va falloir passer une commande au système pour mettre à jour ses informations. Par exemple, pour la machine myserver, fonctionnant sous openSUSE Tumbleweed, la commande à passer est :

echo 1 > /sys/block/sdb/device/rescan

Cette commande permet de forcer le scan du disque dur /dev/sdb. Il faut donc adapter la commande en fonction du disque dur désiré.

Ainsi, en passant la commande :

fdisk -l /dev/sdb

Le retour est le suivant :

Disk /dev/sdb: 25 GiB, 26843545600 bytes, 52428800 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x4f477c8d

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sdb1           2048 13981013 13978966  6.7G 8e Linux LVM
/dev/sdb2       13981696 41943039 27961344 13.3G 8e Linux LVM

Le disque dur /dev/sdb qui était originalement à 20 Go fait désormais 25 Go.

Extension partition

Utiliser l'utilitaire de disque fdisk sur /dev/sdb en lançant la commande suivante :

fdisk /dev/sdb

Renseigner les valeurs suivantes :

  • Command
    • d
    • d pour delete ==> demande la suppression d'une partition
  • Partition number
    • 2
    • 2 pour demander la suppression de la partition n°2
  • Command
    • n
    • n pour new ==> demande la création d'une nouvelle partition
  • Select
    • p
    • p pour primary ==> demande la création d'une partition primaire
  • Partition number
    • 2
    • 2 pour indiquer le numéro que portera la partition
  • First sector
    • 13981696
    • correspond au numéro de secteur sur le disque à partir duquel la partition commence
    • ATTENTION ! : dans le cas d'une extension de partition, il est important de donner exactement le même First sector que la partition précédemment supprimée. Dans le cas contraire, les données seront irrécupérables !
  • Last sector
    • 52428799
    • correspond au numéro de secteur sur le disque sur lequel la partition termine. Pour utiliser tout l'espace disponible restant, mettre la valeur maximale proposée.
  • Do you want to remove the signature?
    • N
    • N pour No ==> il faut conserver la signature LVM afin que les données ne soient pas perdues.
  • Command
    • w
    • w pour write ==> toutes les informations renseignées sont écrites sur le disque à cette étape.

Pour constater la bonne prise en compte de l'extension de partition, taper la commande suivante :

fdisk -l /dev/sdb2

Exemple de retour :

Disk /dev/sdb2: 18.3 GiB, 19684917248 bytes, 38447104 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

La partition /dev/sdb2 qui était originalement à 13,3 Go fait désormais 18,3 Go.

Extension PV

Pour étendre le PV à la taille de la partition précédemment agrandie, taper :

pvresize /dev/sdb2

Exemple de retour :

  Physical volume "/dev/sdb2" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized

Pour constater la bonne prise en compte de l'extension du PV, taper la commande suivante :

pvs /dev/sdb2

Exemple de retour :

  PV         VG      Fmt  Attr PSize  PFree
  /dev/sdb2  VG_DATA lvm2 a--  18.33g    0

Le PV /dev/sdb2 qui était originalement à 13,3 Go fait désormais 18,3 Go.

Extension VG

Dans le cas d'une extension d'un PV, le VG associé n'a pas besoin d'être agrandi.

Toutefois, s'il s'agissait de la création d'un nouveau PV pour agrandir un VG, il aurait fallu taper la commande suivante :

vgextend VG_DATA /dev/sdb3

Extension LV

Pour étendre le LV avec l'espace précédemment mis à disposition sur le VG, taper :

lvextend -l +100%FREE VG_DATA/LV_DATA

Explication de la commande :

  • +
    • pour indiquer que l'ajoute de l'espace à la quantité déjà existante sur le LV
  • 100%FREE
    • représente la quantité de l'espace
    • correspond à la totalité (100%) de l'espace disponible (FREE) sur le VG

Exemple de retour :

  New size given (1621 extents) not larger than existing size (3072 extents)

Pour constater la bonne prise en compte de l'extension du LV, taper la commande suivante :

lvs VG_DATA/LV_DATA

Exemple de retour :

  LV      VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  LV_DATA VG_DATA -wi-ao---- 18.33g

Le LV VG_DATA/LV_DATA qui était originalement à 12,0 Go fait désormais 18,33 Go.

Extension FS

Pour étendre le FS avec l'espace précédemment mis à disposition sur le LV, taper :

resize2fs /dev/VG_DATA/LV_DATA

ou

resize2fs /data

Exemple de retour :

resize2fs 1.44.5 (15-Dec-2018)
Filesystem at /dev/VG_DATA/LV_DATA is mounted on /data; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/VG_DATA/LV_DATA is now 4805632 (4k) blocks long.

Pour constater la bonne prise en compte de l'extension du LV, taper la commande suivante :

df -h /dev/VG_DATA/LV_DATA

ou

df -h /data

Exemple de retour :

Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/VG_DATA-LV_DATA   18G   12G  5.8G  67% /data

Le FS /data qui était originalement à 12 Go fait désormais 18 Go.