Backup

A Unix/Linux szerverek üzemeltetése wikiből
(Változatok közti eltérés)
1. sor: 1. sor:
== Backup fogalma, célja ==
+
== Biztonsági mentés fogalma, célja ==
   
* Biztonsági mentés a rendszer á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
* Védelmet jelent hardware és software hibák ellen
+
* A biztonsági mentés alapvető védelmet jelent bizonyos hardware és software hibá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 szemben)!
* Célja a tárolás, naplózás és helyreállítás
+
* Célja az adatok tárolása, naplózása és helyreállítása
   
== Backup cél média ==
+
== Mentés cél médium ==
* HDD
+
  +
Lehetséges tároló médium
  +
  +
* HDD (Lokális vagy távoli kiszolgálóban)
 
* CD/DVD
 
* CD/DVD
 
* Mágnesszalag
 
* Mágnesszalag
13. sor: 13. sor:
 
 
 
== Backup megoldások ==
 
== Backup megoldások ==
* Full
+
* '''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
+
* '''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ó.
* Diff
+
** '''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.
* ...
+
** '''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 ( todays ) daily backup files was bad, for any reason
+
** than you dont have backup for "today"
+
* "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."
** all subsequent ( tommorrow, next day ) backups are basically unsusable
+
+
 
== Backup policy ==
 
== Backup policy ==
* Szervezeti belső szabályzat
+
* 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.
* Milyen gyakran, azokat meddig tároljuk.
+
* 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.
* Jó, ha automatizált.
+
* Biztonsági szempontből célszerű fizikailag, stb elkülönített helyen
+
* A backup policy egy szervezeten belüli belső szabályzat, mely speciálisan a nyújtott szolgáltatáshoz van hangolva.
+
* 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)
== Backup célok ==
+
* A mentés végrehajtás célszerűen automatizált, emberi beavatkozást ne igényeljen
* Fájl alapú
+
* Biztonsági szempontból célszerű fizikailag elkülönített helyen tárolni a mentett adatokat.
* Fájlrendszer
+
* Verziózott fájlrendszer
+
== A biztonsági mentés teljesítményének mérése, mérőszámai ==
* Adatbázis backup
+
* Egyszeri mentés lefutási ideje
* ...
+
* Visszaállítási ideje (Nem kritikus, ha ritkán van rá szükség)
 
== Backup teljesítmény mérése, mérőszámok ==
 
* Egyszeri mentés lefutási idő
 
* Visszaállítási idő (Nem annyira kritikus)
 
 
* Visszaállítható időtáv.
 
* Visszaállítható időtáv.
* Elfoglalt tárhely aránya
+
* Visszaállítható verziók száma
  +
* Elfoglalt tárhely aránya az adatmennyiséghez képest
   
  +
== Mentési szintek ==
  +
* Teljes lemez mentése (bájt szinten) - alacsony szintű backup
  +
* Teljes fájlrendszer mentése
  +
** Verziózott fájlrendszer használata
  +
* Adott fájlok, mappák mentése.
  +
* Alkalmazásspecifikus mentés - magas szintű backup
  +
** Adatbázis mentés
  +
 
== Felhasználható eszközök ==
 
== Felhasználható eszközök ==
* Bármilyen fájl alapú másoló eszköz (tar, dd, cp)
+
* dd - lemezkép készítése, teljes lemez mentéséhez alkalmas program
* RSync over ssh
+
* Bármilyen fájl alapú másoló, tömörítő eszköz (cp, tar, scp, ...) egyszerű fájlok, mappák mentéséhez.
* Komplett backup toolok
+
* rSync inkrementális másoláshoz
  +
* 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, plussz szolgáltatást adnak a backupoláshoz
+
** Automatikát és egyéb plusz szolgáltatást adnak az elemi eszközökhöz.
 
 
== Unix/Linux által nyújtott technikák ==
+
== rSync és a felmerülő problémák ==
* Inkrementális mentés támogatottsága hard/symlinkek szegítségével
+
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.
+
== Unix/Linux backup toolok ==
+
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:
* rSnapshot
+
* a mentendő gép (kliens) kapcsolódik a backup szerverhez és automatikusan küldi el az adatokat, szinkronizál a szerverrel, vagy
* DirVish
+
* 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:
  +
* csak adott hosztról,
  +
* 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
 
 
  +
== Unix/Linux backup toolok vázlatos bemutatása ==
  +
  +
=== rSnapshot ===
  +
* Céljai:
  +
** rSync-alapú fájl mentés 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
  +
  +
  +
=== DirVish ===
  +
 
 
 
 
 
== Irodalom ==
 
== Irodalom ==
* http://en.wikipedia.org/wiki/Backup
+
* http://www.biztostu.hu
 
* SzIRT tantárgy
 
* SzIRT tantárgy
 
* http://www.linux-backup.net/Example/
 
* http://www.linux-backup.net/Example/
 
* http://www.bacula.org/en/
 
* http://www.bacula.org/en/
* http://en.wikipedia.org/wiki/Rsync
+
* http://rsync.samba.org/
 
* http://www.nongnu.org/rdiff-backup/features.html
 
* http://www.nongnu.org/rdiff-backup/features.html

A lap 2008. december 9., 00:38-kori változata

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 hardware és software hibák ellen
    • Emberi hibák ellen is véd (pl. a RAID-el szemben)!
  • Célja az adatok tárolása, naplózása és helyreállítása

2 Mentés cél médium

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, azonban lassabban, mint az differenciális mentés, é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 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.
  • 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.
  • A backup policy egy szervezeten belüli belső szabályzat, mely speciálisan a nyújtott szolgáltatáshoz van hangolva.
  • 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)
  • A mentés végrehajtás célszerűen automatizált, emberi beavatkozást ne igényeljen
  • 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ási ideje (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ájt szinten) - alacsony szintű backup
  • Teljes fájlrendszer mentése
    • Verziózott fájlrendszer használata
  • Adott fájlok, mappák mentése.
  • Alkalmazásspecifikus mentés - magas szintű backup
    • Adatbázis mentés

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

8 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, 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:

  • csak adott hosztról,
  • 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

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

9.1 rSnapshot

  • Céljai:
    • rSync-alapú fájl mentés 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


9.2 DirVish

10 Irodalom

Személyes eszközök