Le calvaire de la sauvegarde des machines virtuelles

Depuis plusieurs années, j’utilise VMware Fusion pour mes machines virtuelles, mais j’ai un problème : la gestion des sauvegardes. Et pour le moment, je n’ai pas trouvé de solution miracle (ni même satisfaisante).

Le problème vient de la façon de sauvegarder de Time Machine et de la manière dont VMware Fusion (le problème existe aussi avec Parallels Desktop) gère les machines virtuelles.

Du côté de Time Machine, c’est assez simple : un fichier modifié est sauvegardé. Quelle que soit sa taille, quelle que soit la modification. C’est efficace, mais un peu basique : un fichier de 1 Go avec un bit modifié sera sauvé. Du côté de la virtualisation, les logiciels stockent les données dans des images disques composées de segments (les vmdk chez VMware) d’une capacité assez élevée (2 à 4 Go en fonction des réglages). Et dès qu’un segment est modifié, donc, il est sauvegardé. Dans un usage classique, et même si vous faites peu de manipulations dans une machine virtuelle, ça veut dire qu’une bonne partie de la machine virtuelle va être sauvegardée. C’est un double problème : vous allez remplir le disque de sauvegarde et ralentir les sauvegardes sans véritables raisons.

Quelles solutions ?

En cherchant un peu, on peut trouver quelques solutions.

• Solution la plus basique : ne pas passer par Time Machine et faire une sauvegarde manuelle (ou espérer que le disque ne tombera pas en panne). Pas franchement la solution la plus recommandée.

• Solution recommandée : activer les snapshots dans le logiciel. C’est ce que recommandent VMware et Parallels. L’idée est simple : au lieu de modifier les segments, le logiciel va stocker les modifications dans un segment dédié (le snapshot), qui lui va être sauvegardé. Dans VMware Fusion, il faut activer les snapshots et ensuite régler les bonnes valeurs.

Snapshots


Réglages


Les options

Avec cette technique, seul le snapshot sera sauvé, ce qui va évidemment réduire la taille de la sauvegarde. Mais ce n’est pas parfait, pour une raison évidente : les snapshots sont progressivement réintégrés au fil du temps. Donc périodiquement, Time Machine va (re)sauver les fichiers originaux sans raisons. On peut gérer ça en mettant beaucoup de snapshot (5 par défaut, on peut monter plus haut) mais le problème reviendra.

Chez Parallels, la fonction se nomme SmartGuard, mais l’idée reste la même.

• Solution contournement : mettre la machine virtuelle dans une image sparsebundle. Les segments des images disques d’Apple ne font que 8 Mo, donc statistiquement on va sauver moins de segments. On peut monter automatiquement l’image disque au démarrage en cas de besoin. C’est une solution (presque) efficace mais pas très pratique. Dans la majorité des cas, ça permet tout de même de réduire très fortement la quantité de données à sauvegarder.

• Solution future : Apple passe sur une nouvelle technologie pour Time Machine, qui utilise les fonctions d’APFS pour sauvegarder au niveau du système de fichiers et pas au niveau du fichier. Donc si vous modifiez 1 octet, Time Machine en APFS sauverait un bloc (généralement quelque kilooctets) et pas un fichier complet. mais pour le moment, c’est un peu du rêve.

Sinon, vous avez une technique magique pour sauvegarder les machines virtuelles ?