Backup, parte 1: Scopu, rivista di metudi è tecnulugia

Backup, parte 1: Scopu, rivista di metudi è tecnulugia
Perchè avete bisognu di fà una copia di salvezza? Dopu tuttu, l'equipaggiu hè assai, assai affidabile, è in più, ci sò "nuvole" chì sò megliu in affidabilità cà i servitori fisichi: cù una cunfigurazione propria, un servitore "nuvola" pò sopravvive facilmente à u fallimentu di un servitore fisicu di l'infrastruttura, è da u puntu di vista di l'utilizatori di u serviziu, ci sarà un picculu saltu à pocu pressu in u serviziu di tempu. Inoltre, a duplicazione di l'infurmazioni spessu esige pagà per u tempu di processore "extra", a carica di discu è u trafficu di a rete.

Un prugramma ideale corre veloce, ùn perde micca a memoria, ùn hà micca buchi è ùn esiste micca.

- Inconnu

Siccomu i prugrammi sò sempre scritti da i sviluppatori di prutezione, è ùn ci hè spessu micca prucessu di teste, più i prugrammi sò raramente spediti cù "megliu pratiche" (chì elli stessi sò ancu prugrammi è dunque imperfetti), l'amministratori di u sistema più spessu anu da risolve i prublemi chì sonanu brevemente ma succinctly: "riturnà cumu era", "portà a basa à u funziunamentu normale", "travaglia lentamente - roll back", è ancu u mo preferitu "Ùn sò micca ciò chì, ma ripara".

In più di l'errori lògichi chì nascenu com'è u risultatu di u travagliu trascuratu di sviluppatori, o una cumminazione di circustanze, è ancu a cunniscenza incompleta o malintesa di picculi funziunalità di i prugrammi di custruzzione - cumpresi quelli di cunnessione è di sistema, cumpresi i sistemi operativi, i cunduttori è u firmware - ci sò ancu altri errori. Per esempiu, a maiò parte di i sviluppatori s'appoghjanu nantu à u runtime, scurdendu cumplettamente di e lege fisiche, chì sò sempre impussibili di evità cù i prugrammi. Questu include l'affidabilità infinita di u sottosistema di discu è, in generale, qualsiasi sottosistema di almacenamiento di dati (cumprese RAM è cache di u processatore!), È u tempu di processazione zero nantu à u processatore, è l'absenza d'errore durante a trasmissione nantu à a reta è durante u processu nantu à a rete. processore, è a latenza di a rete, chì hè uguali à 0. Ùn deve trascuratà u termini notoriu, perchè s'ellu ùn l'avete micca scuntratu in u tempu, ci saranu prublemi peggiu chì i sfumaturi di u funziunamentu di a rete è di u discu.

Backup, parte 1: Scopu, rivista di metudi è tecnulugia

Cosa da fà cù i prublemi chì si sviluppanu in piena forza è pende nantu à dati preziosi? Ùn ci hè nunda per rimpiazzà i sviluppatori viventi, è ùn hè micca un fattu chì serà pussibule in un futuru vicinu. Per d 'altra banda, solu uni pochi di prughjetti anu riesciutu à dimustrà cumplettamente chì u prugramma hà da travaglià cum'è previstu, è ùn serà micca necessariamente pussibule di piglià è applicà l'evidenza à altri prughjetti simili. Inoltre, tali evidenza piglia assai tempu è esige cumpetenze è cunniscenze spiciali, è questu praticamenti minimizza a pussibilità di u so usu tenendu in contu i termini. Inoltre, ùn sapemu ancu cumu utilizà tecnulugia ultra-veloce, economica è infinitamente affidabile per almacenà, trasfurmà è trasmette l'infurmazioni. Tali tecnulugii, s'ellu ci sò, sò in forma di cuncetti, o - più spessu - solu in libri è filmi di scienza.

I boni artisti copianu, i grandi artisti arrubbanu.

-Pablo Picasso.

I suluzioni più riesciuti è e cose sorprendentemente simplici accade generalmente induve cuncetti, tecnulugii, cunniscenze è campi di scienza chì sò assolutamente incompatibili à u primu sguardu si scontranu.

Per esempiu, l'acelli è l'aviò anu ali, ma malgradu a similitudine funziunale - u principiu di funziunamentu in certi modi hè u listessu, è i prublemi tecnichi sò risolti in modu simili: osse cavu, l'usu di materiali forti è ligeri, etc. i risultati sò cumplitamenti sfarente, ma assai simili. I più boni esempii chì vedemu in a nostra tecnulugia sò ancu largamente prestiti da a natura: i compartments pressurizzati di i navi è i sottumarini sò una analogia diretta cù l'anellidi; custruì arrays raid è verificate l'integrità di e dati - duplicate a catena di DNA; cum'è l'urgani pareti, l'indipendenza di u travagliu di i diversi organi da u sistema nervu cintrali (automatizazione di u core) è i riflessi - sistemi autonomi in Internet. Di sicuru, piglià è applicà suluzioni pronti "head-on" hè pienu di prublemi, ma chì sà, forsi ùn ci sò altre suluzione.

S'e avessi saputu duv'è tù cascassi, aghju stendu paglia !

- Pruverbiu populari bielorussu

Questu significa chì e copie di salvezza sò vitali per quelli chì volenu:

  • Puderete restaurà u funziunamentu di i vostri sistemi cù un minimu di downtime, o ancu senza
  • Agisce audace, perchè in casu d'errore ci hè sempre a pussibilità di un rollback
  • Minimize e cunsequenze di a corruzzione intenzionale di dati

Eccu un pocu di teoria

Ogni classificazione hè arbitraria. A natura ùn classificà micca. Classificamu perchè hè più cunvene per noi. È noi classificà secondu dati chì avemu ancu piglià arbitrariamente.

- Jean Bruler

Indipendentemente da u metudu di almacenamiento fisicu, l'almacenamiento di dati lògichi pò esse divisu in dui modi per accede à sta dati: bloccu è fugliale. Questa divisione hè stata recentemente assai sfocata, perchè puramente bluccatu, cum'è puramente file, l'almacenamiento logicu ùn esiste micca. In ogni casu, per simplicità, assumeremu chì esistenu.

Block data storage implica chì ci hè un dispusitivu fisicu induve dati hè scrittu in certi porzioni fissu, blocchi. I blocchi sò accessu à un certu indirizzu; ogni bloccu hà u so propiu indirizzu in u dispusitivu.

Una copia di salvezza hè generalmente fatta da cupià blocchi di dati. Per assicurà l'integrità di e dati, a registrazione di novi blocchi, è ancu i cambiamenti à quelli esistenti, sò sospesi à u mumentu di a copia. Se pigliemu una analogia da u mondu ordinariu, u più vicinu hè un armariu cù celluli numerati idèntici.

Backup, parte 1: Scopu, rivista di metudi è tecnulugia

L'almacenamiento di dati di u schedariu basatu annantu à u principiu di u dispositivu logicu hè vicinu à l'almacenamiento di bloccu è hè spessu urganizatu in cima. Differenze impurtanti sò a prisenza di una ghjerarchia di almacenamiento è nomi leghjite da l'omu. Una astrazione hè attribuita in a forma di un schedariu - una zona di dati chjamatu, è ancu un repertoriu - un schedariu speciale in quale e descrizzioni è l'accessu à altri schedari sò almacenati. I schedari ponu esse furniti cù metadati supplementari: tempu di creazione, bandiere d'accessu, etc. I backups sò generalmente fatti in questu modu: cercanu i schedarii cambiati, dopu copià in un altru archiviu di schedari cù a listessa struttura. L'integrità di i dati hè generalmente implementata da l'assenza di schedari chì sò scritti. I metadati di u schedariu sò salvati in u listessu modu. L'analogia più vicinu hè una biblioteca, chì hà rùbbriche cù diversi libri, è hà ancu un catalogu cù i nomi umani di i libri.

Backup, parte 1: Scopu, rivista di metudi è tecnulugia

Ricertamenti, una altra opzione hè qualchì volta descritta, da quale, in principiu, l'almacenamiento di dati di l'archiviu principia, è chì hà e stesse caratteristiche arcaiche: almacenamiento di dati d'ughjettu.

Differisce da l'almacenamiento d'archivi in ​​​​chì ùn hà micca più di un nidificatu (schema flat), è i nomi di i schedari, anchi si leghjite da l'omu, sò sempre più adattati per u processu da e macchine. Quandu eseguite copie di salvezza, l'almacenamiento di l'ughjettu hè più spessu trattatu in modu simili à l'almacenamiento d'archivi, ma in ocasioni ci sò altre opzioni.

- Ci hè dui tipi di amministratori di sistema, quelli chì ùn facenu micca copia di salvezza, è quelli chì dighjà fà.
- In verità, ci sò trè tippi: ci sò ancu quelli chì verificanu chì e salvezza ponu esse restaurate.

- Inconnu

Hè vale a pena capisce chì u prucessu di salvezza di dati stessu hè realizatu da i prugrammi, cusì hà tutti i stessi disadvantages cum'è qualsiasi altru prugramma. Per sguassà (micca eliminà!) A dipendenza da u fattore umanu, è ancu e caratteristiche - chì individualmente ùn anu micca un effettu forte, ma inseme ponu dà un effettu notevuli - u cusì chjamatu. regula 3-2-1. Ci hè parechje scelte per a manera di decifrallu, ma mi piace megliu l'interpretazione seguente: 3 setti di a listessa data deve esse guardatu, 2 setti deve esse guardatu in diversi formati, è 1 set deve esse guardatu in un almacenamentu geograficamente remoto.

U furmatu di almacenamentu deve esse capitu cum'è seguente:

  • Se ci hè una dipendenza da u metudu di almacenamiento fisicu, cambiamu u metudu fisicu.
  • Se ci hè una dependenza di u metudu di almacenamiento logicu, cambiamu u metudu logicu.

Per ottene l'effettu massimu di a regula 3-2-1, hè cunsigliatu di cambià u formatu di almacenamiento in i dui modi.

Da u puntu di vista di a prontezza di una copia di salvezza per u so propiu scopu - restaurà a funziunalità - hè fatta una distinzione trà backups "caldi" è "freddi". I caldi sò diffirenti di quelli friddi in una sola cosa: sò immediatamente pronti per l'usu, mentre chì i friddi necessitanu qualchì passu supplementu per a ricuperazione: decryption, estrazione da l'archiviu, etc.

Ùn cunfundite micca e copie calde è fresche cù e copie in linea è offline, chì implicanu l'isolamentu fisicu di e dati è, in fattu, sò un altru signu di a classificazione di i metudi di salvezza. Allora una copia offline - micca direttamente cunnessa à u sistema induve deve esse restaurata - pò esse calda o fredda (in termini di prontezza per a ricuperazione). Una copia in linea pò esse dispunibule direttamente induve deve esse restaurata, è più spessu hè calda, ma ci sò ancu friddi.

Inoltre, ùn vi scurdate micca chì u prucessu di creazione di copia di salvezza stessu ùn finisce micca generalmente cù a creazione di una copia di salvezza, è pò esse un numeru abbastanza grande di copie. Per quessa, hè necessariu di distinguishà trà backups pienu, i.e. quelli chì ponu esse restaurati indipindentamente di l'altri backups, è ancu e copie differenziali (incrementali, differenziali, decrementali, etc.) - quelli chì ùn ponu micca esse restaurati indipindentamente è necessitanu a restaurazione preliminare di una o più altre copie di salvezza.

I backups incrementali differenziali sò un tentativu di salvà u spaziu di salvezza di salvezza. Cusì, solu dati cambiatu da a copia di salvezza precedente hè scrittu à a copia di salvezza.

I decrementi differenziali sò creati per u stessu scopu, ma in una manera ligeramente diversa: una copia di salvezza completa hè fatta, ma solu a diffarenza trà a copia fresca è a precedente hè veramente guardata.

Separatamente, vale a pena di cunsiderà u prucessu di salvezza nantu à l'almacenamiento, chì sustene l'absenza di almacenamiento di duplicati. Cusì, s'è vo scrivite una copia di salvezza cumpleta nantu à questu, solu e differenze trà e copie di salvezza seranu veramente scritte, ma u prucessu di restaurà e copia di salvezza serà simile à a ristaurazione da una copia completa è completamente trasparente.

Quis custodiet ipsos custodes?

(Quale guarderà i guardiani stessi ? - lat.)

Hè assai dispiacevule quandu ùn ci sò micca copie di salvezza, ma hè assai peggiu se una copia di salvezza pari chì hè stata fatta, ma quandu si restaurà, hè chì ùn pò micca esse restauratu perchè:

  • L'integrità di e dati fonte hè stata cumprumessa.
  • L'almacenamiento di salvezza hè dannatu.
  • A risturazione funziona assai lentamente; ùn pudete micca aduprà dati chì sò stati parzialmente recuperati.

Un prucessu di salvezza currettamente custruitu deve piglià in contu tali cumenti, in particulare i primi dui.

L'integrità di e dati fonte pò esse garantitu in parechje manere. I più cumunimenti usati sò i seguenti: a) creazione di snapshots di u sistema di fugliale à u livellu di bloccu, b) "congelà" u statu di u sistema di fugliale, c) un dispositivu di bloccu speciale cù almacenamiento di versione, d) registrazione sequenziale di schedari o blocchi. I checksums sò ancu applicati per assicurà chì e dati sò verificati durante a ricuperazione.

A corruzzione di l'almacenamiento pò ancu esse rilevata usendu checksums. Un metudu supplementu hè l'usu di i dispositi specializati o di sistemi di schedari in i quali i dati digià arregistrati ùn ponu esse cambiati, ma ponu esse aghjuntu novi.

Per accelerà a ricuperazione, a ricuperazione di dati hè aduprata cù parechji prucessi per a ricuperazione - sempre chì ùn ci hè micca un collu di bottiglia in forma di una rete lenta o un sistema di discu lento. Per fà u circondu di a situazione cù dati parzialmente recuperati, pudete rompe u prucessu di salvezza in subtasks relativamente chjuchi, ognuna di quale hè realizatu separatamente. Cusì, diventa pussibule restaurà in modu coerente u rendiment mentre predice u tempu di ricuperazione. Stu prublema più spessu si trova in u pianu di l'urganisazione (SLA), per quessa, ùn avemu micca aspittà nantu à questu in dettu.

Un espertu in spezie ùn hè micca quellu chì l'aghjunghje à ogni platu, ma quellu chì ùn aghjunghje micca nunda in più.

- IN. Sinyavsky

E pratiche in quantu à u software utilizatu da l'amministratori di u sistema pò varià, ma i principii generali sò sempre, in una manera o l'altru, u listessu, in particulare:

  • Hè assai ricumandemu di utilizà suluzioni pronti.
  • I prugrammi duveranu travaglià previsiblemente, i.e. Ùn ci deve esse micca funziunalità micca documentatu o colli di bottiglia.
  • Stabbilimentu di ogni prugramma deve esse cusì simplice chì ùn avete micca bisognu di leghje u manuale o u fogliu di truccu ogni volta.
  • Sè pussibule, a suluzione deve esse universale, perchè i servitori ponu varià assai in e so caratteristiche hardware.

Ci sò i seguenti prugrammi cumuni per piglià una copia di salvezza da i dispositi di bloccu:

  • dd, familiar à i veterani di l'amministrazione di u sistema, questu include ancu prugrammi simili (u stessu dd_rescue, per esempiu).
  • Utilità integrate in certi sistemi di schedari chì creanu un dump di u sistema di schedari.
  • utilità omnivore; per esempiu partclone.
  • E decisioni propiu, spessu pruprietariu; per esempiu, NortonGhost è più tardi.

Per i sistemi di fugliali, u prublema di salvezza hè parzialmente risolta cù metudi applicabili per i dispositi di bloccu, ma u prublema pò esse risoltu in modu più efficau usendu, per esempiu:

  • Rsync, un prugramma generale è un protokollu per a sincronizazione di u statu di i sistemi di schedari.
  • Strumenti di archiviazione integrati (ZFS).
  • Strumenti di archiviazione di terze parti; u rappresentante più populari hè tar. Ci sò altri, per esempiu, dar - un sustitutu di tar destinatu à i sistemi muderni.

Hè vale a pena menzionate separatamente nantu à i strumenti software per assicurà a coherenza di dati quandu creanu copie di salvezza. L'opzioni più cumunimenti utilizati sò:

  • Muntà u sistema di fugliale in modu di sola lettura (ReadOnly), o congelate u sistema di schedari (freeze) - u metudu hè di applicabilità limitata.
  • Crià snapshots di u statu di i sistemi di schedari o di i dispositi di bloccu (LVM, ZFS).
  • L'usu di l'arnesi di terzu per urganizà impressioni, ancu in i casi induve i punti previ ùn ponu esse furniti per una certa ragione (programmi cum'è hotcopy).
  • A tecnica copy-on-change (CopyOnWrite), però, hè più spessu ligata à u sistema di schedari utilizatu (BTRFS, ZFS).

Dunque, per un servitore chjucu, avete bisognu di furnisce un schema di salvezza chì risponde à i seguenti requisiti:

  • Facile d'utilizà - ùn sò micca necessarii passi supplementari speciali durante l'operazione, passi minimi per creà è restaurà copie.
  • Universale - travaglia nantu à i servitori grandi è chjuchi; questu hè impurtante quandu cresce u numeru di servitori o scala.
  • Installatu da un gestore di pacchetti, o in unu o dui cumandamenti cum'è "scaricate è unpack".
  • Stabile - hè utilizatu un formatu di almacenamiento standard o longu stabilitu.
  • Rapidu in u travagliu.

Candidati da quelli chì rispondenu più o menu à i requisiti:

  • rdiff-backup
  • rsnapshot
  • ruttu
  • duplicate
  • duplicità
  • lasciate dup
  • casa
  • zbackup
  • restu
  • borgbackup

Backup, parte 1: Scopu, rivista di metudi è tecnulugia

Una macchina virtuale (basata in XenServer) cù e seguenti caratteristiche serà aduprata cum'è bancu di prova:

  • 4 core 2.5 GHz,
  • 16 GB di RAM,
  • 50 GB d'almacenamiento hibridu (sistema di almacenamentu cù caching in SSD 20% di a dimensione di u discu virtuale) in forma di un discu virtuale separatu senza partitioning,
  • Canale Internet 200 Mbps.

Quasi a listessa macchina serà usata cum'è un servitore di u receptore di salvezza, solu cù un discu duru 500 GB.

Sistema upirativu - Centos 7 x64: particione standard, partizione addiziale serà usata cum'è fonte di dati.

Cum'è dati iniziali, pigliemu un situ di WordPress cù 40 GB di schedarii media è una basa di dati mysql. Siccomu i servitori virtuali varianu assai in e caratteristiche, è ancu per una riproducibilità megliu, quì hè

risultati di teste di u servitore utilizendu sysbench.sysbench --threads=4 --time=30 --cpu-max-prime=20000 cpu run
sysbench 1.1.0-18a9f86 (aduprendu LuaJIT 2.1.0-beta3 bundle)
Esecuzione di u test cù e seguenti opzioni:
Numaru di fili: 4
Inizializza u generatore di numeri aleatorii da u tempu attuale

Limite di numeri primi: 20000

Inizializzanu i fili di u travagliu...

I fili anu principiatu!

Velocità di CPU:
Avvenimenti per seconda: 836.69

Trasmissione:
avvenimenti/s (eps): 836.6908
tempu passatu: 30.0039 s
numeru tutale di avvenimenti: 25104

Latenza (ms):
min: 2.38
media: 4.78
Massimu: 22.39
95e percentile: 10.46
somma: 119923.64

Eghjezze di ghjustizia:
Avvenimenti (avg/stddev): 6276.0000/13.91
tempu d'esekzione (avg/stddev): 29.9809/0.01

sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=leggi l'esecuzione di memoria
sysbench 1.1.0-18a9f86 (aduprendu LuaJIT 2.1.0-beta3 bundle)
Esecuzione di u test cù e seguenti opzioni:
Numaru di fili: 4
Inizializza u generatore di numeri aleatorii da u tempu attuale

Esecuzione di a prova di velocità di memoria cù e seguenti opzioni:
dimensione di u bloccu: 1 KiB
dimensione tutale: 102400 MiB
funziunamentu : leghje
Scopu: globale

Inizializzanu i fili di u travagliu...

I fili anu principiatu!

Operazioni totali: 50900446 (1696677.10 per seconda)

49707.47 MiB trasferitu (1656.91 MiB/sec)

Trasmissione:
avvenimenti/s (eps): 1696677.1017
tempu passatu: 30.0001 s
numeru tutale di avvenimenti: 50900446

Latenza (ms):
min: 0.00
media: 0.00
Massimu: 24.01
95e percentile: 0.00
somma: 39106.74

Eghjezze di ghjustizia:
Avvenimenti (avg/stddev): 12725111.5000/137775.15
tempu d'esekzione (avg/stddev): 9.7767/0.10

sysbench --threads = 4 --time = 30 --memory-block-size = 1K --memory-scope = globale --memory-total-size = 100G --memory-oper = scrive l'esecuzione di memoria
sysbench 1.1.0-18a9f86 (aduprendu LuaJIT 2.1.0-beta3 bundle)
Esecuzione di u test cù e seguenti opzioni:
Numaru di fili: 4
Inizializza u generatore di numeri aleatorii da u tempu attuale

Esecuzione di a prova di velocità di memoria cù e seguenti opzioni:
dimensione di u bloccu: 1 KiB
dimensione tutale: 102400 MiB
operazione : scrive
Scopu: globale

Inizializzanu i fili di u travagliu...

I fili anu principiatu!

Operazioni totali: 35910413 (1197008.62 per seconda)

35068.76 MiB trasferitu (1168.95 MiB/sec)

Trasmissione:
avvenimenti/s (eps): 1197008.6179
tempu passatu: 30.0001 s
numeru tutale di avvenimenti: 35910413

Latenza (ms):
min: 0.00
media: 0.00
Massimu: 16.90
95e percentile: 0.00
somma: 43604.83

Eghjezze di ghjustizia:
Avvenimenti (avg/stddev): 8977603.2500/233905.84
tempu d'esekzione (avg/stddev): 10.9012/0.41

sysbench --threads=4 --file-test-mode=rndrw --time=60 --file-block-size=4K --file-total-size=1G fileio run
sysbench 1.1.0-18a9f86 (aduprendu LuaJIT 2.1.0-beta3 bundle)
Esecuzione di u test cù e seguenti opzioni:
Numaru di fili: 4
Inizializza u generatore di numeri aleatorii da u tempu attuale

Bandieri aperti di file extra: (nimu)
128 schedari, 8 MiB ognunu
1 GiB dimensione di u schedariu tutale
Taglia di bloccu 4 KiB
Numero di richieste IO: 0
Rapportu di lettura / scrittura per a prova IO aleatoria cumminata: 1.50
FSYNC periodicu attivatu, chjamendu fsync () ogni 100 richieste.
Chjama fsync () à a fine di a prova, Abilitatu.
Utilizà u modu I/O sincronu
Facendu un test r/w aleatoriu
Inizializzanu i fili di u travagliu...

I fili anu principiatu!

Trasmissione:
leghje: IOPS=3868.21 15.11 MiB/s (15.84 MB/s)
scrive: IOPS=2578.83 10.07 MiB/s (10.56 MB/s)
fsync: IOPS = 8226.98

Latenza (ms):
min: 0.00
media: 0.27
Massimu: 18.01
95e percentile: 1.08
somma: 238469.45

Sta nota principia un grande

serie di articuli nantu à a copia di salvezza

  1. Backup, parte 1: Perchè a copia di salvezza hè necessariu, una panoramica di metudi, tecnulugia
  2. Backup Part 2: Revisione è teste di strumenti di salvezza basati in rsync
  3. Backup Part 3: Revisione è prova di duplicità, duplicazione, deja dup
  4. Backup Part 4: Revisione è teste zbackup, restic, borgbackup
  5. Backup Part 5: Testing bacula è veeam backup per linux
  6. Backup Part 6: Comparazione di Strumenti di Backup
  7. Backup Part 7: Conclusioni

Source: www.habr.com

Add a comment