Varundamine, 1. osa: Eesmärk, meetodite ja tehnoloogiate ülevaade

Varundamine, 1. osa: Eesmärk, meetodite ja tehnoloogiate ülevaade
Miks on vaja varukoopiaid teha? Lõppude lõpuks on seadmed väga-väga töökindlad ja pealegi on olemas "pilved", mis on töökindluselt paremad kui füüsilised serverid: õige konfiguratsiooni korral elab "pilveserver" hõlpsasti üle infrastruktuuri füüsilise serveri rikke ja alates Teenuse kasutajate seisukohast toimub teeninduse ajas väike, vaevumärgatav hüpe. Lisaks nõuab teabe dubleerimine sageli protsessori lisaaja, kettakoormuse ja võrguliikluse eest tasumist.

Ideaalne programm töötab kiiresti, ei leki mälust, sellel pole auke ja seda pole olemas.

- Teadmata

Kuna programme kirjutavad endiselt valguarendajad ja sageli puudub testimisprotsess, lisaks tarnitakse programme harva "parimate tavade" järgi (mis ise on samuti programmid ja seetõttu ebatäiuslikud), peavad süsteemiadministraatorid enamasti lahendama probleeme, mis kõlavad lühidalt, kuid lühidalt: "naaske, kuidas see oli", "too alus normaalseks tööks", "töötab aeglaselt - kerige tagasi" ja ka minu lemmik "Ma ei tea, mis, aga parandage see".

Lisaks loogilistele vigadele, mis tekivad arendajate hooletu töö või asjaolude kombinatsiooni tagajärjel, samuti mittetäielikud teadmised või arusaamatused programmide loomise väikestest funktsioonidest, sealhulgas ühendamisest ja süsteemi omadest, sealhulgas operatsioonisüsteemidest, draiveritest ja püsivarast, on ka muid vigu. Näiteks enamik arendajaid toetub käitusajale, unustades täielikult füüsilised seadused, millest programmide abil on endiselt võimatu mööda hiilida. See hõlmab ketta alamsüsteemi ja üldiselt mis tahes andmesalvestuse alamsüsteemi (sealhulgas RAM ja protsessori vahemälu!) lõputut töökindlust, protsessori töötlemisaega nulli ning vigade puudumist võrgu kaudu edastamisel ja töötlemisel protsessor ja võrgu latentsus, mis võrdub 0-ga. Te ei tohiks tähelepanuta jätta kurikuulsat tähtaega, sest kui te sellest õigel ajal kinni ei pea, tekivad probleemid, mis on hullemad kui võrgu ja ketta töö nüansid.

Varundamine, 1. osa: Eesmärk, meetodite ja tehnoloogiate ülevaade

Mida teha probleemidega, mis tõusevad täies jõus ja ripuvad väärtuslike andmete kohal? Elavaid arendajaid pole millegagi asendada ja pole tõsiasi, et see lähitulevikus võimalik on. Teisest küljest on vaid mõnel projektil õnnestunud täielikult tõestada, et programm toimib nii, nagu ette nähtud, ning tõendeid ei pruugi olla võimalik võtta ja rakendada teiste sarnaste projektide puhul. Samuti võtavad sellised tõendid palju aega ning nõuavad erioskusi ja -teadmisi ning see vähendab tähtaegu arvestades praktiliselt nende kasutamise võimalust. Lisaks ei oska me veel kasutada ülikiiret, odavat ja lõputult töökindlat tehnoloogiat info salvestamiseks, töötlemiseks ja edastamiseks. Sellised tehnoloogiad, kui need on olemas, on kontseptsioonide kujul või - enamasti - ainult ulmeraamatutes ja -filmides.

Head kunstnikud kopeerivad, suured kunstnikud varastavad.

– Pablo Picasso.

Kõige edukamad lahendused ja üllatavalt lihtsad asjad juhtuvad enamasti seal, kus kohtuvad esmapilgul absoluutselt kokkusobimatud kontseptsioonid, tehnoloogiad, teadmised ja teadusvaldkonnad.

Näiteks on lindudel ja lennukitel tiivad, kuid vaatamata funktsionaalsele sarnasusele - tööpõhimõte on mõnel režiimil sama ja tehnilised probleemid lahendatakse sarnaselt: õõnsad luud, tugevate ja kergete materjalide kasutamine jne. tulemused on täiesti erinevad, kuigi väga sarnased. Ka parimad näited, mida oma tehnoloogias näeme, on suures osas laenatud loodusest: laevade ja allveelaevade rõhu all olevad sektsioonid on otsene analoogia anneliididega; raidmassiivide loomine ja andmete terviklikkuse kontrollimine – DNA ahela dubleerimine; samuti paarisorganid, erinevate organite töö sõltumatus kesknärvisüsteemist (südame automatiseerimine) ja refleksid - autonoomsed süsteemid Internetis. Muidugi on valmislahenduste võtmine ja rakendamine "peapealt" täis probleeme, kuid kes teab, võib-olla polegi muid lahendusi.

Oleks ma vaid teadnud, kuhu sa kukud, oleksin õled maha pannud!

— Valgevene rahva vanasõna

See tähendab, et varukoopiad on üliolulised neile, kes soovivad:

  • Suuta taastada oma süsteemide töö minimaalse seisakuajaga või isegi ilma selleta
  • Tegutsege julgelt, sest vea korral on alati võimalus tagasilöögiks
  • Minimeerige tahtliku andmete rikkumise tagajärjed

Siin on väike teooria

Igasugune klassifikatsioon on meelevaldne. Loodus ei klassifitseeri. Klassifitseerime, sest nii on meile mugavam. Ja me liigitame andmete järgi, mida me ka suvaliselt võtame.

– Jean Bruler

Sõltumata füüsilisest salvestusmeetodist saab loogilise andmesalvestuse andmetele juurdepääsu saamiseks jagada kaheks viisiks: plokk ja fail. See jaotus on viimasel ajal väga hägune, sest puhtalt plokk-, aga ka puhtalt failide loogilist salvestusruumi ei eksisteeri. Kuid lihtsuse huvides eeldame, et need on olemas.

Plokiandmete salvestamine tähendab, et on olemas füüsiline seade, kuhu andmed on kirjutatud teatud kindlates osades, plokkides. Plokkidele pääseb juurde teatud aadressil, igal plokil on seadme sees oma aadress.

Varukoopia tehakse tavaliselt andmeplokkide kopeerimise teel. Andmete terviklikkuse tagamiseks peatatakse uute plokkide ja ka olemasolevate muudatuste salvestamine kopeerimise ajaks. Kui võtta analoogia tavamaailmast, siis kõige lähedasem on identsete nummerdatud lahtritega kapp.

Varundamine, 1. osa: Eesmärk, meetodite ja tehnoloogiate ülevaade

Loogilise seadme põhimõttel põhinev failiandmete salvestamine on lähedane plokksalvestusele ja on sageli korraldatud peal. Olulised erinevused on salvestushierarhia ja inimloetavate nimede olemasolu. Abstraktsioon eraldatakse faili kujul - nimega andmeala, samuti kataloog - spetsiaalne fail, kuhu salvestatakse kirjeldused ja juurdepääs teistele failidele. Faile saab varustada täiendavate metaandmetega: loomise aeg, juurdepääsulipud jne. Tavaliselt tehakse varukoopiaid nii: otsitakse muudetud faile, seejärel kopeeritakse need teise sama struktuuriga failimällu. Andmete terviklikkus saavutatakse tavaliselt failide puudumise tõttu, kuhu kirjutatakse. Failide metaandmed varundatakse samal viisil. Lähim analoogia on raamatukogu, kus on sektsioonid erinevate raamatutega, lisaks on olemas kataloog, kus on raamatute inimloetavad nimetused.

Varundamine, 1. osa: Eesmärk, meetodite ja tehnoloogiate ülevaade

Viimasel ajal kirjeldatakse mõnikord teist võimalust, millest põhimõtteliselt sai alguse failiandmete salvestamine ja millel on samad arhailised omadused: objektiandmete salvestamine.

See erineb failisalvestusest selle poolest, et sellel pole rohkem kui üks pesa (tasaskeem) ja failinimed, kuigi inimloetavad, sobivad siiski paremini masinate poolt töötlemiseks. Varukoopiate tegemisel käsitletakse objektide salvestamist enamasti sarnaselt failide salvestamisega, kuid aeg-ajalt on ka muid võimalusi.

— Süsteemiadministraatoreid on kahte tüüpi: neid, kes varukoopiaid ei tee, ja neid, kes JUBA teevad.
- Tegelikult on neid kolme tüüpi: on ka neid, kes kontrollivad, et varukoopiaid saaks taastada.

- Teadmata

Samuti tasub mõista, et andmete varundamise protsessi ise viivad läbi programmid, seega on sellel kõik samad puudused nagu igal teisel programmil. Et eemaldada (mitte kõrvaldada!) sõltuvust inimfaktorist, aga ka iseärasusi - mis üksikult ei avalda tugevat mõju, kuid koos võivad anda tuntava efekti - nn. reegel 3-2-1. Selle dešifreerimiseks on palju võimalusi, kuid mulle meeldib rohkem järgmine tõlgendus: salvestada tuleb 3 komplekti samu andmeid, 2 komplekti tuleb salvestada erinevates vormingutes ja 1 komplekt tuleb salvestada geograafiliselt kaugmällu.

Salvestusvormingut tuleks mõista järgmiselt:

  • Kui on sõltuvus füüsilisest salvestusmeetodist, muudame füüsilist meetodit.
  • Kui on sõltuvus loogilisest salvestusmeetodist, muudame loogilist meetodit.

Reegli 3-2-1 maksimaalse efekti saavutamiseks on soovitatav salvestusvormingut mõlemal viisil muuta.

Varukoopia valmisoleku seisukohalt ettenähtud otstarbeks - funktsionaalsuse taastamiseks - eristatakse "kuumaid" ja "külma" varukoopiaid. Kuumad erinevad külmadest ainult ühe asja poolest: need on kohe kasutusvalmis, külmad nõuavad taastamiseks mõningaid lisatoiminguid: dekrüpteerimist, arhiivist väljavõtmist jne.

Ärge ajage segamini kuum- ja külmkoopiaid võrgu- ja võrguühenduseta koopiatega, mis viitavad andmete füüsilisele isoleerimisele ja on tegelikult veel üks märk varundusmeetodite klassifitseerimisest. Seega võib võrguühenduseta koopia – mis ei ole otseselt ühendatud süsteemiga, kus see vajab taastamist – olla kas kuum või külm (taastevalmiduse mõttes). Interneti-koopia võib olla saadaval otse seal, kus see tuleb taastada, ja enamasti on see palav, kuid on ka külmi.

Lisaks ärge unustage, et varukoopiate loomise protsess ei lõpe tavaliselt ühe varukoopia loomisega ja koopiaid võib olla üsna palju. Seetõttu tuleb eristada täisvarukoopiaid, st. need, mida saab taastada sõltumatult teistest varukoopiatest, samuti diferentsiaalkoopiad (inkrementaal-, diferentsiaal-, dekrementaalsed jne) koopiad - need, mida ei saa iseseisvalt taastada ja mis nõuavad ühe või mitme muu varukoopia eelnevat taastamist.

Diferentsiaalne inkrementaalne varukoopia on katse säästa varukoopiate salvestusruumi. Seega kirjutatakse varukoopiasse ainult eelmisest varukoopiast muudetud andmed.

Diferentsiaalsed dekrementaalsed luuakse samal eesmärgil, kuid veidi erineval viisil: tehakse täielik varukoopia, kuid tegelikult salvestatakse ainult värske ja eelmise koopia erinevus.

Eraldi tasub kaaluda salvestusruumi varundamise protsessi, mis toetab duplikaatide salvestamise puudumist. Seega, kui selle peale kirjutada täielikud varukoopiad, siis tegelikult kirjutatakse ainult varukoopiate erinevused, kuid varukoopiate taastamise protsess on sarnane täiskoopiast taastamisega ja täiesti läbipaistev.

Quis custodiet ipsos custodes?

(Kes valvab tunnimehi ise? - lat.)

Väga ebameeldiv on, kui varukoopiaid pole, kuid palju hullem on see, kui tundub, et varukoopia on tehtud, kuid taastamisel selgub, et seda ei saa taastada, sest:

  • Lähteandmete terviklikkus on rikutud.
  • Varumälu on kahjustatud.
  • Taastamine toimib väga aeglaselt, osaliselt taastatud andmeid ei saa kasutada.

Õigesti üles ehitatud varundusprotsess peab selliseid kommentaare, eriti kahte esimest, arvesse võtma.

Lähteandmete terviklikkust saab tagada mitmel viisil. Kõige sagedamini kasutatavad on järgmised: a) failisüsteemi hetktõmmiste loomine ploki tasemel, b) failisüsteemi oleku "külmutamine", c) spetsiaalne versioonisalvestusega plokkseade, d) failide järjestikune salvestamine või plokid. Samuti rakendatakse kontrollsummasid, et tagada andmete kontrollimine taastamise ajal.

Salvestusruumi riknemist saab tuvastada ka kontrollsummade abil. Täiendav meetod on spetsiaalsete seadmete või failisüsteemide kasutamine, milles juba salvestatud andmeid ei saa muuta, kuid saab lisada uusi.

Taastamise kiirendamiseks kasutatakse andmete taastamist koos mitme protsessiga taastamiseks – eeldusel, et pole kitsaskohta aeglase võrgu või aeglase kettasüsteemi näol. Osaliselt taastatud andmetega olukorrast mööda pääsemiseks saate varundusprotsessi jagada suhteliselt väikesteks alamülesanneteks, millest igaüks tehakse eraldi. Seega on võimalik jõudlust järjepidevalt taastada, prognoosides samal ajal taastumisaega. See probleem seisneb enamasti organisatsioonilises plaanis (SLA), seega me sellel üksikasjalikult ei peatu.

Vürtside asjatundja pole see, kes neid igale roale lisab, vaid see, kes sellele kunagi midagi juurde ei lisa.

-IN. Sinjavski

Süsteemiadministraatorite kasutatava tarkvara tavad võivad erineda, kuid üldpõhimõtted on ühel või teisel viisil siiski samad, eelkõige:

  • On tungivalt soovitatav kasutada valmislahendusi.
  • Programmid peaksid töötama etteaimatavalt, s.t. Ei tohiks olla dokumenteerimata funktsioone ega kitsaskohti.
  • Iga programmi seadistamine peaks olema nii lihtne, et te ei peaks iga kord juhendit ega petulehte lugema.
  • Võimalusel peaks lahendus olema universaalne, sest serverite riistvaraomadused võivad oluliselt erineda.

Plokkseadmetest varukoopiate tegemiseks on järgmised levinumad programmid:

  • dd, mis on tuttav süsteemihalduse veteranidele, see hõlmab ka sarnaseid programme (sama dd_rescue näiteks).
  • Mõnesse failisüsteemi sisseehitatud utiliidid, mis loovad failisüsteemi tõmmise.
  • Kõigesööjad kommunaalteenused; näiteks partclone.
  • Enda, sageli omandiõigusega seotud otsused; näiteks NortonGhost ja hiljem.

Failisüsteemide puhul lahendatakse varundusprobleem osaliselt plokkseadmetele kehtivate meetoditega, kuid probleemi saab tõhusamalt lahendada, kasutades näiteks:

  • Rsync, üldotstarbeline programm ja protokoll failisüsteemide oleku sünkroonimiseks.
  • Sisseehitatud arhiveerimistööriistad (ZFS).
  • Kolmandate osapoolte arhiveerimistööriistad; populaarseim esindaja on tõrv. On ka teisi, näiteks dar - kaasaegsetele süsteemidele suunatud tõrva asendus.

Eraldi tasub mainida tarkvaratööriistu, mis tagavad andmete järjepidevuse varukoopiate tegemisel. Kõige sagedamini kasutatavad valikud on:

  • Failisüsteemi ühendamine kirjutuskaitstud režiimis (ReadOnly) või failisüsteemi külmutamine (külmutamine) - meetod on piiratud kohaldatavusega.
  • Failisüsteemide või plokkseadmete (LVM, ZFS) olekust hetketõmmiste loomine.
  • Kolmandate osapoolte tööriistade kasutamine kuvamiste korraldamiseks isegi juhtudel, kui eelmisi punkte ei saa mingil põhjusel pakkuda (programmid nagu hotcopy).
  • Muudatuse kopeerimise tehnika (CopyOnWrite) on aga enamasti seotud kasutatava failisüsteemiga (BTRFS, ZFS).

Seega peate väikese serveri jaoks pakkuma varundusskeemi, mis vastab järgmistele nõuetele:

  • Lihtne kasutada – töö ajal pole vaja erilisi lisatoiminguid, koopiate loomiseks ja taastamiseks on vaja minimaalselt.
  • Universaalne – töötab nii suurtes kui ka väikestes serverites; see on oluline serverite arvu suurendamisel või skaleerimisel.
  • Installitud paketihalduri poolt või ühe või kahe käsuga, näiteks "allalaadimine ja lahtipakkimine".
  • Stabiilne – kasutatakse tavalist või kauaaegset salvestusvormingut.
  • Kiire töös.

Taotlejad, kes vastavad enam-vähem nõuetele:

  • rdiff-varukoopia
  • rsnapshot
  • röhitsema
  • duplikaat
  • kahepalgelisus
  • laske dup
  • dar
  • zbackup
  • rahulik
  • borgbackup

Varundamine, 1. osa: Eesmärk, meetodite ja tehnoloogiate ülevaade

Teststendina kasutatakse virtuaalmasinat (XenServeril põhinev), millel on järgmised omadused:

  • 4 tuuma 2.5 GHz,
  • 16 GB RAM,
  • 50 GB hübriidmälu (mälusüsteem koos vahemällu salvestamisega SSD-le 20% virtuaalse ketta suurusest) eraldi virtuaalse ketta kujul ilma partitsioonideta,
  • 200 Mbps Interneti-kanal.

Peaaegu sama masin läheb kasutusele ka varuvastuvõtjaserverina, ainult 500 GB kõvakettaga.

Operatsioonisüsteem - Centos 7 x64: standardsektsioon, andmeallikana kasutatakse täiendavat partitsiooni.

Lähteandmetena võtame WordPressi saidi, kus on 40 GB meediafaile ja mysql andmebaas. Kuna virtuaalserverite omadused on väga erinevad ja ka parema reprodutseeritavuse huvides, siis siin on see

serveri testimise tulemused, kasutades sysbenchi.sysbench -- Threads=4 --time=30 --cpu-max-prime=20000 cpu run
sysbench 1.1.0-18a9f86 (kasutades komplekteeritud LuaJIT 2.1.0-beta3)
Testi käivitamine järgmiste võimalustega:
Keermete arv: 4
Juhuslike arvude generaatori initsialiseerimine praegusest ajast

Algarvude limiit: 20000 XNUMX

Töötaja lõimede lähtestamine…

Teemad algasid!

Protsessori kiirus:
sündmusi sekundis: 836.69

Läbilaskevõime:
sündmused/s (eps): 836.6908
kulunud aeg: 30.0039s
ürituste koguarv: 25104

Latentsus (ms):
min: 2.38
keskmine: 4.78
max: 22.39
95. protsentiil: 10.46
summa: 119923.64

Niitide õiglus:
sündmused (avg/stddev): 6276.0000 13.91/XNUMX
täitmisaeg (avg/stddev): 29.9809/0.01

sysbench -- Threads=4 --time = 30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=lugege mälu käitamist
sysbench 1.1.0-18a9f86 (kasutades komplekteeritud LuaJIT 2.1.0-beta3)
Testi käivitamine järgmiste võimalustega:
Keermete arv: 4
Juhuslike arvude generaatori initsialiseerimine praegusest ajast

Mälu kiiruse testi käivitamine järgmiste valikutega:
ploki suurus: 1KiB
kogumaht: 102400MiB
toiming: loe
ulatus: globaalne

Töötaja lõimede lähtestamine…

Teemad algasid!

Toiminguid kokku: 50900446 (1696677.10 sekundis)

49707.47 MiB ülekantud (1656.91 MiB/s)

Läbilaskevõime:
sündmused/s (eps): 1696677.1017
kulunud aeg: 30.0001s
ürituste koguarv: 50900446

Latentsus (ms):
min: 0.00
keskmine: 0.00
max: 24.01
95. protsentiil: 0.00
summa: 39106.74

Niitide õiglus:
sündmused (avg/stddev): 12725111.5000 137775.15/XNUMX
täitmisaeg (avg/stddev): 9.7767/0.10

sysbench -- Threads=4 --time = 30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=kirjutusmälu käitamine
sysbench 1.1.0-18a9f86 (kasutades komplekteeritud LuaJIT 2.1.0-beta3)
Testi käivitamine järgmiste võimalustega:
Keermete arv: 4
Juhuslike arvude generaatori initsialiseerimine praegusest ajast

Mälu kiiruse testi käivitamine järgmiste valikutega:
ploki suurus: 1KiB
kogumaht: 102400MiB
operatsioon: kirjuta
ulatus: globaalne

Töötaja lõimede lähtestamine…

Teemad algasid!

Toiminguid kokku: 35910413 (1197008.62 sekundis)

35068.76 MiB ülekantud (1168.95 MiB/s)

Läbilaskevõime:
sündmused/s (eps): 1197008.6179
kulunud aeg: 30.0001s
ürituste koguarv: 35910413

Latentsus (ms):
min: 0.00
keskmine: 0.00
max: 16.90
95. protsentiil: 0.00
summa: 43604.83

Niitide õiglus:
sündmused (avg/stddev): 8977603.2500 233905.84/XNUMX
täitmisaeg (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 (kasutades komplekteeritud LuaJIT 2.1.0-beta3)
Testi käivitamine järgmiste võimalustega:
Keermete arv: 4
Juhuslike arvude generaatori initsialiseerimine praegusest ajast

Lisafailide avamise lipud: (puudub)
128 faili, igaüks 8 MiB
1 GiB faili kogumaht
Ploki suurus 4KiB
IO taotluste arv: 0
Kombineeritud juhusliku IO testi lugemise/kirjutamise suhe: 1.50
Perioodiline FSYNC on lubatud, kutsudes fsync() iga 100 päringu järel.
Fsync() kutsumine testi lõpus, lubatud.
Sünkroonse I/O režiimi kasutamine
Juhusliku r/w testi tegemine
Töötaja lõimede lähtestamine…

Teemad algasid!

Läbilaskevõime:
loetud: IOPS=3868.21 15.11 MiB/s (15.84 MB/s)
kirjutamine: IOPS=2578.83 10.07 MiB/s (10.56 MB/s)
fsync: IOPS=8226.98

Latentsus (ms):
min: 0.00
keskmine: 0.27
max: 18.01
95. protsentiil: 1.08
summa: 238469.45

See noot algab suurelt

artiklisari varundamise kohta

  1. Varundamine, 1. osa: Miks on vaja varundada, ülevaade meetoditest, tehnoloogiatest
  2. Varundamine 2. osa: rsynci-põhiste varundustööriistade ülevaatamine ja testimine
  3. Varukoopia 3. osa: kahepalgelisuse, dubleerimise, deja dupi ülevaatamine ja testimine
  4. Varundamine 4. osa: zbackup, restic, borgbackup ülevaatamine ja testimine
  5. Varukoopia 5. osa: bacula ja veeam varukoopia testimine Linuxi jaoks
  6. Varundamine 6. osa: varundustööriistade võrdlemine
  7. Varukoopia 7. osa: Järeldused

Allikas: www.habr.com

Lisa kommentaar