Comment fonctionne l'instantané de machine virtuelle?
16
Ayant utilisé un logiciel d'imagerie de disque depuis plus d'une décennie, je trouve ahurissant que les machines virtuelles puissent être instantanées et restaurées en quelques secondes, tandis que l'imagerie de disque prend souvent des heures.
Je peux prendre un instantané d'une machine virtuelle, réinstaller sur un autre système d'exploitation, puis effectuer une restauration et, en quelque sorte comme par magie, en quelques secondes, mon ancienne machine virtuelle est parfaitement sauvegardée dans l'état où elle était auparavant.
Comment cela peut-il arriver? Qu'est-ce que l'hôte VM fait réellement à la VM qui rend cela possible?
Lorsque vous créez un instantané, toutes les modifications apportées à l'image de disque virtuelle initiale ne sont pas réellement apportées à l'image elle-même, mais elles sont écrites dans un nouveau fichier de disque (instantané). Cette action est si rapide car il n'est pas nécessaire de copier toute l'image du disque virtuel, car elle fonctionne sur le principe de la copie sur écriture (uniquement modifié, c'est-à-dire que les blocs écrits sont écrits sur l'image instantanée). Notez que l'image de l'instantané augmente à mesure que vous modifiez de plus en plus de données sur votre image de disque virtuel d'origine (qui reste telle qu'elle était au moment où vous avez pris l'instantané). Elle sera probablement beaucoup plus petite que l'image d'origine, mais dans le pire des cas, elle sera exactement de la même taille (si tous les blocs ont été modifiés).
Vous pouvez effectuer deux actions avec cette nouvelle image instantanée:
Jeter l'instantané : action très rapide. Le gestionnaire de machine virtuelle supprime simplement le fichier image de l'instantané et renvoie le contrôle sur l'image de disque d'origine ou sur certains des instantanés précédents
Fusionner l'instantané : le gestionnaire de machine virtuelle fusionne les blocs modifiés (c'est-à-dire l'image instantanée) avec l'image d'origine. Cette action prendra du temps en fonction de la quantité de blocs de l'image d'origine qui ont changé. Encore une fois, le pire des cas est que l'image originale entière soit écrasée au cas où tous les blocs de l'image d'origine auraient été écrits après la création d'un instantané.
Toutes les procédures décrites ci-dessus fonctionnent également pour plusieurs instantanés. Dans ce cas, l'image d'origine peut être un instantané, et l'instantané suivant peut référencer un bloc sur ce (premier) instantané. De cette façon, vous pouvez avoir de nombreux instantanés que vous pouvez supprimer ou fusionner facilement.
supprimer l'instantané, comme tout processus de suppression d'image, peut être assez lent si le nettoyage après suppression est activé. C'est une fonction de sécurité pour nettoyer l'espace utilisé par une image ou un instantané avant qu'il ne soit libéré pour être utilisé par d'autres machines virtuelles, sinon, en utilisant la lecture de bloc de bas niveau, il peut être possible de lire les données de la machine virtuelle précédente utilisée. Et toute solution de virtualisation qui ne dispose pas de cette fonctionnalité comporte un énorme défaut de sécurité
dyasny
J'ai essayé d'expliquer le scénario de création de plusieurs instantanés et comment les modifications de chaque instantané sont conservées. Voir cette courte explication sur le fonctionnement des instantanés VMware: cubicrace.com/2012/02/…
Piyush Chordia
5
Avec un instantané, votre logiciel de virtualisation doit garder une trace de quatre choses: l'état du processeur, la RAM, la configuration (combien de cartes réseau dans la machine virtuelle?) Et le disque. J'ignore les trois premières choses car ce ne sont pas d'énormes quantités de données, le logiciel peut simplement faire des copies des structures de données relativement petites et les stocker dans un fichier. Donc, cela ne laisse que l'instantané du disque à expliquer.
Tout d'abord, ce que la machine virtuelle considère comme un disque dur n'est en réalité qu'un ensemble de fichiers sur le système de fichiers hôte. Pour faire un instantané, le logiciel de la machine virtuelle prend le disque de la machine virtuelle à un certain moment, le conserve, ouvre un nouveau fichier disque vide et effectue un schéma de copie sur écriture avec chaque accès disque suivant.
Disons que votre fichier disque est BigVM.disk. Votre instantané et maintenant votre logiciel VM renomme votre disque en BigVM-s1.disk, puis crée un nouveau BigVM.disk vide. Lorsque votre machine virtuelle est en cours d'exécution, toutes les demandes de lecture passent par BigVM.disk. Si ce fichier n'a pas d'entrée pour la partie du disque que votre machine virtuelle souhaite, les données de BigVM-s1.disk sont renvoyées. Lors d'une écriture, les données sont écrites dans BigVM.disk au lieu de BigVM-s1.disk. Une lecture future dans ce même secteur retournera les données de BigVM.disk au lieu de l'instantané d'origine contenu dans BigVM-s1.disk. BigVM-s1.disk contient l'état du disque dur de votre machine virtuelle à partir de votre instantané, tandis que BigVM.disk contient toutes les différences sur votre disque depuis cet instantané.
Que se passe-t-il lorsque vous revenez à un instantané plus ancien? Le logiciel VM jette le contenu de BigVM.disk et recommence, avec un nouveau BigVM.disk vide qui pointe toujours sur BigVM-s1.disk.
Il écrit uniquement les différences dans les fichiers modifiés depuis l'instantané, pas le disque complet de la machine virtuelle. Comme diff et patch Unix, sauf une version plus sophistiquée qui diffère au niveau binaire et connaît d'autres détails de votre machine virtuelle.
Au moins dans les instantanés VMware, ce qui se passe est que l'instantané est essentiellement un signal au VMX pour démarrer un nouveau point de contrôle pour les écritures de disque et l'état de la machine. Selon que votre machine virtuelle est éteinte ou allumée, la restauration de l'instantané peut simplement impliquer de nuancer tout ce qui s'est passé après ce point de contrôle. Sinon, tous les secteurs de disque de votre machine virtuelle deviennent copiés lors de l'écriture, ce qui signifie que lorsque vous effectuez une restauration à chaud, il n'a qu'à réécrire les secteurs qui ont changé depuis que vous avez pris la capture instantanée. C'est pourquoi c'est plus rapide.
Bienvenue sur ServerFault! Bien que les liens vers des documents de référence externes soient encouragés, nous nous attendons également à ce que chaque réponse soit complète même si vos liens se brisent à l'avenir. Vous pouvez modifier cette réponse et ajouter des détails supplémentaires.
Avec un instantané, votre logiciel de virtualisation doit garder une trace de quatre choses: l'état du processeur, la RAM, la configuration (combien de cartes réseau dans la machine virtuelle?) Et le disque. J'ignore les trois premières choses car ce ne sont pas d'énormes quantités de données, le logiciel peut simplement faire des copies des structures de données relativement petites et les stocker dans un fichier. Donc, cela ne laisse que l'instantané du disque à expliquer.
Tout d'abord, ce que la machine virtuelle considère comme un disque dur n'est en réalité qu'un ensemble de fichiers sur le système de fichiers hôte. Pour faire un instantané, le logiciel de la machine virtuelle prend le disque de la machine virtuelle à un certain moment, le conserve, ouvre un nouveau fichier disque vide et effectue un schéma de copie sur écriture avec chaque accès disque suivant.
Disons que votre fichier disque est BigVM.disk. Votre instantané et maintenant votre logiciel VM renomme votre disque en BigVM-s1.disk, puis crée un nouveau BigVM.disk vide. Lorsque votre machine virtuelle est en cours d'exécution, toutes les demandes de lecture passent par BigVM.disk. Si ce fichier n'a pas d'entrée pour la partie du disque que votre machine virtuelle souhaite, les données de BigVM-s1.disk sont renvoyées. Lors d'une écriture, les données sont écrites dans BigVM.disk au lieu de BigVM-s1.disk. Une lecture future dans ce même secteur retournera les données de BigVM.disk au lieu de l'instantané d'origine contenu dans BigVM-s1.disk. BigVM-s1.disk contient l'état du disque dur de votre machine virtuelle à partir de votre instantané, tandis que BigVM.disk contient toutes les différences sur votre disque depuis cet instantané.
Que se passe-t-il lorsque vous revenez à un instantané plus ancien? Le logiciel VM jette le contenu de BigVM.disk et recommence, avec un nouveau BigVM.disk vide qui pointe toujours sur BigVM-s1.disk.
la source
Il écrit uniquement les différences dans les fichiers modifiés depuis l'instantané, pas le disque complet de la machine virtuelle. Comme diff et patch Unix, sauf une version plus sophistiquée qui diffère au niveau binaire et connaît d'autres détails de votre machine virtuelle.
la source
Au moins dans les instantanés VMware, ce qui se passe est que l'instantané est essentiellement un signal au VMX pour démarrer un nouveau point de contrôle pour les écritures de disque et l'état de la machine. Selon que votre machine virtuelle est éteinte ou allumée, la restauration de l'instantané peut simplement impliquer de nuancer tout ce qui s'est passé après ce point de contrôle. Sinon, tous les secteurs de disque de votre machine virtuelle deviennent copiés lors de l'écriture, ce qui signifie que lorsque vous effectuez une restauration à chaud, il n'a qu'à réécrire les secteurs qui ont changé depuis que vous avez pris la capture instantanée. C'est pourquoi c'est plus rapide.
la source
Le travail sur les instantanés VMware et ses internes est mieux expliqué @ http://www.pcclm.com/2012/02/virtual-machine-snapshots-in-vmware.html
la source