KVM

KVM-gastsnapshots met Libvirt

KVM-gastsnapshots met Libvirt
VM's hebben veel gebruiksscenario's, waaronder de capaciteit van VM's om als testmachines te worden gebruikt. U kunt experimenteren binnen een VM, patches toepassen en upgrades testen voordat u hetzelfde doet op uw productiesystemen of uw werkstation. U kunt ook wegwerp-VM's gebruiken, die geen persoonlijke of gevoelige gegevens bevatten, voor het testen van malware, zoals de meeste beveiligingsgemeenschappen doen, zorg er gewoon voor dat het netwerk van de VM is geïsoleerd van uw host en LAN.

Het wordt echter vermoeiend om het besturingssysteem steeds opnieuw in uw VM te installeren. Het belemmert uw workflow en daarom heeft u een betrouwbare manier nodig om:

  1. Maak op elk gewenst moment een momentopname van uw VM.
  2. Een mechanisme hebben om de momentopname te gebruiken om uw VM terug te zetten naar een eerder werkende staat.

Ik heb eerder besproken hoe snapshots werken in VirtualBox en deze keer wilde ik snapshots binnen Libvirt bespreken. Ik zal QEMU-KVM gebruiken als de backend-hypervisor voor mijn Libvirt-installatie. Jouw geval kan verschillen, maar de algehele functionaliteit en interface zou niet heel anders moeten zijn, aangezien libvirt zijn best doet om de frontend-interface te standaardiseren.

Als u niet bekend bent met libvirt en qemu-kvm, vindt u hier een handleiding over hoe u KVM op Debian kunt instellen.

Een momentopname maken

Er zijn verschillende manieren waarop u snapshots van uw VM kunt maken en beheren. GUI-applicaties zoals virt-manager en oVirt bieden de functionaliteit en je kunt zelfs aangepaste scripts schrijven om te communiceren met de libvirt API die het hele scala aan snapshots voor je beheert.

Ik zal echter de virsh command line interface gebruiken om te laten zien hoe je je VM's en hun snapshots kunt beheren. Dit hulpprogramma wordt geleverd met bijna alle standaard libvirt-installaties en zou beschikbaar moeten zijn in een groot aantal distributies.

Zorg ervoor dat u voor de onderstaande opdrachten de naam van mijn VM, VM1, vervangt door de werkelijke naam van uw VM. Libvirt verwijst vaak naar virtuele machines en containers als: Domeinen. Dus als u een foutmelding ziet die bijvoorbeeld "domeinnaam specificeren" suggereert, moet u de naam van uw VM opgeven als een van de argumenten voor de opdracht. Gebruik de volgende opdracht om alle VM's weer te geven onder Libvirt's beheer.

$ virsh lijst --all

Om een ​​momentopname van een VM te maken, voert u eenvoudig het volgende uit:

$ virsh snapshot-creëer VM1

En om alle snapshots van een bepaalde VM weer te geven, gebruikt u de opdracht:

$ virsh snapshot-lijst VM1
Naam                 Aanmaaktijd             Staat
------------------------------------------------------------
1556533387           2019-04-29 15:53:07 +0530 actief

U kunt zien dat de momentopname is gemaakt. Standaard is de naam van de snapshot de aanmaaktijdstempel (het aantal seconden sinds het UNIX-tijdperk). De kolom Creatietijd toont de tijd van creatie op een voor mensen leesbare manier en de kolom Status toont de status van de VM toen deze werd gemaakt. Aangezien deze VM actief was, is de status van de momentopname ook 'in uitvoering', maar dat betekent niet dat de momentopname zelf wordt uitgevoerd. Het zal niet veranderen met de tijd. Deze functie staat ook bekend als live snapshot en is behoorlijk waardevol omdat u hiermee een snapshot van uw VM kunt maken zonder enige downtime. De KVM-gasten werken in ieder geval prima met live snapshots.

Bij bepaalde workloads moet u echter de VM stoppen voordat er een snapshot van wordt gemaakt. Dit zorgt ervoor dat de gegevens in de momentopname consistent zijn en dat er geen halfgeschreven bestand of ontbrekende gegevens zijn. Als de workload die in uw VM wordt uitgevoerd een hoge IO heeft, moet u de VM waarschijnlijk uitschakelen voordat u de snapshot maakt. Laten we er op deze manier een maken.

$ virsh afsluiten VM1

Domein VM1 wordt afgesloten

$ virsh snapshot-creëer VM1

Momentopname van domein 1556533868 gemaakt

[e-mail beveiligd]:~# virsh snapshot-lijst VM1
Naam                 Aanmaaktijd             Status
------------------------------------------------------------
1556533387           2019-04-29 15:53:07 +0530 actief
1556533868           2019-04-29 16:01:08 +0530 uitschakeling
 
$ virsh start VM1
Domein VM1 gestart

Als u de snapshots een andere naam wilt geven dan een tijdstempel, gebruikt u de opdracht:

$ virsh snapshot-create-as VM1 --name snap1
Naam                 Aanmaaktijd             Staat
------------------------------------------------------------
1556533387           2019-04-29 15:53:07 +0530 actief
1556533868           2019-04-29 16:01:08 +0530 uitschakeling
snap1                2019-05-02 22:27:48 +0530 actief

Het is duidelijk dat je het geen snap1 hoeft te noemen, je kunt elke geschikte naam kiezen.

Terugkeren van een momentopname

Een momentopname maken heeft geen zin als je er niet naar terug kunt gaan. In het geval dat u terug moet naar een momentopname, gebruikt u gewoon de opdracht:

$ virsh snapshot-revert $VMName $snapshot-name

De naam kan de tijdstempel zijn of de door de gebruiker toegewezen naam die aan de momentopname is gegeven.

Zorg ervoor dat er geen belangrijke gegevens in uw huidige VM zijn, of als er iets belangrijks is, maak dan een momentopname van uw huidige VM en keer terug naar een oudere momentopname.

Voordelen van QCOW2

Dankzij het copy-on-write-mechanisme van qcow2-bestanden kan elke snapshot zeer weinig ruimte innemen. De ruimte die door een snapshot wordt ingenomen, neemt in de loop van de tijd toe naarmate het lopende beeld afwijkt van de snapshot. Dus zolang u niet veel gegevens herschrijft, nemen uw snapshots slechts een paar MB opslagruimte in beslag.

Het betekent ook dat de snapshots ook erg snel zijn. Omdat het copy-on-write-mechanisme alleen de tijdstempel hoeft te markeren waarop de snapshot werd genomen. De datablokken die na de snapshot naar het qcow2-bestand zijn geschreven, horen er niet bij, maar de oudere wel. Zo simpel is het. Mijn testbank gebruikt een 5400RPM harde schijf die zeker niet op het hoogtepunt van zijn prestaties is, het duurt nog steeds minder dan een paar seconden om een ​​live snapshot te maken van een VM op deze schijf.

Conclusie

Zoals met de meeste libvirt- en virsh-gerelateerde hulpprogramma's, biedt de snapshot-functionaliteit een zeer flexibele interface met functies van ondernemingsniveau zoals live snapshotting samen met de voordelen van een kopieer-op-schrijfmechanisme.

De standaard naamgevingsconventie maakt het ook gemakkelijker voor shellscripts om periodiek oude snapshots te verwijderen en te vervangen door nieuwere. Een van mijn oudere artikelen over OpenZFS-snapshots en snapshotbeleid kan ook worden toegepast op uw KVM-gast. Voor meer informatie over het virsh snapshot hulpprogramma kun je het virsh help snapshot commando gebruiken. De helppagina is erg klein, nauwkeurig en gemakkelijk te begrijpen.

Hoe de muis- en touchpad-instellingen te wijzigen met Xinput in Linux
De meeste Linux-distributies worden standaard geleverd met de bibliotheek "libinput" om invoergebeurtenissen op een systeem af te handelen. Het kan in...
Wijs uw muisknoppen anders toe voor verschillende software met X-Mouse Button Control
Misschien heeft u een tool nodig waarmee u de bediening van uw muis kunt veranderen bij elke applicatie die u gebruikt. Als dit het geval is, kunt u e...
Microsoft Sculpt Touch draadloze muis Review
Ik las onlangs over de Microsoft Sculpt Touch draadloze muis en besloot hem te kopen. Nadat ik het een tijdje had gebruikt, besloot ik mijn ervaring e...