Olivier Poncet
Directeur Technique · CTO

Proxmox VE - migration de Ext4 vers LVM Thin

cover🔗 publié par Olivier Poncet le 14/02/2017 à 12:00

Depuis la version 4.2 de Proxmox VE, le volume local permettant de stocker les images des machines virtuelles et les conteneurs est passé de ext4 ou ZFS à LVM-thin.

LVM-thin permet de ne plus stocker une image disque en tant que fichier sur une partition ext4 ou ZFS, mais permet de créer un périphérique en mode bloc directement utilisable par la machine virtuelle sur le volume LVM de Proxmox VE.

Parmis les avantages apportés par LV-thin, on peut citer en vrac : des vitesses de lectures/écritures disques accrues du fait de l’usage direct d’un périphérique bloc sans passer par le système de fichiers local, une allocation / désallocation fine de l’espace disque en fonction des besoins de la VM permettant de ne pas consommer plus d’espace disque que nécessaire, une gestion native des snapshots sans le surcoût lié au format QCow2, …

Les nœuds sous Proxmox VE installés avant la version 4.2 ne bénéficient donc pas de ces fonctionnalités, même après mises à jour vers des versions plus récentes de Proxmox VE. Mais plutôt que de réinstaller un nœud complet, nous allons appliquer une petite procédure toute simple pour pouvoir bénéficier des avantages liés à LVM-thin.

Mises en garde

Mal comprise et /ou mal appliquée, cette procédure pourrait entraîner la perte de vos données, voire de votre nœud Proxmox VE. Faites des sauvegardes. Je ne saurais être tenu pour responsable en cas de problèmes.

Procédure de migration vers LVM-thin

La procédure à suivre est simple et rapide, et n’occasionnera pas ou très peu d’indisponibilité de votre cluster.

Etape 1 - Sauvegarde

Dans le cas d’un cluster composé de plusieurs nœuds, cette première étape consiste à migrer les machines virtuelles du nœud sur lequel vous souhaitez faire l’intervention vers un autre nœud de votre cluster.

Dans le cas où vous ne disposez que d’une seule machine sous Proxmox VE, arrêtez vos machines virtuelles, sauvegardez-les sur un volume extérieur à la machine (disque USB, serveur NFS, …), puis supprimez-les.

Etape 2 - Migration

Logguez-vous sur la console de votre nœud, soit par la console VNC, soit par SSH.

Démontez le système de fichier actuellement monté sur /var/lib/vz :

umount /var/lib/vz

Editez le fichier /etc/fstab et commentez la ligne correspondant à /var/lib/vz en ajoutant un dièse en début de ligne ou retirez la tout simplement :

# /etc/fstab
/dev/pve/root / ext4 errors=remount-ro 0 1
# /dev/pve/data /var/lib/vz ext4 defaults 0 1
/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0

Migrez le volume ext4 ou ZFS vers LM-thin en tapant la commande suivante :

lvconvert --type thin-pool pve/data

Vous devriez obtenir le message suivant :

  WARNING: Converting logical volume pve/data to pool's data volume.
  THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.)
Do you really want to convert pve/data? [y/n]:

Cette commande est irréversible, soyez donc certains de ce que vous faites. Si vous êtes sûrs, validez en tapant y puis Entrée.

La conversion effectuée, vous devriez obtenir le message suivant :

  WARNING: Pool zeroing and large 512.00 KiB chunk size slows down provisioning.
  Converted pve/data to thin pool.

Le volume est désormais migré en LVM-thin. Déclarez le maintenant à l’aide de l’interface d’administration de Proxmox VE (Datacenter - Stockage), en spécifiant :

  • ID : local-lvm
  • Volume group : pve
  • Thin Pool : data
  • Contenu : Image disque, Conteneur
  • Activé : Oui

Vous pouvez aussi simplement éditer le fichier /etc/pve/storage.cfg en y ajoutant les lignes suivantes (attention, ce sont des tabulations en débuts de lignes) :

lvmthin: local-lvm
	thinpool data
	vgname pve
	content rootdir,images

Le volume doit donc maintenant apparaître dans la liste des volumes rattachés au nœud. Optionnellement, vous pouvez effectuer un petit redémarrage du nœud afin de vous assurer que tout se passe correctement.

Etape 3 - Restauration

Restaurez vos machines virtuelles et conteneurs. Dans le cas d’une restauration à partir d’une sauvegarde, choisissez LVM-thin comme volume de stockage. Dans le cas d’une migration depuis un autre nœud, une fois la machine migrée, déplacez le disque virtuel vers le volume LVM-thin.

Pour exploiter au mieux ce type de stockage, je vous encourage à utiliser des disques virtuels SCSI en cochant l’option discard, avec un contrôleur SCSI de type virtio-SCSI.

What else ?

Pour profiter au mieux de l’allocation fine (thin-pool) proposée par LVM-thin, les disques-durs virtuels doivent êtres de type (virtio-)SCSI.

Pour les machines virtuelles sous Linux, il n’y rien de plus à faire, tout est nativement pris en charge par le noyau Linux. Vous pouvez utiliser la commande fstrim -a pour libérer les blocs inutilisés du disque-dur virtuel, le mieux étant d’ajouter cette commande à une tâche cron journalière.

Pour les machines virtuelles sous Windows, veuillez tout d’abord à installer les pilotes vioscsi lors de l’installation de Windows.