Depo i back-up për mijëra makinash virtuale me mjete të lira

Depo i back-up për mijëra makinash virtuale me mjete të lira

Përshëndetje, kohët e fundit më ra një detyrë interesante për të konfiguruar një depo për backup të një numri të madh të pajisjeve të bllokuara.

Çdo javĂ« ne kryejmĂ« backup tĂ« tĂ« gjitha makinave virtuale nĂ« re, kĂ«shtu qĂ« duhet tĂ« jemi nĂ« gjendje tĂ« menaxhojmĂ« mijĂ«ra kopje rezervĂ« dhe ta bĂ«jmĂ« kĂ«tĂ« sa mĂ« shpejt dhe efikas.

Fatkeqësisht, konfigurimet standarde RAID5, RAID6 në këtë rast nuk do të na përshtaten për shkak se procesi i rikuperimit në disqe kaq të mëdhenj si tonat do të jetë tejet i gjatë dhe ndoshta nuk do të përfundojë kurrë.

Le t'i shqyrtojmë alternativat:

Erasure Coding — NjĂ« ekuivalent i RAID5, RAID6, por me njĂ« nivel pariteti tĂ« konfiguroshĂ«m. NĂ« kĂ«tĂ« mĂ«nyrĂ«, rezervimi nuk bĂ«het bllok pĂ«r bllok, por pĂ«r çdo objekt veçmas. MĂ«nyra mĂ« e thjeshtĂ« pĂ«r tĂ« provuar erasure coding Ă«shtĂ« tĂ« deploy minio.

DRAID — Ă«shtĂ« njĂ« mundĂ«si e papublikuar ende pĂ«r ZFS. Ndryshe nga RAIDZ, DRAID ka njĂ« bllok pariteti tĂ« shpĂ«rndarĂ« dhe gjatĂ« rikuperimit angazhon tĂ« gjitha disqet e grumbullit, duke e bĂ«rĂ« kĂ«do tĂ« pĂ«rshtatshĂ«m ndaj dĂ«shtimeve dhe duke u rikuperuar mĂ« shpejt pas njĂ« dĂ«shtimi.

Depo i back-up për mijëra makinash virtuale me mjete të lira

Depo i back-up për mijëra makinash virtuale me mjete të lira

Në dispozicion është një server Fujitsu Primergy RX300 S7 me procesorin Intel Xeon CPU E5-2650L 0 @ 1.80GHz, nëntë module RAM Samsung DDR3-1333 8Gb PC3L-10600R ECC Registered (M393B1K70DH0-YH9), një kabinet diskesh Supermicro SuperChassis 847E26-RJBOD1, i lidhur përmes Dual LSI SAS2X36 Expander dhe 45 disqe Seagate ST6000NM0115-1YZ110 sipër 6TB secili.

Para se të vendosim diçka, duhet së pari të testojmë gjithçka siç duhet.

Për këtë, unë u përgatita dhe kryeva testimin e konfiguracionesh të ndryshme. Për këtë, përdora minio, që shërbeu si S3-backend dhe e nisa atë në mënyra të ndryshme me numra të ndryshëm target.

Kryesisht u testua rasti minio në erasure coding vs software raid me të njëjtin numër disqesh dhe disqe pariteti, ato janë: RAID6, RAIDZ2 dhe DRAID2.

Për referencë: kur aktivizoni minio me një target të vetëm, minio funksionon si një gateway S3 duke ofruar sistemin tuaj të skedarëve lokal në formën e një depo S3. Ndërsa nëse aktivizoni minio me specifikimin e disa targeteve, do të aktivizohet automatikisht mënyra e Erasure Coding, e cila do të shpërndajë të dhënat midis targeteve tuaja duke ofruar qëndrueshmëri ndaj dështimeve.

Në mënyrë default, minio i ndan objektivat në grupe me nga 16 disqe, ku për çdo grup ka 2 paritete. Kjo do të thotë se dy disqe mund të dalin jashtë funksionit në të njëjtën kohë pa humbur të dhënat.

Për testimin e performancës kam përdorur 16 disqe prej 6TB secili dhe kam shkruar mbi ta objekte të vogla me madhësi 1MB, duke përshkruar në mënyrë sa më të saktë ngarkesën tonë të ardhshme, pasi të gjitha mjetet moderne për backup ndajnë të dhënat në blloqe disa megabajtësh dhe i shkruajnë në këtë mënyrë.

Për bënçmarkun u përdor utilitari s3bench i ekzekutuar në një server të largët që dërgonte dhjetëra mijëra objekte të tilla në minio me njëqind rrjedha. Pas kësaj, në të njëjtën mënyrë, përpiqej t'i kërkonte ato përsëri.

Rezultatet e bënçmarkut janë paraqitur në tabelën e mëposhtme:

Depo i back-up për mijëra makinash virtuale me mjete të lira

Siç e shohim, minio në modin e kodimit të tij të zerimit punon ndjeshëm më keq në shkruarje sesa minio që është aktivizuar mbi RAID6 programor, RAIDZ2 dhe DRAID2 në të njëjtën konfiguracion.

Veçmas, më kërkuan të testoj minio në ext4 vs XFS. E habitshme, por për llojin tim të ngarkesës, XFS u tregua dukshëm më e ngadaltë se ext4.

Në raundin e parë të testeve, Mdadm tregoi superioritet ndaj ZFS, por më vonë, gmelikov sugjeroi, se mund të përmirësoj performancën e ZFS duke vendosur opsionet e mëposhtme:

xattr=sa atime=off recordsize=1M

dhe pas kësaj, testet me ZFS u përmirësuan ndjeshëm.

Gjithashtu mund të vërehet se DRAID nuk ofron ndonjë përfitim të veçantë në performancë në krahasim me RAIDZ, por në teori duhet të jetë shumë më i sigurt.

Në dy testet e fundit, gjithashtu u përpoqa të ndaj metadatën (special) dhe ZIL (log) në një ra kyç SSD. Por kalimi i metadatave nuk solli ndonjë përfitim të veçantë në shpejtësinë e shkruarjes, ndërsa me kalimin e ZIL-it, SSDSC2KI128G8 arritëm në plafon me 100% të përdorimit, kështu që këtë test e konsideroj të dështuar. Nuk përjashtoj se po të kisha disqe SSD më të shpejtë, ndoshta kjo do të përmirësonte ndjeshëm rezultatet e mia, por, fatkeqësisht, nuk i kisha në dispozicion.

Në fund, vendosa të ndalem te përdorimi i DRAID dhe pavarësisht statusit të tij beta, ai është zgjidhja më e shpejtë dhe më efektive për ruajtjen në rastin tonë.

Krijova një DRAID2 të thjeshtë në konfigurimin me tre grupe dhe dy sparet të shpërndara:

# zpool status data
  pool: data
 state: ONLINE
  scan: none requested
config:

    NAME                 STATE     READ WRITE CKSUM
    data                 ONLINE       0     0     0
      draid2:3g:2s-0     ONLINE       0     0     0
        sdy              ONLINE       0     0     0
        sdam             ONLINE       0     0     0
        sdf              ONLINE       0     0     0
        sdau             ONLINE       0     0     0
        sdab             ONLINE       0     0     0
        sdo              ONLINE       0     0     0
        sdw              ONLINE       0     0     0
        sdak             ONLINE       0     0     0
        sdd              ONLINE       0     0     0
        sdas             ONLINE       0     0     0
        sdm              ONLINE       0     0     0
        sdu              ONLINE       0     0     0
        sdai             ONLINE       0     0     0
        sdaq             ONLINE       0     0     0
        sdk              ONLINE       0     0     0
        sds              ONLINE       0     0     0
        sdag             ONLINE       0     0     0
        sdi              ONLINE       0     0     0
        sdq              ONLINE       0     0     0
        sdae             ONLINE       0     0     0
        sdz              ONLINE       0     0     0
        sdan             ONLINE       0     0     0
        sdg              ONLINE       0     0     0
        sdac             ONLINE       0     0     0
        sdx              ONLINE       0     0     0
        sdal             ONLINE       0     0     0
        sde              ONLINE       0     0     0
        sdat             ONLINE       0     0     0
        sdaa             ONLINE       0     0     0
        sdn              ONLINE       0     0     0
        sdv              ONLINE       0     0     0
        sdaj             ONLINE       0     0     0
        sdc              ONLINE       0     0     0
        sdar             ONLINE       0     0     0
        sdl              ONLINE       0     0     0
        sdt              ONLINE       0     0     0
        sdah             ONLINE       0     0     0
        sdap             ONLINE       0     0     0
        sdj              ONLINE       0     0     0
        sdr              ONLINE       0     0     0
        sdaf             ONLINE       0     0     0
        sdao             ONLINE       0     0     0
        sdh              ONLINE       0     0     0
        sdp              ONLINE       0     0     0
        sdad             ONLINE       0     0     0
    spares
      s0-draid2:3g:2s-0  AVAIL   
      s1-draid2:3g:2s-0  AVAIL   

errors: No known data errors

Mirë, tani që u zgjodh depoja, kalojmë te çfarë do të përdorim për backup. Këtu menjëherë dua të flas për tre zgjidhje që arrita të provoj, dhe ato janë:

Benji Backup — fork Backy2, njĂ« zgjidhje e specializuar pĂ«r backup-in e pajisjeve bllok, ka njĂ« integrim tĂ« ngushtĂ« me Ceph. Mund tĂ« nxjerrĂ« differencat midis snapshot-eve dhe tĂ« formojĂ« njĂ« backup incremental. MbĂ«shtet njĂ« numĂ«r tĂ« madh backend-esh ruajtjeje, midis tĂ« cilave ka si lokale ashtu edhe S3. KĂ«rkon njĂ« bazĂ« tĂ« veçantĂ« tĂ« dhĂ«nash pĂ«r ruajtjen e tabelĂ«s hash tĂ« deduplifikimit. Nga disavantazhet: Ă«shtĂ« shkruar nĂ« python, ka njĂ« cli pak jo tĂ« pĂ«rgjegjshĂ«m.

Borg Backup — fork Attic, njĂ« mjet i njohur dhe i provuar pĂ«r backup, mund tĂ« bĂ«jĂ« backup tĂ« tĂ« dhĂ«nave dhe deduplifikon ato shumĂ« mirĂ«. Mund tĂ« ruajĂ« backup-et si lokale ashtu edhe nĂ« njĂ« server tĂ« kaluar pĂ«rmes scp. Mund tĂ« bĂ«jĂ« backup tĂ« pajisjeve bllok nĂ«se nisi me flamurin --special, nga anĂ«t negative: kur krijohet njĂ« backup, repository blokon plotĂ«sisht, pĂ«r kĂ«tĂ« arsye rekomandohet qĂ« pĂ«r çdo makinĂ« virtuale tĂ« krijohet njĂ« repository tĂ« veçantĂ«, nĂ« thelb kjo nuk Ă«shtĂ« njĂ« problem, duke qenĂ« se ato krijohen shumĂ« lehtĂ«sisht.

Restic — njĂ« projekt nĂ« zhvillim aktiv, shkruar nĂ« go, mjaft i shpejtĂ« dhe mbĂ«shtet njĂ« numĂ«r tĂ« madh backend-esh pĂ«r ruajtje, midis tĂ« cilave ka magazinim lokal, scp, S3 dhe shumĂ« mĂ« tepĂ«r. Duhet tĂ« theksohet veçanĂ«risht se ka njĂ« rest-server pĂ«r restic, i cili lejon eksportimin mĂ« tĂ« shpejtĂ« tĂ« magazinĂ«s pĂ«r pĂ«rdorim tĂ« largĂ«t. Nga tĂ« gjitha tĂ« pĂ«rmendurat mĂ« pĂ«lqeu mĂ« shumĂ«. Mund tĂ« bĂ«jĂ« backup nga stdin. Praktikisht nuk ka disavantazhe tĂ« dukshme, por ka disa veçori:

  • SĂ« pari, provova ta pĂ«rdor atĂ« nĂ« modalitetin e repository-t tĂ« pĂ«rbashkĂ«t pĂ«r tĂ« gjitha makinat virtuale (si Benji) dhe kjo edhe funksionoi mjaft mirĂ«, por operacionet e rikuperimit zgjatĂ«n shumĂ«, pasi çdo herĂ« para rikuperimit restic pĂ«rpiqet tĂ« lexojĂ« metadata tĂ« tĂ« gjithĂ« backup-eve. Ky problem u zgjidh lehtĂ«sisht ashtu si me borg, duke krijuar njĂ« repository tĂ« veçantĂ« pĂ«r çdo makinĂ« virtuale. Ky qasje u tregua shumĂ« efektive gjithashtu pĂ«r menaxhimin e backup-eve. Repository-t e veçanta mund tĂ« kenĂ« njĂ« fjalĂ«kalim tĂ« veçantĂ« pĂ«r qasje nĂ« tĂ« dhĂ«na, dhe gjithashtu ne mund tĂ« mos kemi frikĂ« se repository globale mund tĂ« prishet ndonjĂ«herĂ«. TĂ« krijosh repository tĂ« rinj Ă«shtĂ« gjithashtu kaq e thjeshtĂ« sa nĂ« borg backup.

    Në çdo rast, deduplifikimi bëhet vetëm në lidhje me versionin e mëparshëm të kopjes së rezervës, versioni i mëparshëm i kopjes së rezervës përcaktohet nga path për kopjen e specifikuar, prandaj, nëse bëni kopje rezervë të objekteve të ndryshme nga stdin në një depo të përbashkët, mos harroni të specifikoni opsionin --stdin-filename, ose ta specifikoni çdo herë në mënyrë endÚhe --parent.

  • SĂ« dyti, rikthimi nĂ« stdout zĂ« mĂ« shumĂ« kohĂ« se rikthimi nĂ« sistemin e skedarĂ«ve pĂ«r shkak tĂ« paralelĂ«sisĂ« sĂ« tij. NĂ« tĂ« ardhmen, planifikohet tĂ« shtohet mbĂ«shtetje mĂ« e ngushtĂ« pĂ«r kopjet rezervĂ« tĂ« pajisjeve bllok.

  • SĂ« treti, aktualisht rekomandohet tĂ« pĂ«rdorni versionin nga master, sepse versioni 0.9.6 ka njĂ« defekt me rikthimin e gjatĂ« tĂ« skedarĂ«ve tĂ« mĂ«dhenj.

Për të testuar efikasitetin e kopjes rezervë dhe shpejtësinë e shkrimit / rikthimit nga kopja rezervë, krijova një depo të veçantë dhe provoja të bëja kopje rezervë të një imazhi të vogël të makinës virtuale (21 GB). U kryen dy kopje rezervë pa ndryshuar origjinalin, duke përdorur secilin nga zgjidhjet e renditura për të testuar se sa më shpejt / më ngadalë kopjohen të dhënat e deduplikuara.

Depo i back-up për mijëra makinash virtuale me mjete të lira

Siç e vërejmë, Borg Backup ka koeficientin më të lartë të efikasitetit për kopjen e parë rezervë, por humbet për sa i përket shpejtësisë së shkrimit dhe rikthimit.

Restic doli të jetë më i shpejtë se Benji Backup, por rikthen më gjatë në stdout, dhe të shkruajë drejtpërdrejt në pajisjen bllok, për fat të keq, deri tani nuk di.

Pas peshoj gjithçka në pro dhe kundra, vendosa të ndalem te restic me rest-server si zgjidhja më e rehatshme dhe e perspektivës për kopje rezervë.

Depo i back-up për mijëra makinash virtuale me mjete të lira

Në këtë skrinj të filmimit mund të shihni si kanali 10-gigabit plotësisht shfrytëzohet në disa operacione të kopjave rezervë që përfundojnë njëkohësisht. Vlen të përmendet se shfrytëzimi i disqeve gjatë kësaj nuk kalon 30%.

Ishte një zgjidhje me të cilën isha më shumë se i kënaqur!

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster