[FR] Récupérer de l’espace disque à partir d’images raw sous linux/proxmox

Pour monétiser les coûts associés à tout fournisseur de services cloud, la plupart (sinon tous) jouent à vendre plus de ressources que celles physiquement disponibles dans leur infrastructure, c’est ce que l’on appelle communément le «overprovisioning». Il joue avec l’idée que tous les clients ne consommeront pas le maximum de ressources allouées, leur permettant ainsi de vendre plus d’espace disque, de mémoire RAM ou de CPU que ce qui est réellement disponible.

Avec cette approche, chaque fournisseur devra alors être prudent pour offrir un bon service, optimiser ses coûts et offrir ce qu’il promet sans tomber dans des défaillances de saturation des ressources, mais c’est une autre sujet.

Dans ce post je parlerai de comment optimiser l’utilisation des fichiers image raw sur disque et à titre d’exemple j’utiliserai Proxmox, une très bonne plateforme pour installer un hyperviseur complet avec lequel vous pourrez gérer vos containers et vms virtuelles.

Proxmox offre de multiples options pour stocker les «disques» de vos conteneurs/vms sur différents «storages backends»: zfs, btrfs, lvm, dir, ceph… chacun avec ses avantages et inconvénients recommandés selon le cas d’utilisation de chaque projet.

Le plus simple est d’utiliser un répertoire local, généralement /var/lib/vz où stocker les fichiers images raw pour chaque conteneur ou dans le cas de vms en option les images qcow2. Nous nous concentrerons sur le format raw, qui sont essentiellement des «sparse files» qui, bien qu’ils puissent être définis comme un espace «virtuel» de plusieurs Gigas, leur contenu réel sera initialement minime et augmentera au fur et à mesure que des données y seront écrites.

Le problème est que ce type de fichier, par défaut, ne fait que « grandir » et ne libère pas automatiquement l’espace occupé par les données supprimées. De cette façon, vous pouvez avoir des fichiers raw qui, bien que leur contenu en données soit, par exemple, de 20 Go, après plusieurs mois d’utilisation pour créer et supprimer des données, leur taille sur le disque de l’hyperviseur est beaucoup plus grande.

Pour remédier ce problème nous pouvons utiliser l’application fstrim. Ce programme libère les blocs inutilisés des systèmes de fichiers montés. La procédure est simple, nous montons le fichier raw, exécutons fstrim sur le point de montage et démontons le fichier raw. Avec cette opération simple, nous pourrons jouer avec de meilleures garanties et optimiser l’utilisation du disque pour nous permettre de «vendre» de manière plus optimale plus d’espace que l’hyperviseur n’en a réellement. Voici un script simple pour effectuer cette opération dans proxmox de manière automatisée:

#!/bin/bash
vmid=$(ls /etc/pve/nodes/`hostname`/lxc/)
list=$(echo "$vmid" | sed -r 's/.conf//g')
for i in $list; do
pct mount $i
fstrim /var/lib/lxc/$i/rootfs
pct unmount $i
done

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este formulario guarda los datos que indiques de nombre, email y comentario para poder realizar un seguimiento de los comentarios dejados en cada entrada.