Backup

A Unix/Linux szerverek üzemeltetése wikiből

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

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

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:

  • a törölt fájlokat a mentésből is törölje le,
  • meghatározhatjuk, hogy mely fájlokat szükséges menteni és melyeket hagyja figyelmen kívül
  • 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)

10 A hálózaton keresztül történő mentéssel kapcsolatban felmerülő problémák

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

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

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

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

Példascript MySQL adatbázis mentésére:

#!/bin/sh
NOW=$(date +"%d-%m-%Y")
MUSER="MySQL-UserNAME" #root
MPASS="MySQL-SERVER-PASSWORD" # mypassword
MHOST="MySQL-SERVER-IP-ADDRESS" # server1
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"

DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
   FILE=mysql-$db.$NOW-$(date +"%T").gz
   $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
done

11.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,

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

12 Irodalom

Személyes eszközök