Vous avez un serveur, du stockage et une furieuse envie de stocker des VMS en LVM ? Bienvenue alors !
Nous allons voir comment proposer du stockage LVM pour servir de stockage à nos futures VMs KVM …
Cet article s’intègre dans la série New Box 2022. Vous y trouverez le pourquoi du comment, les prérequis, paquets à installer, etc…
I – Présentation
Le serveur que j’utilise (Dedibox) propose deux SSD de 250G chacun, le tout en RAID1. C’est bien, mais on perd quand même pas mal d’espace.
Par défaut, après l’installation du serveur, un espace en RAID 1 est monté dans /data :
/dev/sda1 -> 300M -> RAID1 /dev/md0 -> montage /boot /dev/sda2 -> 512M -> SWAP /dev/sda2 -> 15G -> RAID1 /dev/md1 -> montage / /dev/sda4 -> 222G -> RAID1 /dev/md2 -> montage /data /dev/sdb1 -> 300M -> RAID1 /dev/md0 -> montage /boot /dev/sdb2 -> 512M -> SWAP /dev/sdb2 -> 15G -> RAID1 /dev/md1 -> montage / /dev/sdb4 -> 222G -> RAID1 /dev/md2 -> montage /data
L’idée est de ne pas utiliser le RAID 1 sur les 222G de /data, mais bien de garder deux espaces distincts, chacun hébergeant par la suite un Volume Group LVM.
II – Pétage de l’existant
L’espace du Raid 1 est monté dans /data. On le démonte :
# umount /data
Puis on pense à supprimer la référence dans le fichier /etc/fstab.
On va regarder les volumes concernés par le raid :
# mdadm --detail /dev/md2
Ce qui nous donne :
/dev/md2: Version : 1.2 Creation Time : Thu Mar 10 12:34:59 2022 Raid Level : raid1 Array Size : 227906560 (217.35 GiB 233.38 GB) Used Dev Size : 227906560 (217.35 GiB 233.38 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Intent Bitmap : Internal Update Time : Thu Mar 10 13:02:29 2022 State : clean, resyncing Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Consistency Policy : bitmap Resync Status : 78% complete Name : k:2 (local to host k) UUID : 889b4197:103be046:7216a8c6:e59f41b1 Events : 315 Number Major Minor RaidDevice State 0 8 4 0 active sync /dev/sda4 1 8 20 1 active sync /dev/sdb4
On arrête le raid en question :
# mdadm --stop /dev/md2
Histoire d’éviter que ce raid soit détecté de nouveau automatiquement lors du prochain démarrage :
# mdadm --zero-superblock /dev/sda4 /dev/sdb4
On termine en modifiant le fichier /etc/mdadm/mdadm.conf pour supprimer la référence au md2.
ARRAY /dev/md/2 metadata=1.2 UUID=889b4197:103be046:7216a8c6:e59f41b1 name=k:2
III – Partitionnement
On va re-partitionner les disques :
# cfdisk /dev/sda On va sur /dev/sda4 : on delete Ensuite, New, Taille au max, puis Primary On descend sur FreeSpace, NEW On write On quitte
Et rebelote sur /dev/sdb, où l’on fait la même opération :
# cfdisk /dev/sdb ....
Ce qui, au final, donne ceci (exemple sur /dev/sdb) :
Disk: /dev/sdb Size: 238.5 GiB, 256060514304 bytes, 500118192 sectors Label: dos, identifier: 0x81c8c3a2 Device Boot Start End Sectors Size Id Type /dev/sdb1 * 2048 614399 612352 299M fd Linux raid autodetect /dev/sdb2 614400 1662975 1048576 512M 82 Linux swap / Solaris /dev/sdb3 1662976 33120255 31457280 15G fd Linux raid autodetect /dev/sdb4 33120256 500118191 466997936 222.7G 83 Linux
On reboot pour recharger tout ça :
# reboot
IV – LVM
Passons à la création des PVs (Physical Volume) et VGs (Volume Group) dans LVM.
Pour rappel, nous sommes dans le cadre du tuto complet et les paquets LVMs ont déjà été installés. Si vous ne savez pas de quoi je parle, retour en haut de l’article 😉
Et pour installer lvm au cas où :
# apt install lmv2
Si vous voulez en savoir plus sur LVM : LVM, le gestionnaire de volume logique
On créé les PVs :
# pvcreate /dev/sda4 # pvcreate /dev/sdb4
Puis les VGs : # vgcreate vg0 /dev/sda4 # vgcreate vg1 /dev/sdb4
LVM, done !
V – Pool de stockage KVM
Il ne nous reste plus qu’à définir nos nouveaux pools dans KVM afin qu’ils puissent être utilisés.
# virsh pool-define-as lvm0 logical --source-name vg0 --target /dev/vg0 # virsh pool-define-as lvm1 logical --source-name vg1 --target /dev/vg1
Ensuite, on active :
# virsh pool-start lvm0 # virsh pool-start lvm1 # virsh pool-autostart lvm0 # virsh pool-autostart lvm1
On peut lister
# virsh pool-list
->
Name State Autostart ---------------------------- lvm0 active yes lvm1 active yes
On est prêt a déployer nos premières VMs !
Je vous propose donc de revenir à l’article initial et de poursuivre la feuille de route 😉