Concepten Voor: beheerders, ontwikkelaars

Back-upconcepten

Back-uppunten, sessies, wijzigingsregistratie, exports en herstel van Kyvernon, en wat de controller en back-upsoftware elk bewaren.

Kyvernon biedt de middelen om virtuele machines te back-uppen zonder agents in de gast: een consistent tijdstip van elke schijf, de lijst van blokken die sinds de vorige back-up zijn gewijzigd, en een alleen-lezen netwerkexport van de schijf op dat tijdstip. De controller kan zelf back-ups maken en bewaren: zij schrijft ze naar een repository, voert schema's uit en bewaart de nieuwste punten. Back-upsoftware kan in plaats daarvan een eigen repository, schema en bewaartermijn beheren en de back-up-API van de controller (/v1/backup) gebruiken om elke back-up te maken en te lezen.

Statussen van een back-upsessie Een back-upsessie start op verzoek, een snapshot geeft een consistent punt, de schijven worden alleen-lezen geëxporteerd en de sessie wordt voltooid. Een sessie die niet in leven wordt gehouden eindigt als afgebroken of verlopen. Per schijf zijn de gewijzigde delen te lezen voor een incrementele back-up. Verzocht Sessie start Snapshot gemaakt Consistent punt Exporteren Alleen lezen, per schijf Voltooid Sessie eindigt Gewijzigde delen Incrementele back-up Afgebroken of verlopen Zonder keepalive

Back-ups van de controller

Een back-up die de controller maakt, schrijft elke schijf van een virtuele machine als back-uppunt naar de repository. Een punt is incrementeel wanneer het vorige punt wijzigings-id's heeft: de controller kopieert het vorige image en schrijft de gewijzigde gebieden op de kopie, zodat elk punt hele images bevat en afzonderlijk kan worden hersteld of verwijderd. Zie Een virtuele machine back-uppen.

Sessies en back-uppunten

Een back-up start een sessie voor één virtuele machine. De controller vraagt de host een back-uppunt te maken: de inhoud van alle geselecteerde schijven op één tijdstip, in één stap op de host genomen, met een optionele bevriezing van de bestandssystemen van de gast. Wat de software leest is de schijf op dat tijdstip, wat de virtuele machine ondertussen ook schrijft. Er verschijnt geen snapshot in de snapshotboom van de virtuele machine.

Een sessie doorloopt de statussen REQUESTED, SNAPSHOT_TAKEN, EXPORTING en COMPLETED. Zij eindigt als ABORTED wanneer de client een fout meldt of de host faalt, en als EXPIRED wanneer zij niet binnen haar levensduur in leven wordt gehouden (standaard 6 uur, hoogstens 48 uur). Een virtuele machine heeft hoogstens één actieve sessie. Het platform houdt de laatste 1.024 afgeronde sessies leesbaar.

Consistentie

Het verzoek stelt quiesce in. NONE maakt een crash-consistent punt. PREFERRED, de standaardwaarde, bevriest de bestandssystemen via de gastagent als die draait en maakt anders een crash-consistent punt. REQUIRED mislukt als het bevriezen mislukt. De sessie meldt wat zij heeft bereikt als CRASH_CONSISTENT of FILESYSTEM_CONSISTENT.

Terwijl software een trage export leest, kan een copy-before-write-image (fleecing) de draaiende virtuele machine beschermen: schrijfacties van de gast naar blokken die nog niet zijn gelezen gaan naar de schijf nadat de oude inhoud opzij is gekopieerd.

Wijzigingsregistratie en wijzigings-id's

Kyvernon VMM houdt een register bij van de gewijzigde blokken van elke beschrijfbare schijf (cbt = true in agent.toml, de standaardwaarde). Elke voltooide back-up geeft per schijf een wijzigings-id terug, een ondoorzichtige tekenreeks. De volgende sessie geeft die terug en ontvangt alleen de gebieden die sindsdien zijn gewijzigd. De waarde * vraagt alles wat is toegewezen, wat een volledige back-up van een thin schijf is zonder de lege delen te lezen.

Gebieden worden per pagina weergegeven, in oplopende volgorde, met een granulariteit van 64 KiB. Een wijzigings-id blijft geldig na uitschakelen, herstart van de host, livemigratie en het verplaatsen van een schijf naar een andere datastore. Hij wordt verouderd, en de volgende back-up moet volledig zijn, na een reset van de wijzigingsregistratie, een formaatwijziging van de schijf, het terugzetten naar een snapshot, een herstel op de schijf, verlies van de registratiegegevens, of wanneer nieuwere wijzigings-id's hem verdringen (per schijf worden de nieuwste 4 bewaard). Met fallbackToFull geeft een verouderd wijzigings-id een volledige back-up; zonder die optie mislukt het verzoek met backup.change_id.stale.

Export van de schijf

Voor elke schijf van een sessie in de status EXPORTING biedt de host een alleen-lezen export aan via het NBD-protocol. Een export naar een andere machine gebruikt altijd TLS 1.3. Het certificaat komt van de CA van het platform en zijn vingerafdruk staat in de sessie, zodat de client het kan vastzetten. Een back-upproxy op dezelfde host kan in plaats daarvan een Unix-socket gebruiken. De sessie noemt de export, en het token ervan wordt alleen getoond aan de gebruiker die de sessie startte. De export duurt tot de sessie eindigt of verloopt.

Exports buiten de host zijn uitgeschakeld tot de controllerinstelling remote_exports in [backup] aan staat.

Herstel

Een herstel schrijft een volledig image naar een nieuwe schijf van een virtuele machine. De software maakt een uitgeschakelde virtuele machine of kiest er een, vraagt een beschrijfbare export van een schijf met de opgegeven capaciteit, schrijft het image en legt het vast. De herstelde schijf begint een nieuwe registratieperiode, dus de eerste back-up na een herstel is volledig. Kyvernon bewaart ook de back-ups die het zelf heeft gemaakt. Een herstel schrijft een punt naar een nieuwe virtuele machine, of in de plaats van de schijven van een uitgeschakelde virtuele machine.

Een herstel kan op het platform worden geverifieerd: de herstelde virtuele machine start op een quarantainenetwerk zonder uplink, en het platform legt vast of zij is opgestart, een adres heeft gekregen en antwoordt op de poorten die u noemt. Zie Een virtuele machine herstellen.

Grenzen

OnderdeelWaarde
Granulariteit van gewijzigde gebieden64 KiB
Levensduur van een sessiestandaard 6 uur, hoogstens 48 uur
Actieve sessies256
Bewaarde afgeronde sessies1.024
Bewaarde wijzigings-id's per schijf4
Schijven per sessie64
Gebieden per paginastandaard 4.096, hoogstens 65.536
Time-out van een hostaanroepstandaard 600 seconden (agent_timeout)

Versie 0.1. Laatst gewijzigd: 2026-11-14