Backup PC Aco Dmitrovi Oujak 2011 Sadraj Zato
Backup. PC Aco Dmitrović Ožujak 2011.
Sadržaj Zašto backup? MTBF i MTTF Istraživanje Googlea Backup. PC Instalacija Konfiguracija Web sučelje Windows klijenti Linux klijenti Kako brisati backup Backup My. SQL baze Rješavanje problema Autentikacija Kompresija i deduplikacija LDAP ili AD? i. SCSI
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 e. Week-u: SMART tehnologija ne omogućuje pouzdano predviđanje kvara Diskovi enterprise kvalitete deklarirani na 1, 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 5 ispravnima!
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 Backup. PC? 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, Mac. OSX 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 Open. VZ 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-amd 64 Kernel može imati oznaku x 86_64, 686 ili i 386 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 -amd 64 -minimal. tar. gz 19
sysctl # packet forwarding enabled and proxy arp disabled net. ipv 4. conf. default. forwarding=1 net. ipv 4. conf. default. proxy_arp=0 net. ipv 4. ip_forward=1 net. ipv 4. conf. all. rp_filter=1 # Enables the magic-sysrq key kernel. sysrq=1 # we do not want all our interfaces to send redirects net. ipv 4. conf. default. send_redirects=1 net. ipv 4. conf. all. send_redirects=0 sysctl -p 20
Virtualka vzctl create 100 –-ostemplate debian-5. 0 -amd 64 -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 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 22
Priprema # apt-get install debian-archive-keyring # apt-get update # apt-get upgrade # apt-get install apache 2 -mpm-prefork [. . . ] The following packages will be REMOVED: apache 2 -mpm-worker The following NEW packages will be installed: apache 2 -mpm-prefork 23
perl moduli apt-get install libxml-rss-feed-perl apt-get install libarchive-zip-perl apt-get install libfile-rsyncp-perldoc Compress: : Zlib perldoc Archive: : Zip perldoc XML: : RSS perldoc File: : Rsync. P 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 par 2 bzip 2 Instalacijska skripta pita za Workgroup/Domain Web server – apache 2 DHCP – ne Zatim doda korisnika backuppc: Backup. PC can be managed through its web interface: http: //backuppc/ For that purpose, a web user named 'backuppc' with 'k. Hs. Kl. WIQ' as password has been created. 26
Redirekcija Ako želimo URL http: //backuppc U /etc/apache 2/conf. d/backuppc. conf, na kraju dodajte: Redirect. Match ^/$ http: //backuppc/ d Provjerite #Document. Root /var/www/ Document. Root /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{Server. Host} = 'backuppc. domena'; $Conf{Max. Old. Log. Files} = '14'; $Conf{Df. Path} = '/bin/df'; $Conf{Df. Cmd} = '$df. Path $top. Dir'; $Conf{Df. Max. Usage. Pct} = '95'; $Conf{Backup. PCUser} = 'backuppc'; 29
Staze $Conf{Top. Dir} = '/var/lib/backuppc'; $Conf{Conf. Dir} = '/etc/backuppc'; $Conf{Log. Dir} = ''; $Conf{Install. Dir} = '/usr/share/backuppc'; $Conf{Cgi. Dir} = '/usr/share/backuppc/cgi-bin'; $Conf{Server. Initd. Path} = '/etc/init. d/backuppc'; 30
Config. pl $Conf{Wakeup. Schedule}['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{Full. Period} = '6. 97'; Minimalan razmak između inkrementalnih backupa (1 dan) $Conf{Incr. Period} = '0. 97'; $Conf{Incr. Keep. Cnt} = '6'; Koliko punih backupa čuvati (default 1) $Conf{Full. Keep. Cnt} = ['1']; $Conf{Full. Keep. Cnt. Min} = '1'; $Conf{Full. Age. Max} = '90'; 31
Složenija konfiguracija Za početak je dobra podrazumijevana konfiguracija Kasnije je možete prilagoditi, na pr. : Exponential backup expiry $Conf{Full. Keep. Cnt} = [4, 2, 3]; 2^n * $Conf{Full. Period} 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{Full. Period} = 7; $Conf{Incr. Period} = 1; $Conf{Incr. Keep. Cnt}= 6; $Conf{Incr. Levels} = [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{Full. Period} = 7; $Conf{Incr. Period} = 1; $Conf{Incr. Keep. Cnt}= 6; $Conf{Incr. Levels} = [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 Backup. PC 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 more. Users # example static IP host entry # farside 0 craig jill, jeff # example DHCP host entry # larson 1 hawkeye localhost 0 bill 0 luzer root 37
Web sučelje 38
user Korisnik u polju user dobija mailove Treba dodati domenu u config. pl $Conf{EMail. User. Dest. Domain} = '@mojadomena. hr'; Korisnici u more. Users 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") ? "okn" : "not foundn"); ' Zatim Net. Bios multicast nmblookup myhost Net. Bios 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{Xfer. Method} = 'smb'; $Conf{Smb. Share. Name} = [ 'Poslovno' ]; $Conf{Smb. Share. User. Name} = 'backuppc'; $Conf{Smb. Share. Passwd} = '!*Arghh+%#? '; $Conf{Smb. Client. Full. Cmd} = '$smb. Client. Path \\$host\$share. Name $I_option -U $user. Name -E -d 1 -c tarmode\ full -Tc$X_option $file. List'; $Conf{Smb. Client. Incr. Cmd} = '$smb. Client. Path \\$host\$share. Name $I_option -U $user. Name -E -d 1 -c tarmode\ full -Tc. N$X_option $time. Stamp. File - $file. List'; 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{Xfer. Method} = 'rsync'. $Conf{Rsync. Client. Path} = '/usr/bin/rsync'; #$Conf{Rsync. Client. Cmd} = '$ssh. Path -q -x -l root $host $rsync. Path $arg. List+'; # necemo se ulogirati kao root, nego kao rbackup $Conf{Rsync. Client. Cmd} = '$ssh. Path -q -x -l rbackup $host sudo $rsync. Path $arg. List+'; $Conf{Rsync. Client. Restore. Cmd} = '$ssh. Path -q -x -l rbackup $host sudo $rsync. Path $arg. List+'; $Conf{Rsync. Share. Name} = [ '/']; $Conf{Rsyncd. Client. Port} = '873'; $Conf{Rsyncd. User. Name} = 'rbackup'; $Conf{Rsyncd. Passwd} = '!*Arghh+%#? '; 48
Rsync argumenti $Conf{Rsync. Args} = [ '--numeric-ids', '--perms', '--owner', '--group', '-D', '--links', '--hard-links', '--times', '--block-size=2048', '--recursive' ]; 49
Rsync args. . . # Dodatni argumenti, na pr. --exclude/--include, # $Conf{Rsync. Args} = [ # # 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 rbackup@linhost. domena. hr config. pl $Conf{Rsyncd. User. Name} = 'rbackup'; $Conf{Rsyncd. Passwd} = ''; # ne treba $Conf{Rsyncd. Auth. Required} = '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{Wakeup. Schedule} 4 koraka Zahtjevi u background command queue Backup. PC_dump proces za pojedine klijente Backup. PC_link kreće ako je backup ispravan Zastarjeli backupi u /var/lib/backuppc/trash Obavlja deduplikaciju Backup. PC_trash. Clean i Backup. PC_nightly Briše trash i datoteke s jednim hard linkom 54
Datoteke Backup. PC_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{Compress. Level}=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 %pn" | sort > /tmp/inode less /tmp/inode [. . . ] 14928011 8. /hawkeye/0/f. HGI/f. Fascinantno. pps 14928011 8. /nb-soky/1/f. Poslovni/f. Fascinantno. pps 14928011 8. /nb-soky/2/f. Poslovni/f. Fascinantno. pps 14928011 8. /nb-soky/3/f. Poslovni/f. Fascinantno. pps 14928011 8. /nb-soky/4/f. Poslovni/f. Fascinantno. pps 14928011 8. /nb-soky/5/f. Poslovni/f. Fascinantno. pps 14928011 8. /nb-soky/6/f. Poslovni/f. Fascinantno. pps 58
Deduplikacija. . . Kako Backup. PC otkriva identične datoteke? Ime datoteke u poolu je MD 5 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{Backups. Disable} = 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 -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 Backup. PC od ver. 3 sadrži skriptu Backup. PC_tar. PCCopy su backuppc cd new. Topdir mkdir pc cd pc __INSTALLDIR__/bin/Backup. PC_tar. PCCopy __TOPDIR__/pc | tar xv. Pf - 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{Smb. Share. Name} = 'Posao'; config. pl – javio bi istu grešku za druge hostove Nakon toga: 69
Backup. PC server Visok load, procesi stanu Smanjite broj simultanih backupa $Conf{Max. Backups} + $Conf{Max. User. Backups} $Conf{Max. Backups} = '4'; $Conf{Max. User. Backups} = '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/c 0 d 0 p 1 / ext 3 rw, noatime, errors=remount-ro 0 0 Journaling Preselite journal na drugi disk ext 4 umjesto ext 3, po mogućnosti 64 -bit 73
Backup. PC 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: apache 2 -l | grep mod_perl 75
Backup My. SQL 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 My. SQL 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 – AAI@Edu. hr ili AD? Apache 2. 2 mod_authnz_ldap Debian 5. 0 apt-get install libapache-authznetldap-perl a 2 enmod authnz_ldap AAI@Edu. Hr koristi Radius kao posrednika apt-get install libapache 2 -mod-auth-radius 77
Noviji modul libapache 2_mod_auth_xradius Paket u repozitoriju Srca: http: //tinyurl. com/3 jgc 6 w 4 dpkg -i libapache 2 -mod-auth-xradius_0. 4. 6 -1_amd 64. 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 Auth. Type Basic Auth. Name "Predstavite se svojim AAI@Edu. Hr identitetom" Auth. XRadius. Add. Server "161. 53. x. x: 1812" "pssssttt" Auth. XRadius. Timeout 3 Auth. XRadius. Retries 3 require valid-user 80
Backup na i. SCSI storage 81
i. SCSI 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
i. SCSI Host vidi storage LUN kao lokalni disk Initiator - host Target – storage Discovery: Internet Storage Name Service (i. SNS) Send. Targets SLP - Service Location protocol (RFC 4018) Static – statička IP adresa targeta Host vidi storage kao /dev/sdx 83
84
i. SCSI na Debianu apt-get install open-iscsi /etc/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
i. SCSI Pronađi SCSI uređaj tail -f /var/log/messages fdisk /dev/sdd mkfs. ext 3 /dev/sdd 1 Mount direktorij mkdir /iscsi mount /dev/sdd 1 /iscsi Podesi /etc/iscsi. conf i /etc/mtab 87
- Slides: 87