BackupPC Aco Dmitrović Ožujak 2011.

87 Slides882.00 KB

BackupPC Aco Dmitrović Ožujak 2011.

Sadržaj Zašto backup? MTBF i MTTF Istraživanje Googlea BackupPC Instalacija Konfiguracija Windows klijenti Linux klijenti Kako brisati backup Backup MySQL baze Rješavanje problema Autentikacija Web sučelje Kompresija i deduplikacija LDAP ili AD? iSCSI

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

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

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

Google 6

Google. 7

Temperatura 8

Temp/starost 9

SMART 10

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 11

Zašto BackupPC? Slobodni softver, otvoren kod, dokumentiran Upute za instalaciju na Debianu http://backuppc.sourceforge.net/ http://www.debianhelp.co.uk/backuppc.htm Wiki http://wiki.zmanda.com/index.php/Backuppc http://backuppc.wiki.sourceforge.net/ Jednostavna instalacija i konfiguracija 12

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 13

14

Kako radi? Default: backup cijelog sistema (C , /) Exclude (/proc, /tmp.) Globalna mini konfiguracija za hosta Xfer method Unix: Windows: smb rsync preko ssh (cygwin) Mac OS X tar/rsync preko ssh FTP tar, xtar, rsync? 15

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 16

Instalacija na OpenVZ virtualni server 17

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 18

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 19

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 20

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 21

Instalacija. /etc/apt/sources.list deb http://ftp.carnet.hr/debian lenny main contrib nonfree 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 22

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 23

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 24

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 25

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

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 27

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 28

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'; 29

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'; 30

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'; 31

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

Godišnji backup Zadatak: Čuvati tjedni full backup za tekući mjesec Mjesečni za tekuću godinu godišnji za proteklih 10 godina 33

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

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 35

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 36

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 hawkeye localhost bill 0 0 luzer root 37

Web sučelje 38

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 39

CGI 40

41

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 42

DHCP Da bi nalaženje hosta DNS-om radilo, DHCP treba prijavljivati hostove DNS-u: 43

Win klijent 44

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'; 45

AD 46

Konfiguracija hosta Globalna konfiguracija u /etc/backuppc/config.pl Za hostove kojima to ne odgovara /etc/backuppc/pc/ hostname .pl 47

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 %#?'; 48

Rsync argumenti Conf{RsyncArgs} [ '--numeric-ids', '--perms', '--owner', '--group', '-D', '--links', '--hard-links', '--times', '--block-size 2048', '--recursive' ]; 49

Rsync args. # Dodatni argumenti, na pr. --exclude/--include, # Conf{RsyncArgs} [ # # original arguments here # '-v', # '--exclude', '/proc', # '--exclude', '*.tmp', # ]; 50

rsyncd ili ssh/rsync? Alternative za Linux klijente Na klijentu radi rsyncd Backuppc - rsync s passwordom Backuppc se logira na klijenta koristeći ssh Pokrene rsync klijenta 51

ssh Na backuppc serveru Generiramo ssh ključ, distribuiramo ga U*x klijentima (no passphrase) su - backuppc ssh-keygen ssh-copy-id -p [email protected] config.pl Conf{RsyncdUserName} 'rbackup'; Conf{RsyncdPasswd} ''; # ne treba Conf{RsyncdAuthRequired} '0'; 52

sudoers Na Linux klijentu: adduser rbackup visudo rbackup ALL NOPASSWD: /usr/bin/rsync 53

Operacije Kod starta čita konfiguraciju – config.pl I prilikom buđenja, ako ima promjena Conf{WakeupSchedule} 4 koraka Zahtjevi u background command queue BackupPC dump proces za pojedine klijente BackupPC link kreće ako je backup ispravan Zastarjeli backupi u /var/lib/backuppc/trash Obavlja deduplikaciju BackupPC trashClean i BackupPC nightly Briše trash i datoteke s jednim hard linkom 54

Datoteke BackupPC dump sprema datoteke u ./pool Komprimirane datoteke su u ./cpool Za svakog klijenta direktorij ./pc/ hostname Za svaki backup novi direktorij ./pc/ hostname / rbr hard link na datoteke u ./cpool Backup mora biti na istom file systemu 55

Kompresija Compress::Zlib modul Conf{CompressLevel} 3 0 - bez kompresije 1 - štedi CPU, nešto lošija kompresija 3 - preporučena vrijednost 5 - 20% CPU, 2-3% bolja kompresija 9 - opterećuje CPU, malo bolja kompresija 56

Deduplikacija Više klijenata čuva istu datoteku Dodaje se samo hard link Čak i ako je naziv datoteke različit Ime datoteke je pokazivač na inode Lokacija, vlasnik, vremena (ctime, mtime, atime) Link reference counter – broj hard linkova Počinje s 1 raste s dodavanjem, pada s brisanjem linkova Datoteka se briše samo ako je brojač na 1 57

inode, hard links, filename find /var/lib/backuppc/pc -printf "%i %n %p\n" sort /tmp/inode less /tmp/inode [.] 14928011 8 ./hawkeye/0/fHGI/fFascinantno.pps 14928011 8 ./nb-soky/1/fPoslovni/fFascinantno.pps 14928011 8 ./nb-soky/2/fPoslovni/fFascinantno.pps 14928011 8 ./nb-soky/3/fPoslovni/fFascinantno.pps 14928011 8 ./nb-soky/4/fPoslovni/fFascinantno.pps 14928011 8 ./nb-soky/5/fPoslovni/fFascinantno.pps 14928011 8 ./nb-soky/6/fPoslovni/fFascinantno.pps 58

Deduplikacija. Kako BackupPC otkriva identične datoteke? Ime datoteke u poolu je MD5 digest veličine i sadržaja Ne uzima se cijeli sadržaj, veličina i odrezak Više datoteka - isti hash U tom slučaju obavi se detaljna provjera Rješenje zasnovano na eksperimentiranju Moguće izmjene u konfiguraciji, ali Ako već imate pool, gubite deduplikaciju Dok se ne izrotiraju stari backupi 59

Umirovljenje klijenta Conf{BackupsDisable} 0; 0 – backup omogućen 1 – auto backup onemogućen, moguć ručno pokrenut na web sučelju 2 – backup posve onemogućen Podaci i dalje dostupni 60

Brisanje klijenta Brisanje hosta iz /etc/backuppc/hosts Brisanje podataka: rm -rf /var/lib/backuppc/pc/hostname Preko noći će se pobrisati datoteke u .cpool 61

Brisanje starih backupa? Što ako želimo selektivno brisati backupe? Na pr. da se oslobodi prostor Skripta Matthiasa Meyera Usage: 0 [-c client [-d backupnumber -b before data -r [-f]] [-l]] [-n] Spremimo je u /bin/backup del.sh chown backuppc:backuppc /bin/backup del.sh backup del.sh -c hawkeye -d 0 62

Premještanje poola Ako koristite LVM ili RAID mogu se dodavati diskovi U protivnom, treba pri kopiranju sačuvati odnos hard linkova i komprimiranog backupa Kopiramo raw disk na razini bloka - dd Aplikacije koje znaju s hard linkovima cp -a rsync -H 63

Skripta BackupPC od ver. 3 sadrži skriptu BackupPC tarPCCopy su backuppc cd newTopdir mkdir pc cd pc INSTALLDIR /bin/BackupPC tarPCCopy TOPDIR /pc tar xvPf - 64

Najčešći problemi 65

No ping DNS resolving? nslookup (not found) ipconfig /release, ipconfig /renew I dalje ne prolazi ping Obrnuto, s hosta na backuppc prolazi Je li spojen na vlastiti router? Firewall? 66

PC s config Ne čita konfiguraciju za hosta chown backuppc:www-data /etc/backuppc/pc/ hostname .pl 67

Bad network name /usr/bin/smbclient \\\\hasano\\Poslovni -U backuppc Enter backuppc's password: Anonymous login successful Domain [IGI] OS [Windows 5.1] Server [Windows 2000 LAN Manager] tree connect failed: NT STATUS BAD NETWORK NAME 68

Bad network name. Bad network name odnosi se na samba share Dotični host dijeli drugu mapu Upišite u konfiguraciju hosta (hostname.pl) Conf{SmbShareName} 'Posao'; config.pl – javio bi istu grešku za druge hostove Nakon toga: 69

BackupPC server Visok load, procesi stanu Smanjite broj simultanih backupa Conf{MaxBackups} Conf{MaxUserBackups} Conf{MaxBackups} '4'; Conf{MaxUserBackups} '4'; Provjerite resurse dodijeljene virtualki cat /proc/user beancounter Zadnji stupac mora biti 0 Kritičan othersockbuf 70

failcnt 71

vztop 72

Disk Ako je disk usko grlo isključite atime u /etc/mtab /dev/cciss/c0d0p1 / ext3 rw,noatime,errors remount-ro 0 0 Journaling Preselite journal na drugi disk ext4 umjesto ext3, po mogućnosti 64-bit 73

BackupPC za napredne 74

mod perl Ubrzanje 15 puta!? Apache se izvršava kao user backuppc Perl skripte više ne trebaju setuid Upute u dokumentaciji, Mod perl Setup Ako je apache kompajliran s podrškom za mod perl: apache2 -l grep mod perl 75

Backup MySQL baze Ne može ”na živo” Skripta koja se izvrši prije backupa http://sourceforge.net/projects/automysqlbackup/ scripta za dnevni, tjedni i mjesečni backup MySQL baza mysqldumpom. Svojstva Backup više baza podataka Jedinstvena backup datoteka ili odvojena za svaku bazu Kompresija Backup udaljenih servera Slanje logova e-mailom 76

Autentikacija LDAP – [email protected] ili AD? Apache 2.2 mod authnz ldap Debian 5.0 apt-get install libapache-authznetldap-perl a2enmod authnz ldap AAI@EduHr koristi Radius kao posrednika apt-get install libapache2-mod-auth-radius 77

Noviji modul libapache2 mod auth xradius Paket u repozitoriju Srca: http://tinyurl.com/3jgc6w4 dpkg -i libapache2-mod-auth-xradius 0.4.61 amd64.deb Upute: http://www.outoforder.cc/projects/apache/mod auth xradius/ 78

LDAP server Prijava klijenta na Radius/LDAP serveru /etc/freeradius/clients.conf client 161.53.x.y { secret pssssttt shortname backuppc } /etc/intit.d/freeradius reload 79

Konfiguracija za radius U /etc/backuppc/apache.conf ili .htaccess # Xradius modul AuthType Basic AuthName "Predstavite se svojim AAI@EduHr identitetom" AuthXRadiusAddServer "161.53.x.x:1812" "pssssttt" AuthXRadiusTimeout 3 AuthXRadiusRetries 3 require valid-user 80

Backup na iSCSI storage 81

iSCSI Network storage protocol over TCP Encapsulira SCSI naredbe u TCP pakete Zaseban 1 GB ethernet port Jeftinije od FC SAN-a Skupi 10 Gb preklopnici 82

iSCSI Host vidi storage LUN kao lokalni disk Initiator - host Target – storage Discovery: Internet Storage Name Service (iSNS) SendTargets SLP - Service Location protocol (RFC 4018) Static – statička IP adresa targeta Host vidi storage kao /dev/sdx 83

84

iSCSI na Debianu apt-get install open-iscsi /etc/iscsi/iscsid.conf node.startup automatic node.session.auth.username MY-ISCSI-USER node.session.auth.password MY-ISCSI-PASSWORD discovery.sendtargets.auth.username MY-ISCSI-USER discovery.sendtargets.auth.password MY-ISCSI-PASSWORD [.] /etc/init.d/open-iscsi start 85

Target discovery Nađimo storage iscsiadm -m discovery -t sendtargets -p 192.168.x.x ili iscsiadm --mode discovery --type sendtargets --portal 192.168.x.x Vrati record ID, koji treba za login iscsiadm --mode node --targetname iqn.2001-05.com.doe:test --portal 192.168.x.x:3260 –login /etc/init.d/open-iscsi restart 86

iSCSI Pronađi SCSI uređaj tail -f /var/log/messages fdisk /dev/sdd mkfs.ext3 /dev/sdd1 Mount direktorij mkdir /iscsi mount /dev/sdd1 /iscsi Podesi /etc/iscsi/iscsi.conf i /etc/mtab 87

Back to top button