870 likes | 1.01k Views
BackupPC Aco Dmitrović Ožujak 2011. Kompresija i deduplikacija Kako brisati backup Backup MySQL baze Rješavanje problema Autentikacija LDAP ili AD? iSCSI. Sadržaj. Zašto backup? MTBF i MTTF Istraživanje Googlea BackupPC Instalacija Konfiguracija Web sučelje Windows klijenti
E N D
BackupPC Aco Dmitrović Ožujak 2011.
Kompresija i deduplikacija Kako brisati backup Backup MySQL baze Rješavanje problema Autentikacija LDAP ili AD? iSCSI Sadržaj • Zašto backup? • MTBF i MTTF • Istraživanje Googlea • BackupPC • Instalacija • Konfiguracija • Web sučelje • Windows klijenti • Linux klijenti
Zašto backup? • Dokumenti u elektroničkom obliku • Zakonska obaveza arhiviranja građe • Diskovi se kvare • MTTF – mean time to failure • MTBF – mean time between failures • Vrijeme u kojem će se pola diskova pokvariti!? • RAID smanjuje rizik • rijetko se istovremeno pokvare dva diska • Rizici – kvarovi, bugovi, virusi, greške korisnika...
MTBF • Članak u eWeek-u: • SMART tehnologija ne omogućuje pouzdano predviđanje kvara • Diskovi enterprise kvalitete deklarirani na 1,000,000 sati rada (114 god!) • Godišnje bi po tome trebalo zamijeniti 1% diskova • U stvarnosti između 2 i 4%, pa sve do 13%
Google • Failure Trends in a Large Disk Drive Population • FAST 2007 • Proizvođači ubrzanim testom simuliraju opterećenje • Google razvio System Health infrastrukturu • Daemon na svakom serveru prikuplja podatke • Temp., SMART err., opterećenje, konfiguracija • > 100.000 HD, dec 2005 - aug 2006 • Korelacija s bazom popravaka • Stres test diskova prije produkcije • Proizvođač testira vraćene diskove, dio proglasi ispravnima!
Zaključak • ”Nije pitanje hoće li se disk pokvariti, pitanje je kada će se pokvariti.” • Smanjivanje rizika • RAID • više kopija podataka • na razičitim lokacijama
Zašto BackupPC? • Slobodni softver, otvoren kod, dokumentiran • http://backuppc.sourceforge.net/ • Upute za instalaciju na Debianu • http://www.debianhelp.co.uk/backuppc.htm • Wiki • http://wiki.zmanda.com/index.php/Backuppc • http://backuppc.wiki.sourceforge.net/ • Jednostavna instalacija i konfiguracija
Prednosti • Mrežni backup Unix/Linux, Windows, MacOSX klijenata • Na klijentima ne treba instalirati agente • Inteligentno korištenje diskovnog prostora • Kompresija, deduplikacija • Scheduling prilagođen pojedinim klijentima • Prijenos podataka: samba, rsync, ftp, ssh • Web sučelje za admina i korisnike • korisnici sami brinu o svojim podacima • Restore pojedinih datoteka ili arhive (.tar, .gz) • Šalje korisniku obavijesti e-mailom • Bare metal recovery, uz pomoć Knoppixa
Kako radi? • Default: backup cijelog sistema (C$, /) • Exclude (/proc, /tmp...) • Globalna + mini konfiguracija za hosta • Xfer method • Unix: • tar/rsync preko ssh • Windows: • smb • rsync preko ssh (cygwin) • Mac OS X • tar, xtar, rsync? • FTP
Briga za klijente • Pinga klijente • Nastoji obaviti posao izvan radnog vremena • Ako se ne klijent odaziva, backup će se obaviti čim se pojavi na mreži
Instalacija na OpenVZ virtualni server
Instalacija - VM • Debian Lenny + kernel s podrškom za openvz • Koji kernel je instaliran? dpkg -l | grep linux apt-cache search openvz • Nađite istu verziju kernela, samo s podrškom za openvz, na pr. apt-get install linux-image-2.6.26-2-openvz-amd64 • Kernel može imati oznaku x86_64, 686 ili i386
Template • Alati: • apt-get install vzctl vzprocps vzquota • Predložak za VM cd /vz/template/cache wget http://download.openvz.org/template/precreated/\ contrib/debian-5.0-amd64-minimal.tar.gz
sysctl # packet forwarding enabled and proxy arp disabled net.ipv4.conf.default.forwarding=1 net.ipv4.conf.default.proxy_arp=0 net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=1 # Enables the magic-sysrq key kernel.sysrq=1 # we do not want all our interfaces to send redirects net.ipv4.conf.default.send_redirects=1 net.ipv4.conf.all.send_redirects=0 sysctl -p
Virtualka vzctl create 100 –-ostemplate debian-5.0-amd64-minimal -–config basic.vps # Ako ne nalazi basic konfiguraciju, provjerite datoteke u /etc/vz/conf # umjesto basic.vps, vps.basic ili samo basic vzctl set 100 –-ipadd 192.168.x.x –-save vzctl set 100 -–nameserver 161.53.x.x –-save vzctl set 100 –-hostname backuppc -–save vzctl start 100 vzlist vzctl enter 100
Instalacija... • /etc/apt/sources.list deb http://ftp.carnet.hr/debian lenny main contrib non-free deb-src http://ftp.carnet.hr/debian lenny main contrib non-free deb http://security.debian.org lenny/updates main contrib non-free deb-src http://security.debian.org lenny/updates main contrib non-free
Priprema • # apt-get install debian-archive-keyring • # apt-get update • # apt-get upgrade • # apt-get install apache2-mpm-prefork • [...] • The following packages will be REMOVED: • apache2-mpm-worker • The following NEW packages will be installed: • apache2-mpm-prefork
perl moduli • apt-get install libxml-rss-feed-perl • apt-get install libarchive-zip-perl • apt-get install libfile-rsync-perl • apt-get install libfile-rsyncp-perl • perldoc Compress::Zlib • perldoc Archive::Zip • perldoc XML::RSS • perldoc File::RsyncP
Točno vrijeme • Za backup je potrebna sinhronizacija vremena • Provjerite je li instaliran i konfiguriran ntp • Provjerite vremensku zonu iz predloška dpkg-reconfigure tzdata
Instalacija • # aptitude install backuppc rsync par2 bzip2 • Instalacijska skripta pita za • Workgroup/Domain • Web server – apache2 • DHCP – ne • Zatim doda korisnika backuppc: BackupPC can be managed through its web interface: http://backuppc/backuppc/ For that purpose, a web user named 'backuppc' with 'kHsKlWIQ' as password has been created.
Redirekcija • Ako želimo URL http://backuppc • U /etc/apache2/conf.d/backuppc.conf, na kraju dodajte: RedirectMatch ^/$ http://backuppc/backuppc/ d • Provjerite #DocumentRoot /var/www/ DocumentRoot /usr/share/backuppc
Password za web sučelje • Promjena passworda za admina htpasswd /etc/backuppc/htpasswd backuppc • Dodavanje korisnika, kako bi mogli upravljati svojim backupom htpasswd /etc/backuppc/htpasswd pero • Korisnik vidi svoje podatke, admin sve
Konfiguracija • Globalne postavke u /etc/backuppc/config.pl $Conf{ServerHost} = 'backuppc.domena'; $Conf{MaxOldLogFiles} = '14'; $Conf{DfPath} = '/bin/df'; $Conf{DfCmd} = '$dfPath $topDir'; $Conf{DfMaxUsagePct} = '95'; $Conf{BackupPCUser} = 'backuppc';
Staze $Conf{TopDir} = '/var/lib/backuppc'; $Conf{ConfDir} = '/etc/backuppc'; $Conf{LogDir} = ''; $Conf{InstallDir} = '/usr/share/backuppc'; $Conf{CgiDir} = '/usr/share/backuppc/cgi-bin'; $Conf{ServerInitdPath} = '/etc/init.d/backuppc';
Config.pl • $Conf{WakeupSchedule}['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23']; • Minimalan razmak između punih backupa (7 dana) $Conf{FullPeriod} = '6.97'; • Minimalan razmak između inkrementalnih backupa (1 dan) $Conf{IncrPeriod} = '0.97'; $Conf{IncrKeepCnt} = '6'; • Koliko punih backupa čuvati (default 1) $Conf{FullKeepCnt} = ['1']; $Conf{FullKeepCntMin} = '1'; $Conf{FullAgeMax} = '90';
Složenija konfiguracija • Za početak je dobra podrazumijevana konfiguracija • Kasnije je možete prilagoditi, na pr.: • Exponential backup expiry • $Conf{FullKeepCnt} = [4, 2, 3]; • 2^n * $Conf{FullPeriod} • Eksponencijalno raste razmak između punih backupa • 1 2 4 8 16 32 ... tjedna • 4 puna backupa s razmakom od 1 tjedna • 2 s razmakom od 2 tjedna (prethodni mj.) • 3 s razmakom od 4 tjedna (3 mjesečna)
Godišnji backup • Zadatak: • Čuvati tjedni full backup za tekući mjesec • Mjesečni za tekuću godinu • godišnji za proteklih 10 godina
Inkrementalni backup $Conf{FullPeriod} = 7; $Conf{IncrPeriod} = 1; $Conf{IncrKeepCnt}= 6; $Conf{IncrLevels} = [1, 2, 3, 4, 5, 6]; • backup #0 (full, level 0) • backup #1 (incr, level 1) • backup #2 (incr, level 2) • backup #3 (incr, level 3) • backup #4 (incr, level 4) • backup #5 (incr, level 5) • backup #6 (incr, level 6)
Inkrementalni... $Conf{FullPeriod} = 7; $Conf{IncrPeriod} = 1; $Conf{IncrKeepCnt}= 6; $Conf{IncrLevels} = [1, 2, 3 ]; • backup #0 (full, level 0) • backup #1 (incr, level 1) • backup #2 (incr, level 2) • backup #3 (incr, level 3) • Poslije #3 inkrementalni se brišu, a novi inkrementalni sadrži razliku od zadnjeg punog
dump • BackupPC slijedi istu logiku kao dump • Level 0 – full backup • Level 1 – razlika • Level 2 – razlika od 1 • Itd. • http://linux.die.net/man/8/dump
hosts • Popis računala za backup • /etc/backuppc/hosts: host dhcp user moreUsers # example static IP host entry # farside 0 craig jill,jeff # example DHCP host entry # larson 1 bill hawkeye 0 luzer localhost 0 root
user • Korisnik u polju user dobija mailove • Treba dodati domenu u config.pl $Conf{EMailUserDestDomain} = '@mojadomena.hr'; • Korisnici u moreUsers ne dobijaju mailove • Svi imaju pristup web sučelju i backupu hosta
Pronalaženje hostova • Prvo se koristi DNS perl -e 'print(gethostbyname("myhost") ? "ok\n" : "not found\n");' • Zatim NetBios multicast nmblookup myhost • NetBios over TCP
DHCP • Da bi nalaženje hosta DNS-om radilo, DHCP treba prijavljivati hostove DNS-u:
Backup Windowsa • Prijenos podataka samba protokolom $Conf{XferMethod} = 'smb'; $Conf{SmbShareName} = [ 'Poslovno' ]; $Conf{SmbShareUserName} = 'backuppc'; $Conf{SmbSharePasswd} = '!*Arghh+%#?'; $Conf{SmbClientFullCmd} = '$smbClientPath \\\\$host\\$shareName $I_option -U $userName -E -d 1 -c tarmode\\ full -Tc$X_option - $fileList'; $Conf{SmbClientIncrCmd} = '$smbClientPath \\\\$host\\$shareName $I_option -U $userName -E -d 1 -c tarmode\\ full -TcN$X_option $timeStampFile - $fileList';
Konfiguracija hosta • Globalna konfiguracija u /etc/backuppc/config.pl • Za hostove kojima to ne odgovara /etc/backuppc/pc/<hostname>.pl
Backup Linuxa # Setting only matters if $Conf{XferMethod} = 'rsync'. $Conf{RsyncClientPath} = '/usr/bin/rsync'; #$Conf{RsyncClientCmd} = '$sshPath -q -x -l root $host $rsyncPath $argList+'; # necemo se ulogirati kao root, nego kao rbackup $Conf{RsyncClientCmd} = '$sshPath -q -x -l rbackup $host sudo $rsyncPath $argList+'; $Conf{RsyncClientRestoreCmd} = '$sshPath -q -x -l rbackup $host sudo $rsyncPath $argList+'; $Conf{RsyncShareName} = [ '/']; $Conf{RsyncdClientPort} = '873'; $Conf{RsyncdUserName} = 'rbackup'; $Conf{RsyncdPasswd} = '!*Arghh+%#?';
Rsync argumenti $Conf{RsyncArgs} = [ '--numeric-ids', '--perms', '--owner', '--group', '-D', '--links', '--hard-links', '--times', '--block-size=2048', '--recursive' ];
Rsync args... # Dodatni argumenti, na pr. --exclude/--include, # $Conf{RsyncArgs} = [ # # original arguments here # '-v', # '--exclude', '/proc', # '--exclude', '*.tmp', # ];