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.

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

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ā:

Rezerves krātuve tūkstoŔiem virtuālo maŔīnu, izmantojot bezmaksas rīkus

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ļikovs ieteiktska 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:

# 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

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.

Rezerves krātuve tūkstoŔiem virtuālo maŔīnu, izmantojot bezmaksas rīkus

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.

Rezerves krātuve tūkstoŔiem virtuālo maŔīnu, izmantojot bezmaksas rīkus

Å 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!

Avots: www.habr.com

Pievieno komentāru