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.
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 ?
Attention, le fait d’avoir des snapshots, baisse les performances des VM!
Suivant le type de VM, tu peux avoir un mécanise de backup des données dans la VM elle-même vers un stockage externe.
Je n’utilise pas de VM, mais je me suis toujours demandé si un bon script rsync (1/2 j à écrire pour quelqu’un d’assez expérimenté ?) ne ferait pas le job aussi bien que Time Machine ?
Je ne comprend pas,
Time machine tourne sur ton mac et fait des sauvegardes sur une autre machine/ disque dur, des fichier modifiés sur ton disque et non de ton disque dur lui-même
il n’y a pas besoin de sauvegarder le conteneur de ta VM en bloc, ce serait comme si tu sauvegardait ton disque dur en un seul fichier.
Pourquoi, n’y a-t-il pas des logiciels de sauvegarde qui tournent sur ta VM, donc dans la même situation que time machine sur ton mac???? une VM, c’est finalement un pc comme un autre, non? On devrait pouvoir y faire tourner les mêmes logiciels de sauvegarde que sur une machine physique ?,
Le problème, c’est que si je fais une (petite) modification dans la VM, ça sauve beaucoup (trop) de choses.
Après, c’est juste une question pratique : Apple a une solution centralisée qui fonctionne globalement bien. Je compte pas passer mon temps à chercher des logiciels de sauvegarde efficaces pour chacune de mes VM, surtout que ça implique de garder un disque dur dédié pour ça et que je les utilise rarement dans l’absolu.
Un serveur dédié aux VM genre ESX et une solution dédié à ce genre d’infra comme Veeam?
Peut-être pas donné et pas super transportable ;) Mais est-ce que tu y a pensé?
Sinon, des VM « dans le nuage », les fournisseurs de service du genre ont des offres de backup pour. c’est encore une autre stratégie, à toi de voir.
@Pierre : même problème que toi ici, même combat…
Je n’ai pas de solution miracle mais :
1 – déjà je règle les VM pour qu’elles prennent le moins de place possible :
– les VM MacOS pas grand chose à faire à part lister et supprimer les snapshots APFS intérieurs à la VM le cas échéant. Chaque VM macOS fait ~15 Go
– les VM Linux sont assez peu lourdes (4-5 Go)
– les VM Windows je les fais systématiquement en 32 bits (ça reste compatible avec tout ce dont j’ai besoin, et une VM en 32 bits prend ~10 Go de moins qu’une VM en 64 btis). Aussi, je nettoie le windows update régulièrement comme un maniaque et je règle à 500 Mo le fichier d’échange, comme ça mes VM Windows font toutes ~12 Go « nues » et 15 Go avec des logiciels et datas…
2 – j’exclus effectivement totalement le dossier de mes VM des sauvegardes quotidiennes…
Une fois une VM installée, paramétrée et les updates faites, j’en fais 1 archive « à la main », puis plus aucun backup pendant quelques mois, seulement des snapshots avant de faire des trucs « risqués ».
Je re-backupe ensuite la VM à la main et seulement tous les 3-4 mois, et encore, seulement pour les systèmes qui sont encore mis à jour (donc W7, W8, W10 et les linux LTS uniquement).
A noter que l' »optimisation de taille » des VM mac ne fonctionne pas chez moi.. (ça fait partie des trucs qui m’énervent).
En tout cas je n’arrive pas à activer le TRIM dans le macOS client, et pour optimiser et nettoyer correctement une VM mac je suis obligé d’écrire des zeros sur l’espace libre, puis de faire la commande « vmware-vdiskmanager -k » sur le VDMK…
Je me suis fait un script shell pour chaque VM mais ça reste lourd…
@jfd : l’intérêt des VM est justement de sauvegarder en bloc la totalité d’une VM, de rétablir une VM à n’importe quel état de snapshot en 2 coups de cuiller à pot… Ce ne serait pas pratique et épouvantablement lent de sauvegarde la VM de l’intérieur avec de l’acronis / aomei ou consors, c’est 10x plus de manip et 10x plus lent que de sauvegarder un VDMK et ses snapshots…
@Gilles
–sauvegarde la VM de l’intérieur avec de l’acronis / aomei ou consors, c’est 10x plus de manip et 10x plus lent que de sauvegarder un VDMK et ses snapshots…
Bon, je n’y comprend rien en WM . je n’arrive donc pas à voir pourquoi ce serait 10 fois plus compliqué d’installer et faire tourner un logiciel de sauvegarde sur une VM que de faire la même chose sur une machine physique. Quand à la lenteur, justement, Pierre s’en plaint également de l’extérieur. :-)
–l’intérêt des VM est justement de sauvegarder en bloc la totalité d’une VM,
ça, j’arrive à comprendre, mais on ne peut pas vraiment dire qu’une sauvegarde incrémentale corresponde à cela.
Dans un cas, tu fait un déposer remplacer, dans l’autre tu déroule une procédure de restauration.
@Pierre
Il me semble que lancer (automatiquement) de temps en temps un script qui fait une vulgaire copie des VM avec date et heure sur le disque de sauvegarde est bien plus rentable et rapide que timemachine.
ou alors tu utilise en permanence tes VM et tu y laisse de nombreux fichiers importants. Dans ce cas, à mon avis, il vaut mieux avoir des machines physiques avec prise en main à distance plutôt que plusieurs VM sur ton mac.
C’est ce que j’avais, à l’époque où on a jeté le mac et qu’il fallait tout revoir pour le PC.
En dernier recours, comme le préconise Pouet78, il faut arrêter le bricolage à deux balles et faire chauffer la carte bleue pour une solution pro mais :
1) c’est pas dans tes gènes,
2) le site aurait bien moins d’intérêt
A++
Non, mais mettre le soft dans la VM, ça implique un disque dédié (je peux pas utiliser un truc formaté Mac), le brancher à la VM, laisser la VM active pour la sauvegarde, etc.
Le problème des autres solutions, c’est que le script, c’est pas valable, j’utilise un portable avec des VM sur disques externes. Et je sais pas si à une haure précise le disque sera connecté, la VM pas utilisée, etc.
Time Machine c’est transparent à l’usage. Après, mes VM sont pas hyper importantes, mais si je peux les récupérer facilement en cas de crash disque, c’est quand même mieux.
Le problème, c’est qu’aucune solution n’est transparente comme Time Machine. Avant leopard, je faisais des sauvegardes semi-manuelles et c’était l’enfer : fallait y penser, espérer que ça prenne pas trop de temps, vérifier manuellement de temps en temps que ça marchait, etc.
J’attends juste une façon simple de sauver (et j’espère qu’un Time Machine APFS réglera ça). Un truc que je peux oublier *et* qui va pas remplir mes disques de sauvegarde sans raisons.
J’ai aussi une problématique similaire (mais avec Parallels).
Ce que je fais :
– Exclusion des VMs de Time Machine (évidemment !)
– Backup semi-auto des mes DD complets via Carbon Copy Cloner (plusieurs fois par mois)
– Et dans mes VMs, je sauve mes fichiers importants (essentiellement projets Visual Studio) via une sauvegarder hubiC (ou autre truc similaire dans le nuage)
– Je récupère aussi de temps en temps ces projets Windows sur le Mac via un logiciel de synchronisation de dossier (comme ça, ça part aussi régulièrement dans Time Machine en plus)
Comme ça, en cas de crash, je peux :
– Récupérer ma dernière VM complète (qui sera à peu près a jour, aux WIndows Update près généralement)
– Remettre les dernières versions de mes projets via le Cloud (ce n’est généralement pas trop volumineux) ou Time Machine
Mais bon, pour l’instant, c’est assez théorique, je n’ai (heureusement !) pas encore eu à activer cette procédure :-)
(et j’ai quelques doutes sur la fiabilité d’hubiC…)
J’exclue aussi mes VM de la sauvegarde Time Machine pour des raisons de place sur ma Time Capsule. J’aurai préféré tout regrouper, mais ça donne des sauvegardes de taille démesurées.
J’utilise alors un disque dur externe avec Personal Backup pour faire des sauvegardes multi-version, à la sauce Time Machine (avec hard-links et tutti quanti…). Donc, je garde la faculté de restaurer une VM complète correspondant à une date donnée, à partir d’un autre disque. Je peux même aller piocher directement la VM à recopier à la mimine.
La sauvegarde se déclenche automatiquement au montage du disque de sauvegarde dédié et dès que c’est fini, le disque est éjecté tout seul. Ce qui réduit le nombre de manipulation au strict minimum.
Au-delà des sauvegardes, la gestion des snapshots est aussi un sujet en soit.
Juste un petit détail au sujet des VM et des snapshots : faîtes un snapshot une fois la VM éteinte. (Pas vu de mention plus haut à ce sujet. Peut-être que cela tombe sous le sens…)
Dans le cas contraire, la mémoire virtuelle de la VM est aussi sauvegardée. En fonction des réglages alloués, ça peut commencer à chiffrer.
Un exemple : 1 VM avec 4 Go de RAM alloué, c’est 4,1 Go d’espace attribué sur disque au moment de l’écriture du snapshot. Et donc une fichier unique, qui risque d’être conserver dans la sauvegarde hebdomadaire de Time Machine (celle qui est conservée pour la postérité ;-) ).