ProHoster > Blogs > AdministrÄcija > Rezerves krÄtuve tÅ«kstoÅ”iem virtuÄlo maŔīnu, izmantojot bezmaksas rÄ«kus
Rezerves krÄtuve tÅ«kstoÅ”iem virtuÄlo maŔīnu, izmantojot bezmaksas rÄ«kus
Sveiki, nesen saskÄros ar interesantu problÄmu: krÄtuves iestatÄ«Å”ana liela skaita blokierÄ«Äu dublÄÅ”anai.
Katru nedÄļu mÄs dublÄjam visas mÅ«su mÄkonÄ« esoÅ”Äs virtuÄlÄs maŔīnas, tÄpÄc mums ir jÄspÄj uzturÄt tÅ«kstoÅ”iem dublÄjumu un darÄ«t to pÄc iespÄjas ÄtrÄk un efektÄ«vÄk.
DiemžÄl standarta konfigurÄcijas RAID5, RAID6 Å”ajÄ gadÄ«jumÄ mÄs to nedrÄ«kstam darÄ«t, jo atkopÅ”anas process tik lielos diskos kÄ mÅ«sÄjais bÅ«s sÄpÄ«gi garÅ” un, visticamÄk, nekad nebeigsies.
ApskatÄ«sim, kÄdas ir alternatÄ«vas:
DzÄÅ”anas kodÄÅ”ana ā LÄ«dzÄ«gi kÄ RAID5, RAID6, bet ar konfigurÄjamu paritÄtes lÄ«meni. Å ajÄ gadÄ«jumÄ rezervÄÅ”ana tiek veikta nevis bloku pa blokam, bet katram objektam atseviŔķi. VienkÄrÅ”Äkais veids, kÄ izmÄÄ£inÄt dzÄÅ”anas kodÄÅ”anu, ir paplaÅ”inÄt Minio.
DRAIDS ir paÅ”laik neizlaista ZFS funkcija. AtŔķirÄ«bÄ no RAIDZ, DRAID ir sadalÄ«ts paritÄtes bloks un atkopÅ”anas laikÄ izmanto visus masÄ«va diskus vienlaikus, kas ļauj labÄk pÄrdzÄ«vot diska kļūmes un ÄtrÄk atgÅ«ties pÄc kļūmes.
Serveris pieejams Fujitsu Primegy RX300 S7 ar procesoru Intel Xeon CPU E5-2650L 0 @ 1.80 GHz, deviÅas RAM Samsung DDR3-1333 8Gb PC3L-10600R ECC reÄ£istrÄts (M393B1K70DH0-YH9), disku plaukts Supermicro SuperChassis 847E26-RJBOD1, savienots, izmantojot DivkÄrÅ”s LSI SAS2X36 paplaÅ”inÄtÄjs un 45 diski Seagage ST6000NM0115-1YZ110 par 6TB visiem.
Pirms kaut ko izlemjam, mums vispirms viss ir pareizi jÄpÄrbauda.
Lai to izdarÄ«tu, sagatavoju un pÄrbaudÄ«ju dažÄdas konfigurÄcijas. Lai to izdarÄ«tu, es izmantoju minio, kas darbojÄs kÄ S3 aizmugure un palaida to dažÄdos režīmos ar dažÄdu mÄrÄ·u skaitu.
BÅ«tÄ«bÄ minio korpuss tika pÄrbaudÄ«ts dzÄÅ”anas kodÄÅ”anas un programmatÅ«ras reidÄ ar tÄdu paÅ”u disku skaitu un disku paritÄti, un tie ir: RAID6, RAIDZ2 un DRAID2.
UzziÅai: palaižot minio tikai ar vienu mÄrÄ·i, minio darbojas S3 vÄrtejas režīmÄ, nodroÅ”inot jÅ«su vietÄjo failu sistÄmu S3 krÄtuves veidÄ. Ja palaižat minio, norÄdot vairÄkus mÄrÄ·us, automÄtiski ieslÄgsies dzÄÅ”anas kodÄÅ”anas režīms, kas izplatÄ«s datus starp jÅ«su mÄrÄ·iem, vienlaikus nodroÅ”inot kļūdu toleranci.
PÄc noklusÄjuma minio sadala mÄrÄ·us grupÄs pa 16 diskiem ar 2 paritÄtÄm katrÄ grupÄ. Tie. Divi diski var sabojÄties vienlaikus, nezaudÄjot datus.
Lai pÄrbaudÄ«tu veiktspÄju, es izmantoju 16 diskus pa 6 TB un ierakstÄ«ju uz tiem mazus objektus 1 MB lielumÄ, tas visprecÄ«zÄk raksturoja mÅ«su turpmÄko slodzi, jo visi mÅ«sdienu dublÄÅ”anas rÄ«ki sadala datus vairÄku megabaitu blokos un ieraksta tos Å”ÄdÄ veidÄ.
Lai veiktu etalonu, mÄs izmantojÄm utilÄ«tu s3bench, kas tika palaists attÄlajÄ serverÄ« un simtiem pavedienu nosÅ«tÄ«ja uz minio desmitiem tÅ«kstoÅ”u Å”Ädu objektu. PÄc tam es mÄÄ£inÄju tos pieprasÄ«t atpakaļ tÄdÄ paÅ”Ä veidÄ.
Etalona rezultÄti ir parÄdÄ«ti Å”ajÄ tabulÄ:
KÄ redzam, minio savÄ dzÄÅ”anas kodÄÅ”anas režīmÄ rakstÄ«Å”anas režīmÄ darbojas ievÄrojami sliktÄk nekÄ minio, kas darbojas uz programmatÅ«ras RAID6, RAIDZ2 un DRAID2 tajÄ paÅ”Ä konfigurÄcijÄ.
AtseviŔķi es prasÄ«ja pÄrbaudiet minio uz ext4 vs XFS. PÄrsteidzoÅ”i, bet manam darba veidam XFS izrÄdÄ«jÄs ievÄrojami lÄnÄks nekÄ ext4.
PirmajÄ testu sÄrijÄ Mdadm parÄdÄ«ja pÄrÄkumu pÄr ZFS, bet vÄlÄk gmeļikovsieteiktska varat uzlabot ZFS veiktspÄju, iestatot Å”Ädas opcijas:
xattr=sa atime=off recordsize=1M
un pÄc tam testi ar ZFS kļuva daudz labÄki.
Varat arÄ« atzÄ«mÄt, ka DRAID nenodroÅ”ina lielu veiktspÄjas pieaugumu salÄ«dzinÄjumÄ ar RAIDZ, taÄu teorÄtiski tam vajadzÄtu bÅ«t daudz droÅ”Äkam.
PÄdÄjos divos testos es arÄ« mÄÄ£inÄju pÄrsÅ«tÄ«t metadatus (speciÄlos) un ZIL (log) uz spoguli no SSD. Bet metadatu noÅemÅ”ana nedeva lielu pieaugumu ierakstÄ«Å”anas ÄtrumÄ, un, noÅemot ZIL, mans SSDSC2KI128G8 trÄpÄ«ja griestos ar 100% noslodzi, tÄpÄc uzskatu Å”o testu par neveiksmi. Es neizslÄdzu, ka, ja man bÅ«tu ÄtrÄki SSD diskdziÅi, iespÄjams, tas varÄtu ievÄrojami uzlabot manus rezultÄtus, bet diemžÄl man to nebija.
Galu galÄ es nolÄmu izmantot DRAID, un, neskatoties uz tÄ beta statusu, tas ir ÄtrÄkais un efektÄ«vÄkais uzglabÄÅ”anas risinÄjums mÅ«su gadÄ«jumÄ.
Es izveidoju vienkÄrÅ”u DRAID2 konfigurÄcijÄ ar trim grupÄm un divÄm izplatÄ«tÄm rezerves daļÄm:
Labi, esam sakÄrtojuÅ”i krÄtuvi. Tagad parunÄsim par to, ko dublÄsim. Å eit es gribÄtu nekavÄjoties runÄt par trim risinÄjumiem, kurus man izdevÄs izmÄÄ£inÄt, un tie ir:
Benji dublÄjums - dakÅ”a Backy2, specializÄts risinÄjums bloku ierÄ«Äu dublÄÅ”anai, ir cieÅ”i integrÄts ar Ceph. Var veikt atŔķirÄ«bas starp momentuzÅÄmumiem un veidot no tiem papildu dublÄjumu. Atbalsta lielu skaitu krÄtuves aizmugursistÄmas, tostarp gan vietÄjÄs, gan S3. NepiecieÅ”ama atseviŔķa datu bÄze, lai saglabÄtu dedublikÄcijas jaucÄjtabulu. TrÅ«kumi: rakstÄ«ts python valodÄ, ir nedaudz nereaÄ£ÄjoÅ”s klips.
Borgs dublÄjums - dakÅ”a BÄniÅi, sen zinÄms un pÄrbaudÄ«ts dublÄÅ”anas rÄ«ks, var dublÄt datus un labi tos noÅemt. Var saglabÄt dublÄjumus gan lokÄli, gan attÄlajÄ serverÄ«, izmantojot scp. Var dublÄt ierÄ«ces, ja tÄs tiek palaistas ar karogu --special, viens no mÄ«nusiem: veidojot dublÄjumu, repozitorijs tiek pilnÄ«bÄ bloÄ·Äts, tÄpÄc ieteicams katrai virtuÄlajai maŔīnai izveidot atseviŔķu repozitoriju, principÄ tÄ nav problÄma, par laimi tie tiek izveidoti ļoti vienkÄrÅ”i.
AtpÅ«ta ir aktÄ«vi attÄ«stÄs projekts, rakstÄ«ts go, diezgan Ätrs un atbalsta lielu skaitu krÄtuves aizmugursistÄmas, tostarp vietÄjo krÄtuvi, scp, S3 un daudz ko citu. AtseviŔķi vÄlos atzÄ«mÄt, ka ir Ä«paÅ”i izveidota atpÅ«tas serveris restic, kas ļauj Ätri eksportÄt krÄtuvi izmantoÅ”anai attÄlinÄti. No visa iepriekÅ” minÄtÄ man tas patika visvairÄk. Var dublÄt no stdin. Tam gandrÄ«z nav pamanÄmu trÅ«kumu, taÄu ir vairÄkas funkcijas:
PirmkÄrt, es mÄÄ£inÄju to izmantot vispÄrÄjÄ repozitorija režīmÄ visÄm virtuÄlajÄm maŔīnÄm (piemÄram, Benji) un tas pat darbojÄs diezgan labi, taÄu atjaunoÅ”anas darbÄ«bas aizÅÄma ļoti ilgu laiku, jo... Katru reizi pirms atjaunoÅ”anas restic mÄÄ£ina nolasÄ«t visu dublÄjumu metadatus. Å o problÄmu bija viegli atrisinÄt, tÄpat kÄ ar borg, izveidojot atseviŔķu repozitoriju katrai virtuÄlajai maŔīnai. Å Ä« pieeja ir izrÄdÄ«jusies ļoti efektÄ«va arÄ« dublÄjumu pÄrvaldÄ«Å”anai. AtseviŔķÄm krÄtuvÄm var bÅ«t atseviŔķa parole, lai piekļūtu datiem, un mums arÄ« nav jÄbaidÄs, ka globÄlais repo varÄtu kaut kÄ sabojÄt. JÅ«s varat izveidot jaunas krÄtuves tikpat viegli kÄ borg dublÄjumkopijÄ.
JebkurÄ gadÄ«jumÄ dublÄÅ”anas atcelÅ”ana tiek veikta tikai attiecÄ«bÄ pret iepriekÅ”Äjo dublÄjuma versiju; iepriekÅ”Äjo dublÄjumu nosaka norÄdÄ«tÄs dublÄjuma ceļŔ, tÄdÄļ, ja dublÄjat dažÄdus objektus no stdin kopÄjÄ repozitorijÄ, neaizmirstiet norÄdÄ«t opciju --stdin-filenamevai katru reizi skaidri norÄdiet opciju --parent.
OtrkÄrt, atkopÅ”ana uz stdout prasa daudz ilgÄku laiku nekÄ failu sistÄmas atkopÅ”ana tÄs paralÄlÄ rakstura dÄļ. NÄkotnÄ mÄs plÄnojam pievienot cieÅ”Äku atbalstu bloku ierÄ«Äu dublÄÅ”anai.
TreÅ”kÄrt, paÅ”laik ir ieteicams izmantot versija no meistara, jo VersijÄ 0.9.6 ir kļūda ar ilgu lielu failu atkopÅ”anu.
Lai pÄrbaudÄ«tu dublÄÅ”anas efektivitÄti un rakstÄ«Å”anas / atjaunoÅ”anas Ätrumu no dublÄjuma, es izveidoju atseviŔķu repozitoriju un mÄÄ£inÄju dublÄt nelielu virtuÄlÄs maŔīnas attÄlu (21 GB). Tika veiktas divas dublÄjumkopijas, nemainot oriÄ£inÄlu, izmantojot katru no uzskaitÄ«tajiem risinÄjumiem, lai pÄrbaudÄ«tu, cik ÄtrÄk/lÄnÄk tika kopÄti dedublÄtie dati.
KÄ redzam, Borg Backup ir labÄkais sÄkotnÄjÄs dublÄÅ”anas efektivitÄtes koeficients, taÄu tas ir zemÄks gan rakstÄ«Å”anas, gan atjaunoÅ”anas Ätruma ziÅÄ.
Restic izrÄdÄ«jÄs ÄtrÄks nekÄ Benji Backup, taÄu tas prasa ilgÄku laiku, lai atjaunotu stdout, un diemžÄl tas vÄl nezina, kÄ rakstÄ«t tieÅ”i bloka ierÄ«cÄ.
IzsvÄrusi visus plusus un mÄ«nusus, nolÄmu samierinÄties restic Ń atpÅ«tas serveris kÄ ÄrtÄko un daudzsoloÅ”Äko rezerves risinÄjumu.
Å ajÄ ekrÄnuzÅÄmumÄ varat redzÄt, kÄ 10 gigabitu kanÄls tiek pilnÄ«bÄ izmantots vairÄku dublÄÅ”anas darbÄ«bu laikÄ, kas darbojas vienlaikus. Ir vÄrts atzÄ«mÄt, ka disku pÄrstrÄde nepÄrsniedz 30%.
Es biju vairÄk nekÄ apmierinÄts ar saÅemto risinÄjumu!