Backup

A Unix/Linux szerverek üzemeltetése wikiből
A lap korábbi változatát látod, amilyen SzatmariZoltan (vitalap | szerkesztései) 2008. december 10., 10:19-kor történt szerkesztése után volt.

Írta: Szatmári Zoltán.

Tartalomjegyzék

1 Biztonsági mentés fogalma, célja

  • A backup-megoldás elsődleges célja biztonsági mentés készítése a rendszer adott állapotáról
  • A biztonsági mentés alapvető védelmet jelent bizonyos hardver- és szoftverhibák ellen
    • Emberi hibák ellen is véd (pl. a RAID-el ellentétben)!
  • Célja az adatok tárolása, naplózása és helyreállítás lehetőségének biztosítása

2 A mentés célmédiuma

Lehetséges tárolómédium

  • HDD (Lokális vagy távoli kiszolgálóban)
  • CD/DVD
  • Mágnesszalag
  • NAS/SAN

3 Backup megoldások

  • Teljes mentés: A rendszer minden adata válogatás nélkül mentésre kerül. A mentési folyamat ezért egyszerű, ellenben sok ideig tart és sok tárterület szükséges hozzá. Amennyiben adataink olyanok, hogy nem változnak túl sűrűn, a gyakori teljes mentés sok fölösleges adat tárolását okozza. Előnye azonban, hogy a visszaállítás viszonylag gyors.
  • Inkrementális mentés: Alkalmazása esetén nem kerül elmentésre minden adat, hanem csak azok, amelyek egy korábbi mentés óta megváltoztak (ekkor a visszaállításhoz természetesen több biztonsági mentésre is szükség van). Az inkrementális mentésnek két alapvető fajtája van: a kumulatív és a differenciális mentés. Ezek segítségével többféle mentési stratégia kidolgozható.
    • Kumulatív mentés: Ezen mentés során mindig az utolsó teljes mentés óta megváltozott adategységek kerülnek elmentésre. A kumulatív mentésekből álló mentési stratégiánál ha egy adategység valamikor megváltozott, akkor az minden kumulatív mentés alkalmával ismételten mentésre kerül egészen a következő teljes mentésig. A kumulatív mentés gyorsabb a teljes mentésnél és kevesebb helyet is kíván. A differenciális mentésnél azonban lassabb és a tárigénye is nagyobb.
    • Differenciális mentés: A differenciális mentés során csak az utolsó inkrementális mentés óta megváltozott adategységek kerülnek elmentésre. Ha két teljes mentés között több differenciális mentést végzünk, akkor pl. a második differenciális mentés csak az első óta történt változásokat fogja rögzíteni. Ennek köszönhetően maga a mentés folyamata gyorsabbá válik, és esetenként kevesebb helyet foglal el. Hátránya azonban, hogy a visszaállításhoz a legutolsó teljes mentésre, és az azt követő összes differenciális mentésre szükség van.
  • "If one of the daily full backup files was bad, than you dont have backup for that day, but if one of the weekly full backup files was bad, than your incremental daily backups are basically unuseable."


4 A mentés végrehajtása

  • Biztonsági mentés a rendszer konzisztens állapotában végezhető el. Nagyméretű rendszerek esetén előfordulhat, hogy a mentés elvégzésének ideje olyannyira hosszú, hogy akkora leállás már nem fér bele az üzemidőn kívüli időszakba. A ritkábban végzett mentés pedig az utolsó mentés óta elveszett adatok mennyiségét növelheti meg jelentősen, valamint nagyon nagy adatmennyiségeknél már a szükséges tárolókapacitás miatt is nehézségekbe ütközhetünk. Megoldásképpen tipikusan ilyenkor alkalmazzák azt a módszert, hogy teljes mentést csak ritkábban (pl. hétvégente) készítenek, napi rendszerességgel csak a változásokat mentik valamelyik inkrementális mentési stratégia alkalmazásával.
  • On-line rendszerek esetén problémát okozhat az, hogy a mentés végzése közben a rendszert nem állíthatjuk le, így a mentés közben változhat a mentett adatbázis tartalma, ami beláthatatlan következményekkel járó inkonzisztenciához vezethet. Ilyen esetben az úgynevezett hideg mentés módszerét szokták alkalmazni, azaz az adatbázis tartalmát befagyasztják a mentés idejére és a változásokat nem végzik el benne, hanem pusztán feljegyzik egy külön listába (transaction log-ba). A mentés befejeződését követően az el nem végzett módosításokat a rendszer végrehajtja az adatbázison, így annak fizikai tartalma hamarosan utoléri az on-line működést.
  • A backup policy egy szervezeten belüli belső szabályzat, melyet speciálisan a nyújtott szolgáltatáshoz kell hangolni.
  • Leírja:
    • Biztonsági mentést milyen gyakran kell végezni
    • Milyen típusú mentést kell végrehajtani
    • Az elkészült mentéseket mennyi ideig kell tárolni. (Előfordulhat, hogy verziózás, valamilyen törvényi előírás vagy bármi egyéb célból több mentéssel kell rendelkeznünk)
  • A mentés végrehajtása célszerű, ha utomatizáltan megy végbe, emberi beavatkozást nem igényel
  • Biztonsági szempontból célszerű fizikailag elkülönített helyen tárolni a mentett adatokat.

5 A biztonsági mentés teljesítményének mérése, mérőszámai

  • Egyszeri mentés lefutási ideje
  • Visszaállítás időigénye (Nem kritikus, ha ritkán van rá szükség)
  • Visszaállítható időtáv
  • Visszaállítható verziók száma
  • Elfoglalt tárhely aránya az adatmennyiséghez képest

6 Mentési szintek

  • Teljes lemez mentése (bájtszinten) - alacsony szintű backup
  • Teljes fájlrendszer mentése
    • Verziózott fájlrendszer használata
  • Adott fájlok, mappák mentése.
  • Alkalmazás-specifikus mentés - magas szintű backup
    • Adatbázismentés

7 Mentés vezérlés

  • PULL: központi szerver által vezérelt biztonsági mentés.
  • PUSH: A mentendő munkaállomás vagy alkalmazás által vezérelt (igényvezérelt) mentés.

8 Felhasználható eszközök

  • dd - lemezkép készítése, teljes lemez mentéséhez alkalmas program
  • Bármilyen fájl alapú másoló, tömörítő eszköz (cp, tar, scp, ...) egyszerű fájlok, mappák mentéséhez.
  • rsync inkrementális másoláshoz
  • Komplett backup toolok
    • Mögöttük gyakorlatilag az elemi eszközök helyezkednek el
    • Automatikát és egyéb plusz szolgáltatást adnak az elemi eszközökhöz.

9 rsync és a felmerülő problémák

Az rsync segítségével gyorsan és minimális adatmozgatással lehetőségünk van biztonsági másolatot készíteni adatainkról. Egy speciális "delta-kódolás" segítségével csak a változásokat kell átvinni a halózaton. Rugalmas paraméterezhetőségével beállíthatjuk többek között, hogy inkrementális backup esetén új mappában helyezze el a változtatott adatokat és hardlinkek segítségével a változatlanokat "linkelje" be (azaz egy példányban léteznek a változatlan adatok), vagy, hogy a törölt fájlokat a mentésből is törölje le.

A biztonsági mentés többnyire hálózaton keresztül, egy távoli gépre, vagy ahhoz csatlakoztatott szalagos meghajtóra történik. Ekkor a mentendő adatokat hálózaton keresztül, SSH kapcsolattal visszük át (rsync over SSH). Ekkor problémaként merül fel, hogy egyik gépről a másikra ssh-n keresztül be kell jelentkeznünk a fájlok eléréséhez. Alapvetően két megközelítés van:

  • a mentendő gép (kliens) kapcsolódik a backup szerverhez és automatikusan küldi el az adatokat, szinkronizál a szerverrel, vagy
  • a backup szerver jelentkezik be a mentendő gépre és "szerzi meg" a mentendő adatokat.

Mindkét esetben egy automatikus SSH-n keresztüli bejelentkezés szükségeltetik, ami csak SSH-kulcspárok segítségével lehetséges. A fájlok eléréséhez a távoli felhasználó részére jogokat kell biztosítanunk, ami egy fontos biztonsági rés lehet a rendszerünkben. Ezen biztonsági kockázatot csökkenthejük, ha korlátozásokat teszünk az SSH kulcspár alapú hitelesítésre:

  • csak adott hosztról lehessen bejelentkezni,
  • csak adott parancs futtatása engedélyezett.

authorized_keys:

from="1.2.3.4",command="/...../validate-ssh" ssh-dss AAAAB3fdsfsdcMrhA7hKTu74FT
.............
HHGJShgjHGJHhGHJG=T/ZTFCFZN0xyy root@host


validate-ssh:

#!/bin/sh
case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\(*)
echo "Rejected"
;;
*\{*)
echo "Rejected"
;;
*\;*)
echo "Rejected"
;;
*\<*)
echo "Rejected"
;;
*\`*)
echo "Rejected"
;;
*\|*)
echo "Rejected"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac

10 Unix/Linux backup toolok vázlatos bemutatása

10.1 Dirvish

  • Lemezalapú backup-megoldás (disk-to-disk)
  • rsync-re épülő PERL implementáció
  • Szerver által vezérelt (PULL)
  • A legutolsó mentés óta nem változtatott fájlok esetén hardlinket használ

Központi konfigurációs állomány:

bank:
       /snapshot
image-default: %Y%m%d
log: gzip
index: gzip
exclude:
       /etc/mtab
       /i-home/*
       /mnt/*
       lost+found/
       .nfs*
       /proc
       /snapshot
       /sys
       /tmp
       /var/cache/apt/archives/*.deb
       /var/lock/
       /var/run/
       /var/tmp
Runall:
       celeborn        1:00
       legolas         1:40
       balrog          2:00
       gorbag          2:40
       salvador        3:00
expire-default: +7 days
expire-rule:
#       MIN HR    DOM MON       DOW  STRFTIME_FMT
       *   *     1-7 *         1    +3 months
#        *   *     1-7 *         1    +3 months
#        *   *     *   *         1    +3 months
#        *   *     1-7 1,4,7,10  1
#        *   10-20 *   *         *    +4 days
#       *   *     *   *         2-7  +15 days

Egy hoszthoz tartozó konfigurációs állomány:

client: hosztnév/IP cím
tree: /
xdev: 0
index: gzip


10.2 rSnapshot

  • Céljai:
    • a fájlok rsync-alapú mentésének megvalósítása
    • egyéb tetszőleges script futtatása (adatbázi-backup, stb)
  • Config:
#########################################
#           BACKUP INTERVALS            #
# Must be unique and in ascending order #
# i.e. hourly, daily, weekly, etc.      #
#########################################
# The interval names (hourly, daily, ...) are just names and have no influence
# on the length of the interval. The numbers set the number of snapshots to
# keep for each interval (hourly.0, hourly.1, ...).
# The length of the interval is set by the time between two executions of
# rsnapshot <interval name>, this is normally done via cron.
# Feel free to adapt the names, and the sample cron file under /etc/cron.d/rsnapshot
# to your needs. The only requirement is that the intervals must be listed
# in ascending order. To activate just uncomment the entries.
interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 6
....
exclude_file    /etc/rsnapshot.exclude
....
###############################
### BACKUP POINTS / SCRIPTS ###
###############################
# LOCALHOST
backup  /home/          localhost/
backup  /etc/           localhost/
backup  /root/          localhost/
backup  /var/           localhost/
# Remote
backup  backupuser@remotehost:/home    remotehost/
backup  backupuser@remotehost:/etc     remotehost/
backup  backupuser@remotehost:/root    remotehost/
backup  backupuser@remotehost:/var     remotehost/
#backup_script  /usr/local/bin/backup_rsnapshot_cvsroot.sh      rsnapshot.cvs.sourceforge.net/
  • Tárhelyfoglalás:

A tárhelyfoglalást egy mindennapi használatú szerver (svn, web, levelezés, adatbázis) mentése alapján vettem fel:

user@hoszt:/data/backup# du -h --summarize *
11G     daily.0
169M    daily.1
160M    daily.2
190M    daily.3
59M     daily.4
672K    daily.5
141M    hourly.0
151M    hourly.1
140M    hourly.2
150M    hourly.3
150M    hourly.4
149M    hourly.5

10.3 Amanda

  • Natív kliensek segítségével különböző operációs rendszereket támogat
    • Pl. Windows esetén Cygwin, Samba vagy egy natív kliens segítségével végezhető el a mentés.
  • A mentést különböző adattárolókra képes elvégezni, mely adattárolók használatához szabványos felületet kínál.
    • Disk-to-disk, disk-to-tape, disk-to-cloud (Pl Amazoon S3) mentési lehetőségeket kínál
  • A kliensek fele is egységes, a mentendő adat típusától független felületet biztosít. (Application API)
    • Az API felhasználásával lehetőség van tetszőleges alkalmazáshoz biztonsági mentést végrehajtó klienst készíteni.
    • Absztrakt megfogalmazása a mentendő adatoknak:
      • User Object: a mentendő adat
      • Collection: Ezen adatok halmaza, ami egyszeri alkalommal mentésre kerül.
    • Példák:
      • Adatbázis: User Object: table, Collection: MySQL dump
      • Fájlrendszer: User object: fájl, Collection: teljes dump
      • svn, MS Exchange, Lotus Domino,

10.4 Bacula

  • Szintén kliens-szerver architechtúrájú, biztonsági mentés készítésére alkalmas alkalmazásgyűjtemény.
  • A következő alkalmazások gyűjteményéből áll:
    • Director: a központi, biztonsági mentést és visszaállítást végző szolgáltatás (daemon)
    • Console: ezen az alkalmazáson keresztül férhetünk hozzá a Director daemnonhoz.
    • File: a kliens alkalmazás, mely a mentendő hoszton fut. Közvetlenül a Director vezérli a mentés végrehajtása céljából.
    • Storage: az adattárolást megvalósító gépen futó alkalmazás, mely a Directorral áll kapcsolatban. Elvégzi az adatok fizika tárolóra kiírását és visszaállítását.
    • Catalog: A mentett adatokról tárolt metainformációkat tartalmazó adatbázis. Segítségével gyorsan és egyszerűen találhatóak meg és állíthatóak vissza a keresett fájlok.
    • Monitor: a rendszer aktuális állapotának megfigyelésére alkalmas program. Nyomon követketőa Director, a fájl- és storagedaemonok tevékenysége

11 Irodalom

Személyes eszközök