
Përshëndetje, kohët e fundit më ra në dorë një detyrë interesante për të konfiguruar një ruajtje për backup-in e një sërë të madhe të pajisjeve blok.
Ădo javĂ« ne bĂ«jmĂ« kopje rezervĂ« tĂ« tĂ« gjitha makinave virtuale nĂ« cloud-in tonĂ«, kĂ«shtu qĂ« duhet tĂ« jemi nĂ« gjendje tĂ« menaxhojmĂ« mijĂ«ra kopje rezervĂ« dhe ta bĂ«jmĂ« kĂ«tĂ« sa mĂ« shpejt dhe efikasht.
Fatkeqësisht, konfigurimet standarde RAID5, RAID6 në këtë rast nuk na përshtaten për shkak se procesi i rikuperimit në disqe të tillë të mëdhenj si tonat do të ishte shumë i gjatë dhe me siguri nuk do të përfundojë kurrë.
Le të shqyrtojmë cilat janë alternativat:
â Analogu i RAID5, RAID6, por me njĂ« nivel tĂ« konfigurueshĂ«m pariteti. NĂ« kĂ«tĂ« rast, rezervimi nuk bĂ«het pĂ«r çdo blok, por pĂ«r secilin objekt veçmas. MĂ«nyra mĂ« e thjeshtĂ« pĂ«r tĂ« provuar erasure coding Ă«shtĂ« tĂ« vendosni .
â kjo Ă«shtĂ« njĂ« mundĂ«si qĂ« nuk Ă«shtĂ« lĂ«shuar ende pĂ«r ZFS. Ndryshe nga RAIDZ, DRAID ka njĂ« paritet tĂ« shpĂ«rndarĂ« dhe gjatĂ« rikuperimit angazhon menjĂ«herĂ« tĂ« gjitha disqet e grumbullit, duke e bĂ«rĂ« atĂ« mĂ« tĂ« qĂ«ndrueshĂ«m ndaj dĂ«shtimeve tĂ« disqeve dhe mĂ« tĂ« shpejtĂ« nĂ« rikuperim pas njĂ« defekti.


Në dispozicion kemi një server Fujitsu Primergy RX300 S7 me procesor Intel Xeon CPU E5-2650L 0 @ 1.80GHz, me nëntë modulet e memories Samsung DDR3-1333 8Gb PC3L-10600R ECC Registered (M393B1K70DH0-YH9), raft diskesh Supermicro SuperChassis 847E26-RJBOD1, i lidhur përmes Dual LSI SAS2X36 Expander dhe 45 disqe Seagage ST6000NM0115-1YZ110 për 6TB çdo.
Para se të marrim vendime, na nevojitet të testojmë gjithçka siç duhet.
Për këtë, u përgatita dhe kreva teste të konfiguracioneve të ndryshme. Përdora minio, i cili shërbeu si një backend S3 dhe e drejtoja në mënyra të ndryshme me numra të ndryshëm targetesh.
Këtu kryesisht u testua rasti i minio në kodimin e shkatërrimit në krahasim me RAID-në softuerike me të njëjtin numër disqesh dhe disqe pariteti, të cilat janë: RAID6, RAIDZ2 dhe DRAID2.
Për referencë: kur e drejtoni minion me një vetëm target, atëherë minio funksionon në modalitetin S3-gateway duke ju dhënë sistemin tuaj lokal të skedarëve si një ruajtje S3. Nëse e drejtoni minion me shumë targete, modaliteti i Kodimit të Shkatërrimit aktivizohet automatikisht, i cili do të shpërndajë të dhënat midis targeteve tuaja duke ofruar qëndrushmëri ndaj dështimeve.
Në mënyrë standarde, minio ndan qëllimet në grupe prej 16 disqesh, ku çdo grup ka 2 paritet. Kjo do të thotë që dy disqe mund të dështojnë në të njëjtën kohë pa humbje të të dhënave.
Për testimin e performancës, përdora 16 disqe me nga 6TB secili dhe shkruaja objekte të vogla me madhësi 1MB, kjo përshkruante me saktësi ngarkesën tonë të ardhshme, pasi të gjithë mjetet moderne për backup ndaj të dhënave i ndajnë ato në blloqe disa megabajtesh dhe i shkruajnë në këtë mënyrë.
Për kryerjen e bënchmarkut u përdor utilitari s3bench, i cili u ekzekutua në një server të largët dhe dërgonte në minio dhjetëra mijëra objekte të tilla në një qind rrjedha. Pasi që u përpoq të kërkonte ato përsëri në të njëjtën mënyrë.
Rezultatet e bënchmarkut janë në tabelën e mëposhtme:

Siç e shohim, minio në modin e vet erasure coding punon ndjeshëm më keq në shkrim, se sa minio i lançuar mbi RAID6 softueror, RAIDZ2 dhe DRAID2 në të njëjtën konfigurim.
Veçmas, unĂ« tĂ« testoja minio mbi ext4 vs XFS. ĂuditĂ«risht, pĂ«r llojin tim tĂ« ngarkesĂ«s, XFS rezultoi tĂ« ishte ndjeshĂ«m mĂ« e ngadaltĂ« se ext4.
Në grupin e parë të testeve, Mdadm tregoi përparësi mbi ZFS, por më vonë , se mund të përmirësoj performancën e ZFS duke vendosur opsionet e mëposhtme:
xattr=sa atime=off recordsize=1Mdhe pas kësaj testet me ZFS u përmirësuan nd significantlyeshëm.
Gjithashtu, mund të vërehet se DRAID nuk ofron ndonjë përfitim të veçantë në performancë krahasuar me RAIDZ, por në teori duhet të jetë shumë më i sigurt.
Në dy testet e fundit, përpiqesha gjithashtu të shpërngulja metadatat (special) dhe ZIL (log) në një pasqyrë nga SSD. Por shpërngulja e metadatat nuk dha ndonjë përfitim të dukshëm në shpejtësinë e shkruajtur, dhe kur shpërngulja e ZIL, unë u ndesha me një kufi me 100% të përdorimit, kështu që unë e konsideroj këtë test si të dështuar. Nuk përjashtoj që po të kisha SSD më të shpejtë, ndoshta kjo do të përmirësonte ndjeshëm rezultatet e mia, por fatkeqësisht nuk i kisha.
Në fund, vendosa të ndalem në përdorimin e DRAID dhe pavarësisht statusit të tij beta, ai është zgjidhja më e shpejtë dhe efikase për ruajtje në rastin tonë.
Krijova një DRAID2 të thjeshtë në konfigurimin me tre grupe dhe dy rezervat e 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 errorsMirë, me ruajtjen u merret, tani për atë se çfarë do të bënë backup. Këtu menjëherë do të doja të flisja për tri zgjidhje që arrin të provoj, dhe ato janë:
â fork , njĂ« zgjidhje e specializuar pĂ«r backup-in e pajisjeve bllokuese, ka njĂ« integrim tĂ« ngushtĂ« me Ceph. Mund tĂ« marrĂ« diferencat midis snapshot-eve dhe tĂ« formojĂ« njĂ« backup inkremental prej tyre. MbĂ«shtet njĂ« numĂ«r tĂ« madh backend-esh pĂ«r ruajtjen, mes tĂ« cilave ka si lokale ashtu edhe S3. KĂ«rkon njĂ« bazĂ« tĂ« veçantĂ« tĂ« dhash, pĂ«r tĂ« ruajtur tabelĂ«n e heshave pĂ«r deduplication. Nga disavantazhet: Ă«shtĂ« shkruar nĂ« python, ka njĂ« interface CLI disi jo tĂ« pĂ«rgjegjshĂ«m.
â fork , njĂ« mjet i njohur dhe i provuar pĂ«r backup, mund tĂ« bĂ«jĂ« backup tĂ« tĂ« dhĂ«nave dhe i deduplication ato mirĂ«. Mund tĂ« ruajĂ« backup-et si lokalisht ashtu edhe nĂ« njĂ« server tĂ« largĂ«t pĂ«rmes scp. Mund tĂ« bĂ«jĂ« backup tĂ« pajisjeve bllokuese nĂ«se ekzekutohet me flagun --special, nga disavantazhet: kur krijohet njĂ« backup, repository plotĂ«sisht bllokohet, prandaj pĂ«r çdo makinĂ« virtuale rekomandohet tĂ« krijohet njĂ« repository i veçantĂ«, nĂ« parim kjo nuk Ă«shtĂ« njĂ« problem, pasi ato krijohen shumĂ« lehtĂ«.
â njĂ« projekt nĂ« rritje aktiv, i shkruar nĂ« go, mjaft i shpejtĂ« dhe mbĂ«shtet njĂ« numĂ«r tĂ« madh backend-esh pĂ«r ruajtje, pĂ«rfshirĂ« si ruajtjen lokale ashtu edhe scp, S3 dhe shumĂ« tĂ« tjera. Vlen tĂ« theksohet se ka njĂ« e krijuar posaçërisht pĂ«r restic, e cila lejon eksportimin mĂ« tĂ« shpejtĂ« tĂ« ruajtjes pĂ«r pĂ«rdorim tĂ« largĂ«t. Nga tĂ« gjitha tĂ« mĂ«sipĂ«rmet, mĂ« pĂ«lqeu mĂ« shumĂ«. Mund tĂ« bĂ«jĂ« backup nga stdin. Nuk ka disavantazhe tĂ« dukshme, por ka disa veçori:
Së pari, kam provuar ta përdor këtë në mënyrë të përgjithshme për të gjitha virtualet (si Benji) dhe kjo përveç se punoi mirë, operacionet e rikuperimit zgjatën mjaft gjatë, pasi çdo herë para rikuperimit, restic përpiqet të lexojë metadata-t e të gjitha backup-eve. Ky problem u zgjidh lehtësisht, si me borg, duke krijuar një depo të veçantë për secilën virtuale. Ky qasje doli të ishte shumë efektiv gjithashtu për menaxhimin e kopjeve rezervë. Depo të veçanta mund të kenë një fjalëkalim të veçantë për qasje në të dhëna dhe gjithashtu mund të mos kemi frikë se depo globale mund të dështojë ndonjëherë. Krijimi i depot të reja është po aq i lehtë sa në borg backup.
Në çdo rast, deduplication bëhet vetëm në raport me versionin e mëparshëm të backup-it, backup-i i mëparshëm përcaktohet nga path për backup-in e caktuar, kështu që nëse po backuponi objekte të ndryshme nga stdin në një depo të përbashkët, mos harroni të shënoni opsionin
--stdin-filename, ose të shënoni qartë çdo herë opsionin--parent.
Në anën tjetër, rikthimi në stdout merr shumë më tepër kohë sesa rikthimi në sistemin e skedarëve për shkak të paraleleve të tij. Në të ardhmen, është planifikuar të shtohet mbështetje më e ngushtë për backup-et për pajisjet bllok.
Në anën e tretë, për momentin rekomandohet të përdoret , pasi versioni 0.9.6 ka një defekt me rikthimin e ngadaltë të skedave të mëdhenj.
Për të testuar efektivitetin e backup-it dhe shpejtësinë e shkrimit / rikthimit nga rezervimi, krijova një repository të veçantë dhe provoja të bënte backup një imazh të vogël të makinerisë virtuale (21 GB). U kryen dy backup-e pa ndryshuar origjinalin, duke përdorur secilën nga zgjidhjet e listuara për të verifikuar se sa më shpejt / ngadalë kopjohen të dhënat e deduplikuara.

Siç mund të vërejmë, Borg Backup ka koeficientin më të mirë të efikasitetit në backup-in e parë, por humbet në shpejtësi si në shkrim ashtu dhe në rikthim.
Restic u tregua më i shpejtë se Benji Backup, por rikthen ngadalë në stdout, dhe të shkruajë drejtpërdrejt në pajisjen bllok, për fat të keq, nuk e di ende.
Pas pesha të gjitha pro dhe kundra, vendosa të ndalem në restic me rest-server si zgjidhja më komode dhe premtuese për backup.
Në këtë skrin kast ju mund të shihni si një kanali 10-gigabit shfrytëzohet plotësisht gjatë disa operacioneve të backup-it që bëhen njëkohësisht. Vlen të theksohet se shfrytëzimi i diskëve gjatë kësaj kohe nuk kalon 30%.
Jam shumë i kënaqur me zgjidhjen e marrë!
Burimi: habr.com
