Backup
Írta: Szatmári Zoltán.
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 hosszú 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 lassúbb é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.
Megjegyzendő, hogy a szóhasználat nem egységes; a "differenciális" és az "inkrementális" mentések fogalmát lényegében felcserélve is használják. A Wikipédia szerint például a differenciális mentés az utolsó teljes mentéshez képesti változásokat menti, és az inkrementális mentés az, ami a legutóbbi mentéshez képesti különbségeket. Ha mentésekről írunk, célszerű tisztázni, mi milyen értelemben használjuk ezeket a szavakat.
Érdemes egyébként a Wikipédia Backup-szócikk vonatkozó részét is megnézni, mert az itt felsorolt fő csapásirányokon kívül vannak mások is.
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. (Ebbe törvényi előírások is beleszólhatnak, például minősített vagy pénzügyi adatok esetében.)
- A mentés végrehajtása célszerű, ha automatizá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ázis-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
- http://www.biztostu.hu
- Számítógépes infrastruktúra rendszertervezése című tantárgy (Dr. Pataricza András - BME-MIT)
- Informatikai infrastruktúra szolgáltatásbiztonsága című tantárgy (dr. Majzik István - BME-MIT)
- http://www.linux-backup.net/Example/
- http://www.bacula.org/en/
- http://rsync.samba.org/
- http://wiki.zmanda.com/index.php/Main_Page
- http://www.dirvish.org/
- http://www.rsnapshot.org/
- http://www.cyberciti.biz/faq/linux-rsnapshot-backup-howto/