Backup

From A-Eskwiki
Revision as of 15:14, 7 August 2018 by Timb (Talk | contribs)

Jump to: navigation, search

Geregeld worden er backups gemaakt van een groot deel van het systeem. Hier vallen onder andere de home directories en virtuele machines onder. De WebCie heeft ook een grote hoeveelheid incrementele databasebackups.

Interne backups

De interne backups zijn bedoeld om bestanden terug te kunnen halen die per ongeluk verwijderd zijn. Elke 4 uur, met middernacht als offset, wordt er een recursieve snapshot gemaakt van alle data. Deze 4 uurlijkse snapshots worden, op die van middernacht na, 2 dagen bewaard. De snapshots van middernacht worden standaard 2 weken bewaard, met enkele uitzonderingen zoals de home directories. Deze uitzonderingen plus hun retention tijd staan op haskell in `/etc/cron.daily/managesnapshot`.

Deze 4 uurlijkse backups worden direct gesynced naar de on-site backup in de vorm van Nikola.

Interne backups kunnen makkelijk teruggehaald worden. In het geval van een dataset is er in de root van deze dataset een onzichtbare map .zfs. In het geval van de home kan de staat van 20 november 2015 teruggevonden worden in `/srv/home/.zfs/snapshot/2015112000`. Dit kan alleen op haskell gedaan worden aangezien deze map niet bereikbaar is over NFS. Iets vergelijkbaars kan gedaan wordne met zvol's. Eerst moet echter de property snapdev op visible gezet worden in plaats van hidden en daarna zijn de snapshots van de zvols zichtbaar in `/dev`. Snapshots zijn read-only, dus als je een zvol probeert te mounten die dirty is, dan werkt dit niet als er ext4 op de zvol staat. Ext4 wil bij het recoveren namelijk schrijven, wat niet kan. In een dergelijke situatie kan het vaak handig zijn om een snapshot te klonen en dan te mounten. Met xfs is dit niet nodig.

Off-site backups

We slaan de data ook off-site op bij de universiteit. Dit is een virtuele machine met de naam claude. Dit gebeurd vanaf max, aangezien daar een 1:1 kopie staat van de data en op deze manier wordt haskell ontlast. De backups worden vanaf claude gepulled vanaf max en door max eerst ge-gzipped en ge-encrypt, zodat de universiteit niet bij onze data kan. Naar claude wordt elke eerste dag van de maand een complete kopie gedumped en voor de rest van de maand worden incrementele dumps gemaakt.

Relevante scripts

De volgende scripts en crons die te maken hebben met backups zijn allemaal in gebruik.

  • `/usr/local/bin/backupscript` op Haskell maakt elke 4 uur (door `/etc/cron.d/autobackup`) een snapshot en stuurt deze direct naar max.
  • `/etc/cron.daily/cleansnapshots` draait op zowel Max als Haskell en ruimt elke dag oude snapshots op. Deze file is identiek op beide machines, dus aanpassingen moeten gesynced worden.
  • `/usr/local/bin/pullbackups` op claude pullt backups van Max en slaat deze op.
  • `/usr/local/bin/cleanbackups`op claude ruimt oude snapshots op als de ruimte (2TB) vol dreigt te raken. Vol is >90%. Dit is een cron die elke 5 minuten checkt. Mocht er iets fout gaan zoals dat er bij het opruimen niet tenminste 1 volledige backup altijd bewaard blijft, dan mailt deze dit. Het gebeurd nog wel eens dat de nfs share van de universiteit eruit knalt, en dan flipt dit script ook.

WebCie: snapshots van de database

Op de vm-www maakt een script automatisch elke 10 minuten een dump van de database. Een diff met de vorige db-dump wordt opgeslagen in het archief (haskell:/srv/www/archief): vanaf de vm-www beschikbaar op /archief/www/2018-08/07/whoswho4.2018-08-07_13_00.diff bijvoorbeeld. Ook wordt elke dag een volledige db-dump opgeslagen. Elke maand worden de volledige dumps en alle diffs samen gecomprimeerd. De dumps kun je gebruiken om per ongeluk gewiste data weer terug te zetten.