
Tere, hiljuti sattusin huvitavale ĂŒlesandele seadistada salvestusruum suure hulga plokkseadmete varukoopiate jaoks.
Igal nÀdalal teeme varukoopiaid kÔigist virtuaalmasinatest meie pilves, seega peab olema suutlik hallata tuhandeid varukoopiaid ja teha seda vÔimalikult kiiresti ja tÔhusalt.
Kahjuks ei sobi tavalised konfiguratsioonid RAID5, RAID6 antud juhul meile ei sobi, kuna nende suurte ketaste nagu meie omad taastamisprotsess on vaevarikas ja tÔenÀoliselt ei lÔpe kunagi.
Vaatame, millised alternatiivid on:
â RAID5, RAID6 analoog, kuid konfigureeritava pariteedi tasemega. Varundamine toimub mitte plokkide kaupa, vaid iga objekti kaupa eraldi. Lihtsaim viis proovida erasure codingâut on kĂ€ivitada .
â see on hetkel veel vĂ€ljaandmata ZFS funktsioon. Erinevalt RAIDZ-st, DRAID-l on jaotatud pariteediblock ja taastamise ajal kaasab see kohe kĂ”ik massiivi kettad, mis talub paremini kettaidĂ”rkeid ja taastub kiiremini pĂ€rast tĂ”rke tekkimist.


KĂ€es on server Fujitsu Primergy RX300 S7 Intel Xeon CPU E5-2650L 0 @ 1.80GHz protsessoriga , ĂŒheksa RAM-moodulitSamsung DDR3-1333 8Gb PC3L-10600R ECC registreeritud (M393B1K70DH0-YH9) , ketta riiulSupermicro SuperChassis 847E26-RJBOD1 , ĂŒhendatud lĂ€biDual LSI SAS2X36 laiendaja ja 45 ketast Seagate ST6000NM0115-1YZ110 igaĂŒks 6TB igaĂŒhe. Enne kui midagi otsustame, peame kĂ”ik korralikult testima.
Selleks olen valmistunud ja viinud lĂ€bi erinevate konfiguratsioonide testimise. Selleks kasutasin minioât, mis toimis S3-tagasiĂŒhenduse jaoks ja kĂ€ivitati erinevates reĆŸiimides erineva arvu sihtidega.
Peamiselt testiti minio juhtumit erasure coding vs tarkvara RAID sama ketaste ja pariteedi ketaste arvu puhul, nimelt: RAID6, RAIDZ2 ja DRAID2.
Teave: kui kĂ€ivitate minio ĂŒhe ainsa sihtmĂ€rgiga, töötab minio S3 vĂ€ravana, andes teie kohaliku failisĂŒsteemi S3-salvestusena. Kui aga kĂ€ivitate minio mitme sihtmĂ€rgiga, aktiveeritakse automaatselt Erasure Coding reĆŸiim, mis jaotab andmed teie sihtmĂ€rkide vahel, tagades talitlushĂ€irete taluvuse.
Teadmiseks: kui kĂ€ivitate minio vaid ĂŒhe sihtmĂ€rgiga, töötab minio S3-lĂ€bipÀÀsu reĆŸiimis, andes teie kohaliku failisĂŒsteemi S3-hoidina. Kuid juhul, kui kĂ€ivitate minio mitme sihtmĂ€rgiga, aktiveeritakse automaatselt Erasure Coding reĆŸiim, mis jaotab andmed teie sihtkohtade vahel, pakkudes talitlushĂ€iret tolerantsust.
Vaikimisi jagab minio sihtkohtadesse 16 ketta rĂŒhmadesse, kus igas grupis on 2 pariteeti. See tĂ€hendab, et kaks ketast vĂ”ivad korraga rikki minna ilma andmete kaotamata.
JĂ”udluse testimiseks kasutasin 16 ketast, igaĂŒks 6TB, ja kirjutasin neile vĂ€ikeseid objekte, mille suurus oli 1MB, mis tĂ€pselt kirjeldas meie tulevast koormust, kuna kĂ”ik kaasaegsed varundustööriistad jagavad andmeid mitme megabaidi suuruste plokkideks ja kirjutavad neid nii.
BĂ€nĆĄmarkimiseks kasutati tööriista s3bench, mis kĂ€ivitati eemalserveris ja saatis miniosse kĂŒmneid tuhandeid selliseid objekte sada voogu. PĂ€rast seda ĂŒritas ta neid samamoodi tagasi nĂ”uda.
BÀnƥmarkimise tulemused on esitatud jÀrgmises tabelis:

NĂ€eme, et minio oma erasure coding reĆŸiimis töötab kirjutamisel mĂ€rkimisvÀÀrselt halvemini kui minio, mis on loodud tarkvara RAID6, RAIDZ2 ja DRAID2 peal sama konfiguratsiooni raames.
Erakordselt paluti mind miniot ext4 vs XFS. Ăllatavalt, kuid minu koormuse puhul osutus XFS oluliselt aeglasemaks kui ext4.
Esimeses testierias nĂ€itas Mdadm ZFS-i ees ĂŒletust, kuid hiljem , et ZFS-i jĂ”udlust saaks parandada, seades jĂ€rgmised valikud:
xattr=sa atime=off recordsize=1Mja pÀrast seda paranesid ZFS-i testid oluliselt.
Samuti vÔib tÀheldada, et DRAID ei too eriti suurt jÔudluse kasu RAIDZ ees, kuid teoorias peaks see olema palju turvalisem.
Viimastes kahes testis pĂŒĂŒdsin samuti andmefailid (special) ja ZIL (log) tuua SSD peegeldusele. Kuid andmematerjalide ĂŒlekanne ei toonud eriliselt kiiret kirjutamise kasu, kuid ZIL-i eemaldamisel silmusime 100% kasutuse piirides, nii et pean seda testi ebaĂ”nnestunuks. Ma ei vĂ€lista, et kui mul oleks olnud kiiremaid SSD-d, oleks see minu tulemusi tĂ”siselt parandanud, kuid kahjuks ei olnud neid mul.
KokkuvÔttes otsustasin jÀÀda DRAIDi kasutamisele ja hoolimata oma beetastaatusest on see meie jaoks kÔige kiirem ja tÔhusam lahendus andmete salvestamiseks.
Loomisin lihtsa DRAID2 konfiguratsiooni koos kolme grupiga ja kahe jaotatud varu:
# 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 errorsNii, nĂŒĂŒd oleme salvestamisega hakkama saanud, rÀÀgime, millega me varundame. Siin tahaks kohe rÀÀkida kolmest lahendusest, mida mul oli vĂ”imalus proovida, nimelt:
â fork , spetsialiseeritud lahendus plokkseadmestike varundamiseks, omab tihedat integratsiooni Cephiga. Suudab vĂ”tta vahepealsed muudatused snapshot'ide vahel ja vormida neist inkrementaalse varukoopia. Toetab suurt hulka salvestusbackend'e, sealhulgas nii kohalikke kui ka S3 lahendusi. NĂ”uab deduplikeerimise hĂ€shtabeli salvestamiseks eraldi andmebaasi. Miinustest: on kirjutatud Pythonis ja tal on veidi mitte-reaktiivne CLI.
â fork , pikka aega tuntud ja tĂ”estatud lahendus varundamiseks, suudab andmeid varundada ja hĂ€sti deduplikerida. Suudab salvestada varukoopiad nii kohalikult kui ka kaugserverisse lĂ€bi SCP. Suudab varundada plokkseadmeid, kui kĂ€ivitada lippudega --special, miinustest: varukoopia loomisel blokeerib repository tĂ€ielikult, seetĂ”ttu on soovitatav iga virtuaalmasina jaoks luua eraldi repository, see pole aga probleem, kuna need on vĂ€ga kergesti loodud.
â aktiivselt arenev projekt, kirjutatud Go-s, piisavalt kiire ja toetab suurt hulka salvestusbackend'e, sealhulgas nii kohalikke salvestusi kui ka SCP, S3 ja palju muud. Eriti vÀÀrib mainimist, et on loodud restic'i jaoks, mis vĂ”imaldab kĂ”ige kiiremini eksportida salvestust kaugkasutamiseks. KĂ”igist ĂŒlalkirjeldatutest meeldis see mulle kĂ”ige rohkem. Suudab varundada stdin'ist. MĂ€rkimisvÀÀrseid miinuseid peaaegu ei ole, kuid on mitmeid eripĂ€rasid:
Esiteks proovisin seda kasutada ĂŒldise repository reĆŸiimis kĂ”igi virtuaalmasinate jaoks (nagu Benji) ja see töötas isegi hĂ€sti, kuid taastamisprotsessid vĂ”tsid ĂŒsna kaua aega, kuna iga kord enne taastamist proovib restic lugeda kĂ”igi varukoopiate metaandmeid. See probleem lahendus vĂ€ga lihtsalt, nagu ka Borgi puhul, luues iga virtuaalmasina jaoks eraldi repository. See lĂ€henemine osutus samuti varukoopiate haldamisel vĂ€ga efektiivseks. Eraldi repository'd vĂ”ivad omada eraldi parooli andmetele juurdepÀÀsuks, samuti ei pea me kartma, et globaalne repository vĂ”iks kuidagi puruneda. Uute repository'de loomine on samuti sama lihtne kui Borg Backupis.
Igal juhul toimub deduplikeerimine ainult varasema versiooni varunduse suhtes, eelmine varukoopia mÀÀratakse antud varunduse jaoks path'i pĂ”hjal, nii et kui varundate erinevaid objekte stdin'ist ĂŒhisse repositoriumisse, Ă€rge unustage nĂ€idata valikut
--stdin-filename, vÔi öelda valikut igal korral selgelt--parent.
Teiseks, taastamine stdout'i on oluliselt aeglasem kui taastamine failisĂŒsteemi oma paralleelsuse tĂ”ttu. Tulevikus on plaanis lisada tihedam tugi plokkseadmestiku varukoopiatele.
Kolmandaks, hetkel soovitatakse kasutada , kuna versioon 0.9.6-l on tÔrge suurte failide pika taastamise osas.
Varukoopia efektiivsuse ja kirje / taastamise kiirusest testimiseks lÔin eraldi repositoriumi ja proovisin varundada vÀikest virtuaalse masina pilti (21 GB). Tehti kaks varundust ilma originaali muutmata, kasutades iga loetletud lahenduse kÀigus, et uurida, kui palju kiiremini / aeglasemalt deduplikeeritud andmed kopeeritakse.

Kuidas nÀeme, Borg Backup'il on parim algse varukoopia efektiivsuse koefitsient, kuid see kaotab nii kirje kui ka taastamise kiirusel.
Restic osutus kiiremaks kui Benji Backup, kuid taastab stdout'i aeglasemalt, ja kirjutada otse plokkseadmestikku, kahjuks, ta ei oska veel.
Kaaludes kÔiki plusse ja miinuseid, otsustasin jÀÀda restic jot rest-server nagu kÔige mugavam ja perspektiivikam lahendus varukoopiaks.
Selles screencastis vĂ”ite nĂ€ha, kuidas 10-gigabitine kanal on tĂ€ielikult kasutuses mitme samaaegselt kĂ€ivitatud varukoopia operatsiooni ajal. Tasub mĂ€rkida, et kettaruumi kasutus ei tĂ”use ĂŒle 30%.
Saadud lahendusega olen rohkem kui rahul!
Allikas: habr.com
