Difference between revisions of "Backup"

From A-Eskwiki
Jump to: navigation, search
(Nieuwe Systeem)
Line 1: Line 1:
[[category:sysop]]
+
Geregeld worden er '''backups''' gemaakt van een groot deel van het systeem. Hier vallen onder andere de home directories en virtuele machines onder.
Elke dag worden er '''backups''' gemaakt van een groot deel van het systeem. Onder andere de homedirectories, de mail en de webpages worden gebackupt. [[Scratch]] wordt niet gebackupt.
+
  
 
== Interne backups ==
 
== Interne backups ==
De interne backups zijn bedoeld om bestanden terug te kunnen halen die per ongeluk verwijderd zijn. De backups staan onder `/backup` in subdirectories met als naam de datum en tijd van de backup. Op den duur worden oude backups automatisch verwijderd, maar normaal kun je hier data terugvinden van 1 dag tot ongeveer een maand geleden. De subdirectory latest verwijst altijd naar de laatste backup (normaal van de afgelopen nacht).
 
  
Binnen een backup directory staan de bestanden op exact dezelfde plaats en met dezelfde permissies als in het gewone bestandssysteem, dus om bijvoorbeeld het bestand `bla.txt` op het Sysopaccount terug te zetten, zou je het volgende commando gebruiken:
+
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`.
  
$ cp /backup/latest/home/iba/sysop/bla.txt ~sysop
+
Deze 4 uurlijkse backups worden direct gesynced naar de on-site backup in de vorm van max.
  
== Externe backups ==
+
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.
Iedere nacht wordt er ook een off-site snapshot gemaakt naar [[claude]].
+
  
== Manier van backuppen ==
+
== Off-site backups ==
  
De backup scripts zitten in de [[Sysop scripts|Sysop SVN]]. Een korte uitleg per bestand:
+
We slaan de data ook off-site op bij de universiteit. Dit is een virtuele machine met de naam [[Claude|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 [https://mediawiki.a-eskwadraat.nl/wiki/Claude claude] gepulled vanaf max en door max eerst ge-gzipped en ge-encrypt, zodat de universiteit niet bij onze data kan. Naar [https://mediawiki.a-eskwadraat.nl/wiki/Claude claude] wordt elke eerste dag van de maand een complete kopie gedumped en voor de rest van de maand worden incrementele dumps gemaakt.
  
* `bu-mksnapshot`: maakt met behulp van `rsync` een snapshot naar `/backup`. Door het gebruik van een hardlink copy is de benodigde diskruimte zeer beperkt (een overhead van 100 tot 200 MB voor directorystructuur, plus alle gewijzigde files).
+
== Relevante scripts ==
* `bu-rmsnapshots`: ruimt een aantal snapshots op om te voorkomen dat `/backup` vol raakt.
+
* `bu-extern`: externe backup door claude.a-eskwadraat.nl. Typ 'bu-extern' voor built-in help inclusief setupinformatie. Op claude staat een kopie van dit script.
+
  
== Nieuwe Systeem ==
+
De volgende scripts en crons die te maken hebben met backups zijn allemaal in gebruik.
  
In het nieuwe systeem worden backups gemaakt met behulp van [[Bacula]]. Op dit moment worden twee dingen gebackupt.
+
*`/usr/local/bin/backupscript` op Haskell maakt elke 4 uur (door `/etc/cron.d/autobackup`) een snapshot en stuurt deze direct naar max.
* Alle snapshots die Proxmox maakt worden gebackupt.
+
*`/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.
* De /home van de MailNFS vm wordt apart gebackupt.
+
*`/usr/local/bin/pullbackups` op [https://mediawiki.a-eskwadraat.nl/wiki/Claude claude] pullt backups van Max en slaat deze op.
 +
*`/usr/local/bin/cleanbackups`op [https://mediawiki.a-eskwadraat.nl/wiki/Claude 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.
  
=== Virtual Machine Backup Schema ===
+
[[Category:Sysop]]
Van de virtual machine's ziet het backup schema er als volgt uit:SpaceWalk, IPA, GitSVN en WWW ziet het backup schema er
+
* Van de vm's SpaceWalk, IPA, GitSVN en WWW wordt maandag t/m zaterdag een dagelijkse backup gemaakt.
+
* Elke zondag, behalve op 1ste zondagen, wordt een wekelijkse backup gemaakt voor alle vm's
+
* Elke 1ste zondag van de maand wordt een maandelijkse backup gemaakt van alle vm's
+
 
+
=== MailNFS Backup Schema ===
+
Van de /home van MailnFS ziet het backup schema er als volgt uit:
+
* Elke maandag t/m zaterdag wordt dagelijks een incrementele backup gemaakt.
+
* Elke zondag, behalve op 1ste zondagen, wordt een wekelijkse differentiele backup gemaakt.
+
* Elke 1ste zondag van de maand wordt een maandelijkse volledige backup gemaakt.
+
 
+
=== Soorten Backups ===
+
Er wordt gebruik gemaakt van 3 verschillende soorten backups.
+
* Incrementele backups zijn backups die alleen veranderingen tot de vorige backup (ongeacht het soort)
+
* Differentiele backups zijn backups die alle veranderingen tot de vorige full backup opslaan.
+
* Full backups zijn backups die alles opslaan.
+
 
+
=== Retention ===
+
Backups worden niet voor eeuwig bewaard.
+
* Dagelijkse backups worden na een week verwijdert.
+
* Wekelijkse backups worden na een maand verwijdert.
+
* Maandelijkse backups worden na 3 maanden verwijdert.
+

Revision as of 16:30, 30 December 2015

Geregeld worden er backups gemaakt van een groot deel van het systeem. Hier vallen onder andere de home directories en virtuele machines onder.

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 max.

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.