Jump to content

Drift/Backup: Difference between revisions

From Programvareverkstedet
No edit summary
 
m Fix formatting
 
(21 intermediate revisions by the same user not shown)
Line 1: Line 1:
= Backup =
Backup blir tatt av [[Maskiner/Microbel|microbel]] (backup av '''/home''') og diverse andre maskiner.
Backup blir tatt av [[Maskiner/Decibel|decibel]] (backup av /home) og [[Maskiner/Bacchus|bacchus]] (backup av /local/adm/).
Backupserveren er [[Maskiner/principal|principal.pvv.ntnu.no]]. Innloggingen der er begrenset til vi finner ut om det er bare drift eller alle pvv sine medlemmer som skal ha tilgang til boksen.
Backupserveren er [[Maskiner/Nosferatu|nosferatu.pvv.ntnu.no]]. Innloggingen der er begrenset til vi finner ut om det er bare drift eller alle pvv sine  
medlemmer som skal ha tilgang til boksen.


For brukere som har store filer de ikke trenger backup av, spesielt store filer som endres ofte og derfor ofte vil bli tatt med i inkremetelle backuper, så kan de legge filene i <i>~/nobackup</i>. Innholdet i den mappa vil da ikke bli tatt med i backup.
For brukere som har store filer de ikke trenger backup av, spesielt store filer som endres ofte og derfor ofte vil bli tatt med i inkrementelle backuper, så kan de legge filene i '''~/nobackup'''. Innholdet i den mappa vil da ikke bli tatt med i backup.


== Gammelt system: bacula ==
Backup blir tatt med rsync og ZFS. Et hjemmesnekret bash-script kjører rsync og kopierer filer til '''/backupz'''. Når rsync er ferdig tar et ZFS-snapshot.


Bacula er nå faset ut og tar ikke nye backuper. Det ligger fortsatt noen gamle backuper på nosferatu.
Backupscript og backuper ligger i '''/backupz'''. Du finner også backup-scriptet ved https://git.pvv.ntnu.no/Drift/principal-backup-script.


=== Restore ===
Backupscriptet blir kjørt som brukeren '''root''' hver natt klokka 05:01, som spesifisert i '''/var/cron/tabs/root'''
# logg på nosferatu og su til root
# Start bconsole
# Skriv: `restore`
# Velg restore-metode fra listen
#* For å restore en enkelt fil fra en gitt dato:
#** Velg #8: "Enter a list of files to restore before a specified time"
#** Skriv inn liste over filer som skal gjenopprettes. IKKE skriv /export foran /home.
# For å restore en hel mappe (IKKE rekursivt) fra en gitt dato:
#* Velg #10: "Find the <<Verbatim([[JobIds]])>> for a backup for a client before a specified time"
#* Velg #11: "Enter a list of directories to restore for found <<Verbatim([[JobIds]])>>"
#* Skriv inn liste over kataloger som skal gjenopprettes. IKKE skriv /export foran /home. Underkataloger må skrives inn manuelt.
# For å gjenopprette en katalogstruktur rekursivt:
#* Se [http://man.chinaunix.net/network/bacula/bacula_manual/Bacula_Consol_Restor_Comman.html denne tutorialen]
# Husk å trykke enter en ekstra gang på slutten, så det blir en tom linje.
# Vent minst en halv time.
# Velg mappen filene skal lagres til.
# Sjekk at alt er riktig satt, feil kan du rette med 'mod'.
# Godkjenn kjøring av jobb.
# Vent på at dataen skal hentes ut fra backup.


==== Linker ====
Se også '''/root/.ssh/config''' for diverse konfigurasjon rundt hvordan principal kobler seg til de forskjellige maskinene.
* [http://www.bacula.org/rel-manual/Brief_Tutorial.html#SECTION001260000000000000000 Offisiell tutorial]
* [http://man.chinaunix.net/network/bacula/bacula_manual/Bacula_Consol_Restor_Comman.html En litt utvidet tutorial]


=== Server-oppsett ===


==== Quirks ====
== Legge til eller endre backupjobber ==
/var på nosferatu var for liten til at databasen som bacula bruker fikk plass der så /var/db/bacula er symlinket til /data/bacula.


De fleste diskene har bare en "tape" per disk, men disk11 (ad6?) har flere "taper". Dette er et forsøk på å unngå et litt data på
Logg inn på principal som root og gå inn i '''/backupz'''. Vi prøver å bevare samme filsystem om vi flytter tjenester mellom bokser, og derfor heter en del av sharene bare "web", "databases" og lignende. Her må man bruke litt skjønn. Det er mulig å omstrukturere litt med <code>zfs rename</code> om det lå under en hostnavn-basert katalog før.
slutten av disken hindrer at hele disken står ubrukt selv om det ikke er ledig plass igjen noe annet sted.


==== Starting services ====
=== Sørg for at principal kan logge inn ===
Man starter bacula-fd på decibel med kommandoen: <code><nowiki>/usr/local/sbin/bacula-fd -v -d 5 -c /usr/local/etc/bacula-fd.conf</nowiki></code>


==== Ny disk ====
For at principal skal komme inn med SSH-nøkkelen sin må du først ssh-e til boksen manuelt, slik at principal cacher ssh-nøkkelen. I tillegg krever nøkkelen at scriptet '''/root/validate-rsync''' finnes. Kopier det fra en annen boks som blir tatt backup av. Når alt er OK skal du få dette svaret når du prøver å SSH-e fra principal til boksen:


Hvis du skal legge til en disk for f.eks. Incr-0020:
=== Lage nytt filsystem ===
Om det ikke allerede finnes en mappe under '''/backupz''' til dataene du skal ta backup av, opprett et ZFS-filsystem for formålet (pathen angis relativ til '''/''' uansett hvor du står):


* Sett inn den nye disken med drivebaysaken slått av.
<pre>
* Slå på draivbæien.
principal# zfs create principal/backupz/web
* Se hvilken device den får.
</pre>
* Gjør sånn mongo-bsd-formatering. (Et filsystem per disk er greit.) (newfs /dev/adX)
* Sett den opp til å montere på /backup/diskX
* Lag /var/backup/Incr-0020 som en symlink til /backup/diskX/Incr-0020
* Gå inn i bconsole
* Kjør label, velg Incr-poolen, skriv Incr-0020 (sånn ca., gidder ikke å sjekke rekkefølge nå)
* Avslutt bconsole
* Gå til /usr/local/etc
* co -l bacula-dir.conf
* Endre "Max Volumes" under Incr-poolen til 20
* ci -u bacula-dir.conf
* Drep og start på nytt alle bacula-relaterte prosesser


==== Sjekk at alle disker er montert opp på rett sted ====
Filsystemet blir mountet av seg selv:
<pre>
principal# df -h /backupz/web
Filesystem    Size    Used  Avail Capacity  Mounted on
backupz/web    14T      0B    14T    0%    /backupz/web
</pre>


Greit etter kjerneoppdatering blant annet.
=== Oppdatering av backupscriptet ===
nosferatu:/var/backup# for i in *-*; do echo $i; (cat $i |head -n1) >/dev/null; done


Rediger backup-scriptet (la deg inspirere av en av de eksisterende backupjobbene), kontroll er endringene, lag en commit og send det av gårde:
<pre>
principal# vim backup.sh
principal# git status
principal# git diff
principal# git add backup.sh
principal# git commit -m "Noe vettugt og forståelig for framtidens driftere"
principal# git push
</pre>
Husk å skrive en vettug commitbeskjed.
Pass også på så du ikke ender opp med å kjøre masse backupjobber på samme maskin samtidig. Om du har flere jobber mot samme boks (fordi dataene skal i ulike zfs-filsystemer) kan du eventuelt gruppere dem i et subshell som du legger i bakgrunnen.
=== Viktige ting å huske ===
Ikke backup '''/dev''' (fordi dette er tilkoblede "devices", og ikke egentlige filer) og '''/proc''' (fordi dette er info om prosessene som kjører på maskinen og heller ikke egentlige filer).
== Gjennoprette enkeltfiler fra backup ==
Vi bruker zfs-snapshots som backup.
Derfor er det veldig enkelt å hente ut filer.
Det er greit å vite hvilken maskin filen lå på, men det antas at du allerede vet dette.
=== Få en liste over alle snapshots ===
Denne kommandoen gir deg en liste over alle snapshots:
<pre>
principal# zfs list -t snapshot
</pre>
Legg merke til at hjemmeområdet heter '''/backupz/homepvv/export/home'''.
Dette er selvfølgelig rart på flere nivåer, for decibel har ikke vært oppe på en stund; mappenavnet er gammelt.
Etter dette navnet kommer en alfakrøll med dato til backupen.
=== Navigere rundt i snapshot ===
Så gjenstår det bare å cd til snapshottet. Eksempelvis:
<pre>
principal# cd /backupz/homepvv/export/home/.zfs/snapshot/20151021
</pre>
Hent det du trenger.
Dette vil være read-only, og vil oppføre seg litt merkelig.
== Fjernlagring av sikkerhetskopier ==
PVV har to backupdisker, hver på 10 TB.
Tanken er at en tilhører leder og en tilhører driftskoordinator, de er hver ansvarlige for å ta sikkerhetskopi hhv. høst og vår.
Backupdiskene er kryptert med ytre rootpassord, og skal ikke lagres på Gløs.
Diskene er tenkt å ha et kryptert ZFS filsystem, dette er imidlertid ikke satt opp pga. mangel på kryptering i FreeBSDs ZFS.
__NOTOC__
__NOTOC__

Latest revision as of 20:10, 26 January 2026

Backup blir tatt av microbel (backup av /home) og diverse andre maskiner. Backupserveren er principal.pvv.ntnu.no. Innloggingen der er begrenset til vi finner ut om det er bare drift eller alle pvv sine medlemmer som skal ha tilgang til boksen.

For brukere som har store filer de ikke trenger backup av, spesielt store filer som endres ofte og derfor ofte vil bli tatt med i inkrementelle backuper, så kan de legge filene i ~/nobackup. Innholdet i den mappa vil da ikke bli tatt med i backup.

Backup blir tatt med rsync og ZFS. Et hjemmesnekret bash-script kjører rsync og kopierer filer til /backupz. Når rsync er ferdig tar et ZFS-snapshot.

Backupscript og backuper ligger i /backupz. Du finner også backup-scriptet ved https://git.pvv.ntnu.no/Drift/principal-backup-script.

Backupscriptet blir kjørt som brukeren root hver natt klokka 05:01, som spesifisert i /var/cron/tabs/root

Se også /root/.ssh/config for diverse konfigurasjon rundt hvordan principal kobler seg til de forskjellige maskinene.


Legge til eller endre backupjobber

Logg inn på principal som root og gå inn i /backupz. Vi prøver å bevare samme filsystem om vi flytter tjenester mellom bokser, og derfor heter en del av sharene bare "web", "databases" og lignende. Her må man bruke litt skjønn. Det er mulig å omstrukturere litt med zfs rename om det lå under en hostnavn-basert katalog før.

Sørg for at principal kan logge inn

For at principal skal komme inn med SSH-nøkkelen sin må du først ssh-e til boksen manuelt, slik at principal cacher ssh-nøkkelen. I tillegg krever nøkkelen at scriptet /root/validate-rsync finnes. Kopier det fra en annen boks som blir tatt backup av. Når alt er OK skal du få dette svaret når du prøver å SSH-e fra principal til boksen:

Lage nytt filsystem

Om det ikke allerede finnes en mappe under /backupz til dataene du skal ta backup av, opprett et ZFS-filsystem for formålet (pathen angis relativ til / uansett hvor du står):

principal# zfs create principal/backupz/web

Filsystemet blir mountet av seg selv:

principal# df -h /backupz/web
Filesystem     Size    Used   Avail Capacity  Mounted on
backupz/web     14T      0B     14T     0%    /backupz/web

Oppdatering av backupscriptet

Rediger backup-scriptet (la deg inspirere av en av de eksisterende backupjobbene), kontroll er endringene, lag en commit og send det av gårde:

principal# vim backup.sh 
principal# git status
principal# git diff
principal# git add backup.sh
principal# git commit -m "Noe vettugt og forståelig for framtidens driftere"
principal# git push

Husk å skrive en vettug commitbeskjed.

Pass også på så du ikke ender opp med å kjøre masse backupjobber på samme maskin samtidig. Om du har flere jobber mot samme boks (fordi dataene skal i ulike zfs-filsystemer) kan du eventuelt gruppere dem i et subshell som du legger i bakgrunnen.

Viktige ting å huske

Ikke backup /dev (fordi dette er tilkoblede "devices", og ikke egentlige filer) og /proc (fordi dette er info om prosessene som kjører på maskinen og heller ikke egentlige filer).

Gjennoprette enkeltfiler fra backup

Vi bruker zfs-snapshots som backup. Derfor er det veldig enkelt å hente ut filer. Det er greit å vite hvilken maskin filen lå på, men det antas at du allerede vet dette.

Få en liste over alle snapshots

Denne kommandoen gir deg en liste over alle snapshots:

principal# zfs list -t snapshot

Legg merke til at hjemmeområdet heter /backupz/homepvv/export/home. Dette er selvfølgelig rart på flere nivåer, for decibel har ikke vært oppe på en stund; mappenavnet er gammelt. Etter dette navnet kommer en alfakrøll med dato til backupen.

Så gjenstår det bare å cd til snapshottet. Eksempelvis:

principal# cd /backupz/homepvv/export/home/.zfs/snapshot/20151021

Hent det du trenger. Dette vil være read-only, og vil oppføre seg litt merkelig.


Fjernlagring av sikkerhetskopier

PVV har to backupdisker, hver på 10 TB. Tanken er at en tilhører leder og en tilhører driftskoordinator, de er hver ansvarlige for å ta sikkerhetskopi hhv. høst og vår.

Backupdiskene er kryptert med ytre rootpassord, og skal ikke lagres på Gløs.

Diskene er tenkt å ha et kryptert ZFS filsystem, dette er imidlertid ikke satt opp pga. mangel på kryptering i FreeBSDs ZFS.