Bonjour Debian.
J’ai beaucoup utilisé VirtualBox sous Windows et un peu VMWare (pas taper, on m’avait forcé!) et là vu que j’ai enfin une machine physique Debian Stretch j’ai testé KVM avec virt-manager.
Avec un peu de recherche par-ci par-là (le wiki est assez bien fait en fait) pas de problème pour faire fonctionner le tout via l’interface graphique.
Par contre je ne comprends pas du tout la fonction “snapshot” (“instantané” en français)?
Sous VirtualBox ou VMWare quand on prend un snapshot et que l’on continue d’utiliser la VM, puis que l’on démarre le snapshot, la machine est telle que l’on l’a laissée au moment du snapshot (notamment au niveau des logiciels installés et des fichiers créés); tout ce qui a été fait après la prise du snapshot a disparu.
Mais là j’ai testé : je prends un snapshot (virt-manager prend bien le snasphot et il apparait dans la liste des instantanés) , je créée un fichier testsnapshot.txt, j’éteins la machine, je redémarre le snapshot en question, je fais un ls et le fichier testsnapshot est bien là (alors qu’il a été créé APRÈS la prise du snapshot, je le rappelle).
C’est un bug?
Les snapshots font autre chose sous KVM que de permettre de revenir à une version antérieure de la VM?
J’ai raté une étape?
Non, mais l’annulation des modifs disque ne vaut que sur le disque virtuel.
Si tu crées/modifies un fichier qui est, par exemple, sur ton répertoire linux utilisateur que tu as monté dans ta VM comme disque supplémentaire, les modifs que tu y fais, elles, ne sont pas “snapshotées”.
Ca peut donc être juste ça ?
Non non, c’est bien sur le /home/root de la VM, la dossier partagé est en /IciHostshare…
Tu confirmes que KVM devrait marcher comme virtualbox pour les snapshots?
Non, je dis juste que c’est comme ça que fonctionnent les snapshots sur les autres solutions de virtualisation, donc que ça pouvait être ça.
Mais je ne connais pas bien KVM, j’utilise virtualbox, donc je ne peux pas te renseigner plus, désolé.
De souvenir la palme d’or de la seule solution bâtarde d’utilisation d’image instantanée revient reviens à Hyperv, qui lors d’une prise d’image instanatnée mets de côté le VHD et utilise l’AVHD, jusqu’a fusion de celui-ci avec le VHD et bascule (imperciptible).
Que ce soit XEN, KVM ou Vmware, les snap)shots sont mis de côté.
Maintenant tous les format ne supporte pas en pratique les prise d’image instantanée tel que RAW, mieux vaux donc s’orienter soit sur du VHD (le plus portable probablement) ou du Qcow2.
Le gros avantages de ce dernier et de permettre le ‘copy on write’ sur un disque séparé de celui du serveur, permettant ainsi de conserver la machine intact.
Idem de souvenir sous Openstack je n’ai jamais démarré une instance à l’aide d’une instantanée, je me suis toujours appuyez sur la construction d’un template en utilisant l’instantanée.
Quels est le format de ton disque virtuel, et quel est la commande utilisé pour faire l’instantanée ?
Dans le pire des cas fait un snapshot de ta machine post-installation comme référentiel, puis fais tes modifs et fais un snapshots, tu pourra ainsi utilisé la fonction de virsh pour ‘revert’ sur celui de ton choix.
A savoir que sur Xenserver il existe plusieurs type d’instantanée seule le deuxième permet de pouvoir recréer à la volé le serveur, l’autre ne pourra servir qu’a être monté pour de la récupération de donnée :
snapshot de volume (only disk)
snapshot d’instance (complete server)
Je ne saurai que trop de prendre le temps de bien pesé le pour et le contre des différents format exploitable sous KVM selon tes besoins et de mettre ne place une certaines automatisations (surtout si tu as pas mal de machines) pour les sauvegardes/snapshots de celle-ci.
De ce côté longue vie à Docker ou LXC en s’appuyant sur KVM la simplicité pour ce type d’opération courante dans la vie d’un sysadmin/devops
OK merci, ça marche pour l’instant (et puis ça m’a forcé à me mettre à la ligne de commande pour KVM, et c’est bien de voir qu’elle ne mord pas).
Aurais-tu une idée sur un autre souci:
Pour ne pas saturer la partition / j’ai fait (sans comprendre tout) virsh pool-create-as srv-kvm dir --target /home/lienrag/kvm/
mais malgré tout les VMs ont été créées dans /var/lib/libvirt/images/
J’ai créé en graphique un nouveau pool (SPool1LR) pointant sur /home/lienrag/kvm mais ça n’empêche pas que les VM que je créé ensuite avec Virt-Manager sont toujours dans /var/lib/libvirt/images/
a première vue je dirais que le pool n’est pas pris en compte lors du déploiement de l’instance, reste à voir ce qu’il y a dans le xml de configuration utilisé à moins que virtmanager gère ça autrement.
Peux-tu tenter cette commande et voir si dedans justement tu ne spécifie pas l’endroit ou sera stocké la configuration et les disques.
N’étant pas un utilisateur de virtmanager je ne pourrait pas t’infirmer ou te confirmer mais je pense malgré tout qu’il gère lui même la configuration et donc le lieu de déploiement.
Il te faudrait détruire le pool nommé default qui est utilisé par virt-manager
puis ensuite en créer un nouveau nommé aussi default en choisissant
le répertoire que tu veux utiliser : /home/lienrag/kvm/
pour que les fichiers image disque y soient stockés par défaut quand tu créera des nouvelles machines virtuelles avec l’interface virt-manager.
Et comme tu avais créé le pool srv-kvm en utilisant déjà le répertoire /home/lienrag/kvm/
Il te faudra d’abord détruire ce pool.
Ça peut se faire depuis l’interface graphique de virt-manager : Gestionnaire de machines virtuelles -> Édition -> Détails de la connexion -> Onglet Stockage
Ou alors, en ligne de commandes :
NOTE :
Dans ce qui suit, les commandes virsh pool-destroy … et pool-undefine …
ne modifieront pas le contenu des répertoires utilisés par les pools default et srv-kvm
Autrement dit : les fichiers contenus dans les répertoires /home/lienrag/kvm/ et /var/lib/libvirt/images/ ne seront pas supprimés.
OK merci.
Résultat:
root@debian:/home/lienrag# virsh pool-undefine default
Pool default has been undefined
Normal si j’ai bien compris ce que ton code veut faire.
root@debian:/home/lienrag# virsh pool-destroy srv-kvm
error: failed to get pool 'srv-kvm'
error: Storage pool not found: no storage pool with matching name 'srv-kvm'
Pourtant j’ai bien virsh pool-create-as srv-kvm dir --target /home/lienrag/kvm/
dans mon historique et je ne vois pas quand je l’aurais supprimé…
root@debian:/home/lienrag# virsh pool-undefine srv-kvm
error: failed to get pool 'srv-kvm'
error: Storage pool not found: no storage pool with matching name 'srv-kvm'
Logique vue la première erreur rencontrée
root@debian:/home/lienrag#
root@debian:/home/lienrag# virsh pool-define-as --name default --type dir --target /home/lienrag/kvm/
error: Failed to define pool default
error: operation failed: Storage source conflict with pool: 'SPool1LR'
Erreur qui a une certaine logique, mais comment je fais?
Je change la destination du répertoire? C’est le plus simple mais mes machines seront créées dans le nouveau default ou dans SPool1LR?
Ou je détruis SPool1LR?
root@debian:/home/lienrag# virsh pool-build default
error: failed to get pool 'default'
error: Storage pool not found: no storage pool with matching name 'default'
root@debian:/home/lienrag# virsh pool-autostart default
error: failed to get pool 'default'
error: Storage pool not found: no storage pool with matching name 'default'
Là encore logique vue l’erreur principale…
root@debian:/home/lienrag# virsh pool-start default
error: failed to get pool ‹ default ›
error: Storage pool not found: no storage pool with matching name ‹ default ›
Pour savoir où tu en es avec tes pools,
utilises les commandes :
virsh pool-list
et :
virsh pool-info nomDuPollQuiTintéresse
ou bien :
virsh pool-dumpxml nomDuPollQuiTintéresse
Le but est d’abord de « libérer » (s’il existe) le pool nommé default
car c’est celui qui est utilisé par virt-manager par défaut pour y créer les fichiers images disques.
Mais apparemment, il n’existe pas :
Je pensais que tu voulais que les fichiers images soient créés dans le répertoire /home/lienrag/kvm/
mais on dirait que ce répertoire est déjà associé au poll nommé SPool1LR
Il faudrait donc désassocier le répertoire /home/lienrag/kvm/ du pool SPool1LR
root@debian:/home/lienrag# virsh pool-list
Name State Autostart
-------------------------------------------
lienrag active yes
SPool1LR active yes
Téléchargements active yes
root@debian:/home/lienrag# virsh pool-destroy SPool1LR
Pool SPool1LR destroyed
root@debian:/home/lienrag# virsh pool-undefine SPool1LR
Pool SPool1LR has been undefined
root@Idebian:/home/lienrag# virsh pool-define-as --name default --type dir --target /home/lienrag/kvm/
Pool default defined
Donc maintenant, si tu utilises l’interface graphique de virt-manager pour créer une nouvelle machine virtuelle, le fichier image disque de cette nouvelle machine virtuelle devrait être créé dans le répertoire : /home/lienrag/kvm/
Par contre pour revenir à la question de départ: grâce à l’aide de Clochette et de son lien magique vers cyberciti, j’ai pu faire des instantanés en ligne de commande avec virsh, et ils fonctionnent comme des snapshots bien élevés doivent le faire.
Mais pourquoi quand je regarde la liste des snapshots dans virt-manager ils n’apparaissent pas? Et pourquoi dans la liste des snapshots de virt-manager, j’en ai trois sur cinq qui disent qu’ils sont “en cours d’exécution” (alors que une seule VM, normalement le snapshot maître, est lancée)?
Peut-être en fermant virt-manager ce qui ne stoppe pas les machines virtuelles qui seraient en cours de fonctionnement,
puis en démarrant à nouveau l’interface virt-manager
Eteindre et redémarrer n’a pas fait apparaître le snapshot créé avec virsh dans la liste des snaphots affichés par virt-manager, non.
Le snapshot créé avec virsh et ceux créés avec virt-manager apparaissent bien avec virsh snapshot-list --domain debian9 par contre.
Pour déplacer les anciennes VM de leur place actuelle vers le nouveau pool en /home/lienrag/kvm il y a une solution?
Je fais un cp à la main du fichier qcow2?
Mais je ne comprends pas malgré tout si virsh migrate debian9 localhost/home/lienrag/kvm devrait marcher (j’obtiens error: no connection driver available for localhost/home/lienrag/kvm et pareil quand je fais virsh migrate debian9 /home/lienrag/kvm) ou non (et dans ce cas quoi utiliser).
debian9 étant bien sûr le nom de ma machine.
Le nom de fichier est lui /var/lib/libvirt/images/debian9.qcow2