Rolling back-ups van VM’s met Proxmox

In de afgelopen weken is Tuxis bezig geweest met het testen van Proxmox als vervanger van Archipel, wat op dit moment gebruikt wordt om de VM’s van klanten aan te maken en te bedienen. Proxmox is een product dat al meer ontwikkelingstijd heeft en goed geschikt is om complete clusters mee te beheren. Daarnaast zouden klanten ook zelf een login kunnen krijgen om op die manier op eenvoudige wijze hun VM te bedienen.

Proxmox heeft ook back-upfunctionaliteit ingebouwd. De back-ups worden niet gemaakt vanuit de VM, wat Tuxis Online Back-up wel doet, maar de back-up wordt van de gehele disk gemaakt, zonder dat dat te merken is in de VM zelf. Voor dagelijkse back-ups heeft dit wat nadelen. Zo kun je geen losse files restoren, waardoor je eigenlijk de complete disk terug moet zetten. Online back-up blijft dus nog steeds een belangrijk onderdeel van de dienstverlening van Tuxis (u krijgt bij iedere VM die u afneemt, 10GB back-upopslag tot uw beschikking). Maar voor disaster-recovery is de back-up van de gehele disk (en de configuratie van de VM voor Proxmox) wel heel erg handig!

Proxmox laat je instellen wanneer je back-ups wilt maken, en waarvan. Maar in de praktijk houdt dat in dat je zelf moet bijhouden wie je back-upt, en wanneer. Je kunt ook niet aangeven wanneer de back-up moet stoppen met draaien. En dat kan weer (negatieve) gevolgen hebben voor de snelheid van de centrale storage. Daarom heeft Tuxis pmrb geschreven.

Wat doet pmbr?

pmbr staat voor “ProxMox Rolling Backups”. Het is de bedoeling dat het script op iedere machine die Proxmox draait geinstalleerd en geconfigureerd wordt zodat het door Cron op gezette tijden gedraaid wordt.
root@proxmox1-1:~# pmrb --help

This script will provide you with rotating backups of your VMs. It will make
sure to create backups if the oldest backup is too old. However, it will not
start new backups if it is too late to avoid performanceissues with your
storage.

Options:
pmrb [--dry-run] [--verbose] [--notafter <HH:MM>] [--maxage <weeks>] [--storage <pool>] [--email <emailaddress>]
--dry-run Don't actually run the backup. Just show which machines would be backed up
--verbose Add some extra output
--notafter Do not start a backup after HH:MM
--maxage Run new backups if the last VM-backup is older than <weeks> weeks
--storage Don't autodetect any storagepool that allows backups, use <pool>
--email Send an email to <emailaddress> for each backup
--help This help

Het accepteert een aantal opties waardoor het z’n doel bereikt: Zorg dat we van iedere VM een diskimage hebben van maximaal X-weken oud, maar voorkom onnodige load op de productiestorage op productiemomenten.

Als je pmbr start, gaat het twee dingen doen:

  1. Bepaal in welke Proxmox storagepool we de back-ups gaan plaatsen
  2. Inventariseer welke VM’s er op deze machine draaien en zet die in een lijst
  3. Sorteer de volgorde van te back-uppen machines op basis van deze voorwaarden
    • Als er een back-up van de VM is die jonger is dan <weeks>, haal de machine dan uit de lijst van te back-uppen machines
    • Als er nog geen back-up van de VM is, zorg dan dat deze bovenaan het lijstje van te back-uppen machines komt te staan
    • Sorteer de rest van de machines op basis van ‘hoe jonger de back-up, hoe lager op de lijst’
  4. Begin met het maken van back-ups, maar alleen als het niet later is dan <HH:MM>

Je kunt pmbr dagelijks draaien. Het gaat namelijk niets doen op het moment dat de back-ups jong genoeg zijn. Zodra er een nieuwe VM op het platform bijkomt, zal deze automatisch bij de eerst volgende run geback-upt worden. Als een back-up wel te oud is, zal er een nieuwe back-up gemaakt worden. Omdat het (in de meeste gevallen) niet zal lukken om alle machines in één run te back-upppen, ontstaat er vanzelf een verdeling van de load van het back-uppen over de verschillende momenten dat pmbr draait.

Cool, hoe kom ik aan pmbr?!

Je kunt pmbr downloaden via Tuxis z’n publieke HG-repository. Tips en feature-requests zijn natuurlijk altijd welkom. 🙂