Backup

A Unix/Linux szerverek üzemeltetése wikiből
(Változatok közti eltérés)
a (minimális olvasószerkesztés, nincs kész)
 
(egy szerkesztő 16 közbeeső változata nincs mutatva)
1. sor: 1. sor:
  +
Írta: Szatmári Zoltán.
  +
 
== Biztonsági mentés fogalma, célja ==
 
== 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 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 hardware és software hibák ellen
+
* 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 szemben)!
+
** 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ása
+
* Célja az adatok tárolása, naplózása és helyreállítás lehetőségének biztosítása
   
== Mentés cél médium ==
+
== A mentés célmédiuma ==
   
Lehetséges tároló médium
+
Lehetséges tárolómédium
   
 
* HDD (Lokális vagy távoli kiszolgálóban)
 
* HDD (Lokális vagy távoli kiszolgálóban)
16. sor: 18. sor:
 
 
 
== Backup megoldások ==
 
== 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.
+
* '''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ó.
 
* '''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, azonban lassabban, mint az differenciális mentés, és a tárigénye is nagyobb.
+
** '''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.
 
** '''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."
+
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 [https://en.wikipedia.org/wiki/Differential_backup Wikipédia szerint] például a differenciális mentés az utolsó ''teljes'' mentéshez képesti változásokat menti, és az [https://en.wikipedia.org/wiki/Incremental_backup 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 [https://en.wikipedia.org/wiki/Backup#Backup_methods 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.
   
  +
== A mentés végrehajtása ==
   
== Backup policy ==
 
 
* 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.
 
* 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 a problémát okoz, hogy ha a mentés végzése közben a rendszert nem állíthatjuk le, akkor a mentés közben változhat a mentett adatbázis tartalma, ami beláthatatlan inkonzisztencia problémákhoz 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 utóléri az on-line működést.
+
* 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, mely speciálisan a nyújtott szolgáltatáshoz van hangolva.
+
* A backup policy egy szervezeten belüli belső szabályzat, melyet speciálisan a nyújtott szolgáltatáshoz kell hangolni.
* Leírja, hogy biztonsági mentést milyen gyakran, milyen típusút kell végezni és az elkészült mentéseket mennyi időn keresztül 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)
+
* Leírja:
* A mentés végrehajtás célszerűen automatizált, emberi beavatkozást ne igényeljen
+
** 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.
 
* Biztonsági szempontból célszerű fizikailag elkülönített helyen tárolni a mentett adatokat.
   
 
== A biztonsági mentés teljesítményének mérése, mérőszámai ==
 
== A biztonsági mentés teljesítményének mérése, mérőszámai ==
 
* Egyszeri mentés lefutási ideje
 
* Egyszeri mentés lefutási ideje
* Visszaállítási ideje (Nem kritikus, ha ritkán van rá szükség)
+
* 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ó időtáv
 
* Visszaállítható verziók száma
 
* Visszaállítható verziók száma
 
* Elfoglalt tárhely aránya az adatmennyiséghez képest
 
* Elfoglalt tárhely aránya az adatmennyiséghez képest
   
 
== Mentési szintek ==
 
== Mentési szintek ==
* Teljes lemez mentése (bájt szinten) - alacsony szintű backup
+
* Teljes lemez mentése (bájtszinten) - alacsony szintű backup
 
* Teljes fájlrendszer mentése
 
* Teljes fájlrendszer mentése
 
** Verziózott fájlrendszer használata
 
** Verziózott fájlrendszer használata
 
* Adott fájlok, mappák mentése.
 
* Adott fájlok, mappák mentése.
* Alkalmazásspecifikus mentés - magas szintű backup
+
* Alkalmazás-specifikus mentés - magas szintű backup
** Adatbázis mentés
+
** Adatbázismenté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.
  +
 
== Felhasználható eszközök ==
 
== Felhasználható eszközök ==
 
* dd - lemezkép készítése, teljes lemez mentéséhez alkalmas program
 
* 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.
 
* 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
+
* rsync inkrementális másoláshoz
 
* Komplett backup toolok
 
* Komplett backup toolok
 
** Mögöttük gyakorlatilag az elemi eszközök helyezkednek el
 
** 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.
 
** Automatikát és egyéb plusz szolgáltatást adnak az elemi eszközökhöz.
 
 
== rSync és a felmerülő problémák ==
+
== 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, 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.
+
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)
  +
  +
== 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 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 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.
 
* 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, mely 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. Ezt megelőzendő korlátozásokat kell tenni a jelszó nélküli bejelentkezésre:
+
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,
+
* csak adott hosztról lehessen bejelentkezni,
 
* csak adott parancs futtatása engedélyezett.
 
* csak adott parancs futtatása engedélyezett.
   
106. sor: 108. sor:
 
;;
 
;;
 
esac
 
esac
+
 
== Unix/Linux backup toolok vázlatos bemutatása ==
 
== Unix/Linux backup toolok vázlatos bemutatása ==
  +
  +
=== 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
   
 
=== rSnapshot ===
 
=== rSnapshot ===
 
* Céljai:
 
* Céljai:
** rSync-alapú fájl mentés megvalósítása
+
** a fájlok rsync-alapú mentésének megvalósítása
** egyéb tetszőleges script futtatása (adatbázi backup, stb)
+
** egyéb tetszőleges script futtatása (adatbázis-backup, stb)
   
 
* Config:
 
* Config:
121. sor: 179. sor:
 
# i.e. hourly, daily, weekly, etc. #
 
# i.e. hourly, daily, weekly, etc. #
 
#########################################
 
#########################################
+
 
# The interval names (hourly, daily, ...) are just names and have no influence
 
# 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
 
# on the length of the interval. The numbers set the number of snapshots to
130. sor: 188. sor:
 
# to your needs. The only requirement is that the intervals must be listed
 
# to your needs. The only requirement is that the intervals must be listed
 
# in ascending order. To activate just uncomment the entries.
 
# in ascending order. To activate just uncomment the entries.
+
 
interval hourly 6
 
interval hourly 6
 
interval daily 7
 
interval daily 7
 
interval weekly 4
 
interval weekly 4
 
interval monthly 6
 
interval monthly 6
+
 
....
 
....
+
 
exclude_file /etc/rsnapshot.exclude
 
exclude_file /etc/rsnapshot.exclude
+
 
....
 
....
+
 
###############################
 
###############################
 
### BACKUP POINTS / SCRIPTS ###
 
### BACKUP POINTS / SCRIPTS ###
 
###############################
 
###############################
+
 
# LOCALHOST
 
# LOCALHOST
 
backup /home/ localhost/
 
backup /home/ localhost/
151. sor: 209. sor:
 
backup /root/ localhost/
 
backup /root/ localhost/
 
backup /var/ localhost/
 
backup /var/ localhost/
+
 
# Remote
 
# Remote
 
backup backupuser@remotehost:/home remotehost/
 
backup backupuser@remotehost:/home remotehost/
157. sor: 215. sor:
 
backup backupuser@remotehost:/root remotehost/
 
backup backupuser@remotehost:/root remotehost/
 
backup backupuser@remotehost:/var remotehost/
 
backup backupuser@remotehost:/var remotehost/
+
 
#backup_script /usr/local/bin/backup_rsnapshot_cvsroot.sh rsnapshot.cvs.sourceforge.net/
 
#backup_script /usr/local/bin/backup_rsnapshot_cvsroot.sh rsnapshot.cvs.sourceforge.net/
  +
 
* Tárhelyfoglalás:
 
* Tárhelyfoglalás:
   
A tárhelyfoglalást egy mindennapi használatú szerver (SVN, Web, Levelezés, Adatbázis) mentése alapján vettem fel:
+
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 *
 
user@hoszt:/data/backup# du -h --summarize *
177. sor: 236. sor:
 
149M hourly.5
 
149M hourly.5
   
  +
Példascript MySQL adatbázis mentésére:
   
=== DirVish ===
+
#!/bin/sh
+
NOW=$(date +"%d-%m-%Y")
* TODO
+
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
   
 
=== Amanda ===
 
=== Amanda ===
   
* TODO
+
* 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,
 
=== Bacula ===
 
=== Bacula ===
   
* TODO
+
* 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
 
 
 
== Irodalom ==
 
== Irodalom ==
 
* http://www.biztostu.hu
 
* http://www.biztostu.hu
* SzIRT tantárgy
+
* 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.linux-backup.net/Example/
 
* http://www.bacula.org/en/
 
* http://www.bacula.org/en/
 
* http://rsync.samba.org/
 
* http://rsync.samba.org/
* http://www.nongnu.org/rdiff-backup/features.html
+
* 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/

A lap jelenlegi, 2021. május 6., 08:31-kori változata

Írta: Szatmári Zoltán.

Tartalomjegyzék

[szerkesztés] 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

[szerkesztés] 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

[szerkesztés] 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.

[szerkesztés] 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.

[szerkesztés] 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

[szerkesztés] 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

[szerkeszté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.

[szerkeszté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.

[szerkesztés] 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)

[szerkesztés] 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

[szerkesztés] 11 Unix/Linux backup toolok vázlatos bemutatása

[szerkesztés] 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

[szerkesztés] 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

[szerkesztés] 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,

[szerkesztés] 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

[szerkesztés] 12 Irodalom

Személyes eszközök