Bun-bheachdan ZFS: Stòradh agus Coileanadh

Bun-bheachdan ZFS: Stòradh agus Coileanadh

As t-earrach seo tha sinn air cuid de chuspairean tòiseachaidh a dheasbad mar-thà, mar eisimpleir, mar a nì thu sgrùdadh air astar do dhràibhearan и dè a th 'ann an RAID. Anns an dàrna fear dhiubh, gheall sinn eadhon leantainn air adhart a 'sgrùdadh coileanadh diofar topologies ioma-diosg ann an ZFS. Is e seo an ath shiostam faidhle ginealach a tha a-nis ga chur an gnìomh anns a h-uile àite: bho Apple gu Ubuntu.

Uill, is e an-diugh an latha as fheàrr airson eòlas fhaighinn air ZFS, leughadairean fiosrachail. Dìreach fios a bhith agad ann am beachd iriosal leasaiche OpenZFS Matt Ahrens, “tha e gu math duilich.”

Ach mus ruig sinn na h-àireamhan - agus nì iad, tha mi a 'gealltainn - airson a h-uile roghainn airson rèiteachadh ZFS ochd-diosg, feumaidh sinn bruidhinn mu dheidhinn ciamar San fharsaingeachd, bidh ZFS a’ stòradh dàta air diosc.

Zpool, vdev agus inneal

Bun-bheachdan ZFS: Stòradh agus Coileanadh
Tha an diagram làn amar seo a’ toirt a-steach trì vdevs taiceil, aon de gach clas, agus ceithir airson RAIDz2

Bun-bheachdan ZFS: Stòradh agus Coileanadh
Mar as trice chan eil adhbhar ann cruinneachadh de sheòrsan is meudan vdev nach eil cho math a chruthachadh - ach chan eil dad a’ cur stad ort bho bhith a’ dèanamh sin ma thogras tu.

Gus fìor thuigse fhaighinn air siostam faidhle ZFS, feumaidh tu sùil gheur a thoirt air an fhìor structar aige. An toiseach, tha ZFS ag aonachadh na h-ìrean traidiseanta de riaghladh meud is siostam faidhle. San dàrna h-àite, bidh e a’ cleachdadh inneal gnìomh leth-bhreac-air-sgrìobhadh. Tha na feartan sin a’ ciallachadh gu bheil structar an t-siostam gu math eadar-dhealaichte bho shiostaman faidhle gnàthach agus arrays RAID. Is e a’ chiad sheata de bhlocaichean togail bunaiteach ri thuigsinn an amar stòraidh (zpool), inneal brìgheil (vdev), agus inneal fìor (inneal).

zpool

Is e an amar stòraidh zpool an structar ZFS as àirde. Anns gach amar tha aon inneal brìgheil no barrachd. Ann an tionndadh, tha aon no barrachd innealan fìor (inneal) anns gach fear dhiubh. Tha amaran mas-fhìor nam blocaichean fèin-chumanta. Faodaidh dà amar fa leth no barrachd a bhith ann an aon choimpiutair corporra, ach tha gach fear gu tur neo-eisimeileach bhon fheadhainn eile. Chan urrainn dha amaran innealan brìgheil a cho-roinn.

Tha call dreuchd ZFS aig ìre inneal brìgheil, chan ann aig ìre an amar. Chan eil cus feum sam bith aig ìre an amar - ma thèid draibhear vdev no vdev sònraichte a chall, thèid an amar gu lèir a chall còmhla ris.

Faodaidh amaran stòraidh ùr-nodha a bhith beò le call tasgadan no log inneal brìgheil - ged a dh’ fhaodadh iad beagan dàta salach a chall ma chailleas iad an log vdev aig àm briseadh cumhachd no tubaist siostaim.

Tha mì-thuigse cumanta ann gu bheil "stiallan dàta" ZFS air an sgrìobhadh thairis air an amar gu lèir. Chan eil seo fìor. Chan eil Zpool èibhinn RAID0 idir, tha e caran èibhinn Jbod le uidheamachd cuairteachaidh caochlaideach iom-fhillte.

Airson a’ mhòr-chuid, tha na clàran air an sgaoileadh am measg nan innealan brìgheil a tha rim faighinn a rèir an àite saor a tha ri fhaighinn, agus mar sin ann an teòiridh bidh iad uile air an lìonadh aig an aon àm. Ann an dreachan nas fhaide air adhart de ZFS, thathas a’ toirt aire don chleachdadh vdev gnàthach (cleachdadh) - ma tha aon inneal brìgheil gu math nas trainge na inneal eile (mar eisimpleir, air sgàth luchdan leughaidh), thèid a sgiobadh airson sgrìobhadh airson ùine, a dh’ aindeoin an ìre as àirde an-asgaidh. co-mheas àite.

Faodaidh an uidheamachd lorg cleachdadh a chaidh a thogail a-steach do dhòighean riaghlaidh sgrìobhaidh ZFS an latha an-diugh lùghdachadh a dhèanamh air latency agus àrdachadh trochur aig amannan de luchdan neo-àbhaisteach àrd - ach chan eil carte blanche air measgachadh neo-thoileach de HDDs slaodach agus SSDs luath ann an aon amar. Bidh an leithid de amar neo-ionann fhathast ag obair aig astar an inneal as slaodaiche, is e sin, mar gum biodh e gu tur air a dhèanamh suas de na h-innealan sin.

vdev

Anns gach amar stòraidh tha aon inneal brìgheil no barrachd (inneal brìgheil, vdev). Ann an tionndadh, tha aon inneal fìor no barrachd anns gach vdev. Bithear a’ cleachdadh a’ mhòr-chuid de dh’ innealan mas-fhìor airson stòradh dàta sìmplidh, ach tha grunn chlasaichean cuideachaidh vdev ann, nam measg CACHE, LOG, agus SPECIAL. Faodaidh aon de chòig topologies a bhith aig gach aon de na seòrsaichean vdev sin: inneal singilte (inneal singilte), RAIDz1, RAIDz2, RAIDz3, no sgàthan (sgàthan).

Tha RAIDz1, RAIDz2 agus RAIDz3 nan seòrsaichean sònraichte den rud ris an canadh na seann-timers RAID co-ionannachd dùbailte (trasnainneach). Tha 1, 2 agus 3 a’ toirt iomradh air cia mheud bloca co-ionannachd a tha air an riarachadh airson gach stiall dàta. An àite diosgan fa leth airson co-ionannachd, bidh innealan brìgheil RAIDz a’ cuairteachadh a’ cho-ionannachd seo gu leth-chothromach thairis air diosgan. Faodaidh sreath RAIDz na h-uimhir de dhioscaichean a chall agus a tha ann am blocaichean co-ionannachd; ma chailleas e fear eile, tuitidh e agus bheir e an amar-stòraidh leis.

Ann an innealan brìgheil le sgàthan (sgàthan vdev), tha gach bloc air a stòradh air gach inneal san vdev. Ged is e sgàthan dà-leathann an fheadhainn as cumanta, faodaidh àireamh neo-riaghailteach sam bith de dh’ innealan a bhith ann an sgàthan - bidh triples gu tric air an cleachdadh ann an ionadan mòra airson coileanadh leughaidh nas fheàrr agus fulangas sgàinidhean. Faodaidh sgàthan vdev mairsinn air fàilligeadh sam bith fhad ‘s a chumas co-dhiù aon inneal san vdev ag obair.

Tha vdevs singilte gu tur cunnartach. Cha mhair an leithid de inneal brìgheil beò le aon fhàilligeadh - agus ma thèid a chleachdadh mar stòradh no vdev sònraichte, bidh an fàilligeadh aige a’ leantainn gu sgrios an amar gu lèir. Bi glè, glè chùramach an seo.

Faodar CACHE, LOG, agus VAn SÒNRAICHTE a chruthachadh a’ cleachdadh gin de na topologies gu h-àrd - ach cuimhnich gu bheil call VA SÒNRAICHTE a’ ciallachadh call an linne, agus mar sin thathas a’ moladh topology gun fheum.

uidheam

Is dòcha gur e seo an teirm as fhasa a thuigsinn ann an ZFS - gu litearra tha e na inneal ruigsinneachd air thuaiream bloc. Cuimhnich gu bheil innealan brìgheil air an dèanamh suas de innealan fa leth, fhad ‘s a tha amar air a dhèanamh suas de innealan brìgheil.

Is e diosgan - an dàrna cuid staid magnetach no cruaidh - na h-innealan bloca as cumanta a thathas a’ cleachdadh mar bhlocaichean togail vdev. Ach, nì inneal sam bith le tuairisgeul ann an / dev, agus mar sin faodar arrays RAID bathar-cruaidh iomlan a chleachdadh mar innealan air leth.

Is e faidhle amh sìmplidh aon de na h-innealan bloca eile as cudromaiche as urrainnear vdev a thogail. Pool deuchainn bho faidhlichean gann na dhòigh air leth feumail airson sùil a thoirt air òrdughan amar agus faicinn dè an ìre de rùm a tha ri fhaighinn ann an amar no inneal brìgheil de topology sònraichte.

Bun-bheachdan ZFS: Stòradh agus Coileanadh
Faodaidh tu cruinneachadh deuchainn a chruthachadh bho fhaidhlichean gann ann am beagan dhiog - ach na dìochuimhnich cuir às don amar gu lèir agus na co-phàirtean aige às deidh sin

Canaidh sinn gu bheil thu airson frithealaiche a chuir air ochd diosgan agus an dùil 10 diosc TB (~ 9300 GiB) a chleachdadh - ach chan eil thu cinnteach dè an topology a fhreagras air na feumalachdan agad. Anns an eisimpleir gu h-àrd, bidh sinn a 'togail cruinneachadh deuchainn bho fhaidhlichean gann ann an diogan - agus a-nis tha fios againn gu bheil RAIDz2 vdev de ochd diosgan 10 TB a' toirt seachad 50 TiB de chomas a ghabhas cleachdadh.

Is e clas sònraichte eile de dh’ innealan SPARE (sàr-shean). Buinidh innealan suaip teth, eu-coltach ri innealan àbhaisteach, don amar gu lèir, agus chan ann do aon inneal brìgheil. Ma dh’ fhailicheas vdev san amar agus gu bheil inneal a bharrachd ceangailte ris an amar agus ri fhaighinn, an uairsin thèid e a-steach don vdev air a bheil buaidh gu fèin-ghluasadach.

Às deidh dha ceangal ris an vdev air a bheil buaidh, bidh an inneal a bharrachd a ’tòiseachadh a’ faighinn lethbhric no ath-thogail den dàta a bu chòir a bhith air an inneal a tha a dhìth. Ann an RAID traidiseanta canar ath-thogail ris an seo, agus ann an ZFS canar ath-thionndadh ris.

Tha e cudromach cuimhneachadh nach bi innealan a bharrachd a’ dol an àite innealan a dh’ fhàillig gu maireannach. Chan eil an seo ach ath-chur sealach gus an ùine a tha vdev air a dhol sìos a lughdachadh. Às deidh don rianaire a dhol an àite an vdev a dh’ fhàillig, thèid call obrach a thoirt air ais don inneal maireannach sin, agus tha SPARE air a dhì-cheangal bhon vdev agus air a thilleadh a dh’ obair mar shàr airson an amar gu lèir.

Seataichean dàta, blocaichean agus roinnean

Tha an ath sheata de bhlocaichean togail ri thuigsinn air ar turas ZFS nas lugha mun bhathar-cruaidh agus barrachd mu mar a tha an dàta fhèin air a chuir air dòigh agus air a stòradh. Tha sinn a’ leum air grunn ìrean an seo - leithid metaslab - gus nach cuir sinn dragh air mion-fhiosrachadh fhad ‘s a chumas sinn tuigse air an structar iomlan.

Seata dàta (set-dàta)

Bun-bheachdan ZFS: Stòradh agus Coileanadh
Nuair a chruthaicheas sinn stòr-dàta an toiseach, bidh e a’ sealltainn a h-uile àite amar a tha ri fhaighinn. An uairsin bidh sinn a 'suidheachadh a' chuota - agus ag atharrachadh a 'phuing sreap. Draoidheachd!

Bun-bheachdan ZFS: Stòradh agus Coileanadh
Chan eil ann an Zvol sa mhòr-chuid ach seata dàta air a thoirt às an t-sreath siostam fhaidhlichean aige, a tha sinn a’ cur na àite an seo le siostam faidhle ext4 gu tur àbhaisteach.

Tha stòr-dàta ZFS timcheall air an aon rud ri siostam faidhle àbhaisteach. Coltach ri siostam faidhle cunbhalach, aig a’ chiad sealladh tha e coltach ri “dìreach pasgan eile”. Ach dìreach mar shiostaman faidhle àbhaisteach, tha a sheata de fheartan bunaiteach fhèin aig gach stòr-dàta ZFS.

An toiseach, faodaidh cuota ainmichte a bhith aig stòr-dàta. Ma thèid a shuidheachadh zfs set quota=100G poolname/datasetname, an uairsin cha bhith e comasach dhut sgrìobhadh chun phasgan air a chuir suas /poolname/datasetname barrachd air 100 GiB.

Mothaich gu bheil làthaireachd - agus neo-làthaireachd - slashes aig toiseach gach loidhne? Tha àite fhèin aig gach stòr-dàta an dà chuid ann an rangachd ZFS agus ann an rangachd sreap an t-siostaim. Chan eil prìomh slash ann an rangachd ZFS - tòisichidh tu le ainm an amar agus an uairsin an t-slighe bho aon stòr-dàta chun ath fhear. Mar eisimpleir, pool/parent/child airson stòr-dàta ainmichte child fon stòr-dàta phàrant parent ann an amar le ainm cruthachail pool.

Gu gnàthach, bidh puing sreap an dàta co-ionann ris an ainm ann an rangachd ZFS, le prìomh slash - an amar ainmichte pool air a chuir suas mar /pool, seata dàta parent air a chuir a-steach /pool/parent, agus an dàta cloinne child air a chuir a-steach /pool/parent/child. Ach, faodar puing sreap an t-siostaim dàta atharrachadh.

Ma shònraicheas sinn zfs set mountpoint=/lol pool/parent/child, an uairsin an seata dàta pool/parent/child air a chuir suas air an t-siostam mar /lol.

A bharrachd air stòran-dàta, bu chòir dhuinn iomradh a thoirt air leabhraichean (zvols). Tha tomhas-lìonaidh timcheall air an aon rud ri stòr-dàta, ach a-mhàin nach eil siostam faidhle aige - chan eil ann ach inneal bloca. Faodaidh tu, mar eisimpleir, a chruthachadh zvol Le ainm mypool/myzvol, an uairsin cruth e le siostam faidhle ext4, agus an uairsin cuir suas an siostam faidhle sin - tha siostam faidhle ext4 agad a-nis, ach leis na feartan tèarainteachd aig ZFS! Is dòcha gu bheil seo a’ coimhead gòrach air aon inneal, ach tha e a’ dèanamh tòrr a bharrachd ciall mar backend nuair a thathar a’ cur a-mach inneal iSCSI.

Blocaichean

Bun-bheachdan ZFS: Stòradh agus Coileanadh
Tha am faidhle air a riochdachadh le aon bhloca no barrachd. Tha gach bloc air a stòradh air aon inneal brìgheil. Mar as trice tha meud a 'bhloc co-ionnan ris a' pharamadair clàradh, ach faodar a lughdachadh gu 2 ^ gluasadma tha meata-dàta no faidhle beag ann.

Bun-bheachdan ZFS: Stòradh agus Coileanadh
Tha sinn dha-rìribh dha-rìribh gun a bhith a’ magadh mun pheanas coileanaidh mòr ma shuidhicheas tu gluasad ro bheag

Ann an amar ZFS, tha a h-uile dàta, a’ toirt a-steach meata-dàta, air a stòradh ann am blocaichean. Tha am meud bloca as àirde airson gach seata dàta air a mhìneachadh san togalach recordsize (meud clàr). Faodar meud a’ chlàir atharrachadh, ach chan atharraich seo meud no suidheachadh blocaichean sam bith a chaidh a sgrìobhadh chun t-seata dàta mu thràth - cha toir e buaidh ach air blocaichean ùra mar a tha iad sgrìobhte.

Mura h-eil a chaochladh air a shònrachadh, is e 128 KiB meud a’ chlàir bunaiteach an-dràsta. Tha e na sheòrsa de mhalairt duilich far nach eil coileanadh foirfe, ach chan eil e uamhasach sa mhòr-chuid de chùisean nas motha. Recordsize faodar a shuidheachadh gu luach sam bith bho 4K gu 1M (le roghainnean adhartach recordsize faodaidh tu eadhon barrachd a stàladh, ach is ann ainneamh a tha seo na dheagh bheachd).

Tha bloc sam bith a’ toirt iomradh air dàta aon fhaidhle - chan urrainn dhut dà fhaidhle eadar-dhealaichte a chuir ann an aon bhloc. Tha aon bhloca no barrachd anns gach faidhle, a rèir meud. Ma tha meud an fhaidhle nas lugha na meud a ’chlàir, thèid a stòradh ann am meud bloc nas lugha - mar eisimpleir, cha bhith bloc le faidhle 2 KiB a’ gabhail thairis ach aon roinn 4 KiB air an diosc.

Ma tha am faidhle mòr gu leòr agus feumach air grunn bhlocaichean, bidh a h-uile clàr leis an fhaidhle seo de mheud recordsize - a’ toirt a-steach an inntrig mu dheireadh, is dòcha gum bi am prìomh phàirt dheth àite gun chleachdadh.

chan eil seilbh aig zvols recordsize - an àite sin tha seilbh co-ionann aca volblocksize.

Roinnean

Is e am bloc togail mu dheireadh, as bunaitiche, an roinn. Is e seo an aonad corporra as lugha a ghabhas sgrìobhadh chun inneal fon inneal no a leughadh. Airson grunn dheicheadan, chleachd a’ mhòr-chuid de dhioscaichean roinnean 512-byte. O chionn ghoirid, tha a’ mhòr-chuid de dhioscaichean air an rèiteachadh airson roinnean 4 KiB, agus tha roinnean 8 KiB no eadhon barrachd aig cuid - gu sònraichte SSDs.

Tha seilbh aig siostam ZFS a leigeas leat meud na roinne a shuidheachadh le làimh. An t-seilbh seo ashift. Rud a tha troimh-chèile, is e cumhachd dhà a th’ ann an gluasad. Mar eisimpleir, ashift=9 a’ ciallachadh meud roinne de 2^9, no 512 bytes.

Bidh ZFS a ’ceasnachadh an t-siostam obrachaidh airson fiosrachadh mionaideach mu gach inneal bloca nuair a thèid a chur ri vdev ùr, agus gu teòiridheach gu fèin-ghluasadach a’ stàladh gluasad gu ceart stèidhichte air an fhiosrachadh sin. Gu mì-fhortanach, tha mòran dhràibhearan a’ laighe mun mheud roinne aca gus co-chòrdalachd a chumail ri Windows XP (nach robh comasach air draibhearan le meudan roinnean eile a thuigsinn).

Tha seo a’ ciallachadh gu bheilear a’ moladh gu làidir do rianadair ZFS fios a bhith aca air meud roinne nan innealan aca agus an suidheachadh le làimh ashift. Ma tha gluasad air a shuidheachadh ro ìosal, bidh an àireamh de ghnìomhachd leughaidh / sgrìobhaidh a’ dol am meud gu reul-eòlach. Mar sin, le bhith a’ sgrìobhadh “roinnean” 512-byte a-steach do fhìor roinn 4 KiB tha sin a’ ciallachadh gum feum thu a’ chiad “roinn” a sgrìobhadh, agus an uairsin an roinn 4 KiB a leughadh, atharraich e le dàrna “roinn” de 512-byte, sgrìobh e air ais chun fhear ùr 4 roinn KiB, agus mar sin air adhart airson gach inntrigeadh.

Anns an fhìor shaoghal, bidh peanas mar sin a ’bualadh air Samsung EVO SSDs, airson sin ashift=13, ach tha na SSDan sin a’ laighe mu mheud na roinne aca, agus mar sin tha am bun-stèidh air a shuidheachadh ashift=9. Mura h-atharraich rianadair siostam eòlach an suidheachadh seo, bidh an SSD seo ag obair nas slaodaiche HDD magnetach àbhaisteach.

Airson coimeas, airson meud ro mhòr ashift cha mhòr nach eil peanas ann. Chan eil fìor pheanas coileanaidh ann, agus tha an àrdachadh ann an àite gun chleachdadh gun chrìoch (no neoni le teannachadh air a chomasachadh). Mar sin, tha sinn a’ moladh gu làidir gun cuir eadhon na draibhearan sin a bhios a’ cleachdadh roinnean 512-byte a-steach ashift=12 no eadhon ashift=13gus aghaidh a thoirt air an àm ri teachd le misneachd.

Seilbh ashift air a shuidheachadh airson gach inneal brìgheil vdev, agus chan ann airson an pool, mar a tha mòran a 'smaoineachadh gu ceàrr - agus chan eil e ag atharrachadh às deidh an stàladh. Ma bhuaileas tu gun fhiosta ashift nuair a chuireas tu vdev ùr ri amar, tha thu air an amar sin a thruailleadh gu do-sheachanta le inneal dèanadais ìosal agus mar as trice chan eil roghainn eile ann ach an amar a sgrios agus tòiseachadh a-rithist. Cha shàbhail eadhon toirt air falbh vdev thu bho rèiteachadh briste ashift!

Inneal lethbhreac-air-sgrìobhadh

Bun-bheachdan ZFS: Stòradh agus Coileanadh
Ma dh'fheumas siostam faidhle cunbhalach ath-sgrìobhadh a dhèanamh air dàta, bidh e ag atharrachadh gach bloc far a bheil e

Bun-bheachdan ZFS: Stòradh agus Coileanadh
Bidh siostam faidhle leth-bhreac-air-sgrìobhadh a’ sgrìobhadh dreach bloc ùr agus an uairsin a’ fuasgladh an t-seann dreach

Bun-bheachdan ZFS: Stòradh agus Coileanadh
Anns an eas-chruthach, ma bheir sinn an aire do fhìor shuidheachadh corporra nam blocaichean, tha ar “data comet” air a dhèanamh nas sìmplidhe gu “cnuimh dàta” a ghluaiseas bho chlì gu deas thairis air a’ mhapa den àite a tha ri fhaighinn.

Bun-bheachdan ZFS: Stòradh agus Coileanadh
A-nis gheibh sinn deagh bheachd air mar a bhios dealbhan lethbhreac-air-sgrìobhadh ag obair - faodaidh gach bloc buntainn ri grunn dhealbhan, agus leanaidh e gus an tèid a h-uile dealbh co-cheangailte a sgrios

Tha an uidheamachd Copy on Write (CoW) na bhunait bunaiteach air na tha a’ dèanamh ZFS na shiostam cho iongantach. Tha am bun-bheachd bunaiteach sìmplidh - ma dh'iarras tu air siostam faidhle traidiseanta faidhle atharrachadh, nì e dìreach na dh'iarr thu. Ma dh’iarras tu air siostam faidhle leth-bhreac-air-sgrìobhadh an aon rud a dhèanamh, canaidh e “ceart gu leòr” ach laighidh e riut.

An àite sin, bidh siostam faidhle leth-bhreac-air-sgrìobhadh a’ sgrìobhadh dreach ùr den bhloc atharraichte agus an uairsin ag ùrachadh meata-dàta an fhaidhle gus an seann bhloca a dhì-cheangal agus am bloca ùr a sgrìobh thu thuige a cheangal.

Tha a bhith a’ ceangal an t-seann bhloca agus a’ ceangal an tè ùr air a dhèanamh ann an aon obrachadh, agus mar sin chan urrainnear stad a chuir air - ma chuireas tu cumhachd sìos às deidh seo tachairt, tha dreach ùr agad den fhaidhle, agus ma chuireas tu cumhachd sìos tràth, tha an seann dreach agad . Ann an suidheachadh sam bith, cha bhi còmhstri sam bith san t-siostam faidhle.

Bidh lethbhreac-air-sgrìobhadh ann an ZFS a ’tachairt chan ann a-mhàin aig ìre siostam faidhle, ach cuideachd aig ìre riaghlaidh diosc. Tha seo a’ ciallachadh nach eil àite geal a’ toirt buaidh air ZFS (toll anns an RAID) - iongantas nuair nach robh ùine aig an stiall ach pàirt a chlàradh mus do thuit an siostam, le milleadh rèite às deidh ath-thòiseachadh. An seo tha an stripe air a sgrìobhadh gu atamach, tha vdev an-còmhnaidh ann an òrdugh, agus 'S e Bob d' uncail.

ZIL: Log rùn ZFS

Bun-bheachdan ZFS: Stòradh agus Coileanadh
Bidh an siostam ZFS a’ làimhseachadh sgrìobhadh sioncronaich ann an dòigh shònraichte - bidh e gan stòradh airson ùine ghoirid ach sa bhad ann an ZIL mus sgrìobh thu iad gu maireannach nas fhaide air adhart còmhla ri sgrìobhaidhean asyncronach.

Bun-bheachdan ZFS: Stòradh agus Coileanadh
Mar as trice, cha tèid dàta a chaidh a sgrìobhadh gu ZIL a leughadh a-rithist. Ach tha e comasach às deidh tubaist siostam

Bun-bheachdan ZFS: Stòradh agus Coileanadh
Tha SLOG, no inneal LOG àrd-sgoile, dìreach na vdev sònraichte - agus gu math luath, far am faodar an ZIL a stòradh air leth bhon phrìomh stòradh

Bun-bheachdan ZFS: Stòradh agus Coileanadh
Às deidh tubaist, thèid a h-uile dàta salach ann an ZIL ath-chluich - sa chùis seo, tha ZIL air SLOG, agus mar sin tha e air ath-chluich às an sin

Tha dà phrìomh sheòrsa de ghnìomhachd sgrìobhaidh ann - sioncronaich (sync) agus asyncronach (async). Airson a’ mhòr-chuid de dh’ uallaichean obrach, tha a’ mhòr-chuid de na sgrìobhaidhean neo-chunbhalach - tha an siostam faidhle a’ leigeil leotha a bhith air an cruinneachadh agus air an cur a-mach ann an baidsean, a’ lughdachadh brisidh agus a’ meudachadh gu mòr trochur.

Tha clàraidhean sioncronaich na chùis gu tur eadar-dhealaichte. Nuair a dh’ iarras tagradh sgrìobhadh sioncronaich, tha e ag innse don t-siostam faidhle: “Feumaidh tu seo a ghealltainn do chuimhne neo-luaineach an-dràstagus an uairsin, chan eil dad eile as urrainn dhomh a dhèanamh." Mar sin, bu chòir sgrìobhadh sioncronaich a bhith air a ghealltainn don diosc sa bhad - agus ma tha sin a’ meudachadh briseadh no a’ lughdachadh trochur, mar sin biodh e.

Bidh ZFS a’ làimhseachadh sgrìobhadh sioncronaich ann an dòigh eadar-dhealaichte seach siostaman faidhle àbhaisteach - an àite a bhith gan gealltainn sa bhad gu stòradh cunbhalach, bidh ZFS gan gealltainn gu àite stòraidh sònraichte ris an canar Log Intent ZFS, no ZIL. Is e an cleas gu bheil na clàran sin cuideachd fuireach nad chuimhne, le bhith air an cruinneachadh còmhla ri iarrtasan sgrìobhaidh asyncronach àbhaisteach, airson an gluasad nas fhaide air adhart gu stòradh mar TXGn gu tur àbhaisteach (Buidhnean Gluasaid).

Ann an obrachadh àbhaisteach, thathas a’ sgrìobhadh chun ZIL agus cha tèid a leughadh a-rithist. Nuair, an dèidh beagan mhionaidean, tha na clàran bhon ZIL a 'gealltainn a' phrìomh stòradh ann an TXG àbhaisteach bho RAM, tha iad air an sgaradh bhon ZIL. Is e an aon uair a leughas rudeigin bhon ZIL nuair a thèid an amar a thoirt a-steach.

Ma dh’ fhailicheas ZFS - tubaist siostam obrachaidh no briseadh cumhachd - fhad ‘s a tha dàta anns an ZIL, thèid an dàta sin a leughadh rè an ath in-mhalairt amar (mar eisimpleir, nuair a thèid an siostam èiginn ath-thòiseachadh). Thèid rud sam bith anns an ZIL a leughadh, a chruinneachadh ann an TXGn, dealasach a thaobh a’ phrìomh stòradh, agus an uairsin dealachadh bhon ZIL tron ​​​​phròiseas in-mhalairt.

Canar LOG no SLOG, inneal àrd-sgoile LOG, ri aon de na clasaichean cuideachaidh vdev. Tha aon adhbhar aige - vdev air leth a thoirt don amar, agus nas fheàrr fada nas luaithe, a tha an aghaidh sgrìobhadh gus an ZIL a stòradh, an àite an ZIL a stòradh air a’ phrìomh stòr vdev. Bidh an ZIL fhèin a’ giùlan an aon rud ge bith càite a bheil e air a stòradh, ach ma tha coileanadh sgrìobhaidh fìor àrd aig an LOG vdev, bidh sgrìobhadh sioncronaich nas luaithe.

Chan eil e ag obair le bhith a’ cur vdev le LOG ris an amar chan urrainn leasaich coileanadh sgrìobhaidh asyncronach - eadhon ged a bheir thu air a h-uile sgrìobhadh gu ZIL le zfs set sync=always, bidh iad fhathast ceangailte ris a 'phrìomh stòradh ann an TXG san aon dòigh agus aig an aon astar ri às aonais an log. Is e an aon leasachadh dèanadais dìreach latency sgrìobhadh sioncronaich (seach gu bheil log nas luaithe a’ luathachadh gnìomhachd). sync).

Ach, ann an àrainneachd a dh’ fheumas tòrr sgrìobhaidhean sioncronaich mar-thà, faodaidh vdev LOG luathachadh neo-dhìreach a dhèanamh air sgrìobhaidhean asyncronach agus leughaidhean neo-thasgadh. Le bhith a’ luchdachadh inntrigidhean ZIL gu vdev LOG air leth tha sin a’ ciallachadh nas lugha de shunnd airson IOPS air stòradh bun-sgoile, a leasaicheas coileanadh gach leughadh agus sgrìobhadh gu ìre.

Snap-dhealbhan

Tha an uidheamachd leth-bhreac-air-sgrìobhaidh cuideachd na bhunait riatanach airson dealbhan atamach ZFS agus ath-riochdachadh mean air mhean asyncronach. Tha craobh stiùiridh aig an t-siostam faidhle gnìomhach a tha a’ comharrachadh a h-uile clàr le dàta gnàthach - nuair a bheir thu dealbh, cha dèan thu ach leth-bhreac den chraobh phuing seo.

Nuair a thèid clàr ath-sgrìobhadh air an t-siostam faidhle gnìomhach, bidh ZFS an-toiseach a’ sgrìobhadh an dreach bloca ùr gu àite nach deach a chleachdadh. Bidh e an uairsin a’ sgaradh an t-seann dreach den bhloc bhon t-siostam faidhle gnàthach. Ach ma tha beagan dealbh a’ toirt iomradh air an t-seann bhloc, tha e fhathast gun atharrachadh. Cha tèid an seann bhloc ath-nuadhachadh mar àite an-asgaidh gus an tèid a h-uile dealbh a tha a’ toirt iomradh air a’ bhloc seo a sgrios!

Mac-samhlachadh

Bun-bheachdan ZFS: Stòradh agus Coileanadh
B’ e 2015 GiB an leabharlann Steam agam ann an 158 agus bha 126 ann faidhlichean. Tha seo gu math faisg air an t-suidheachadh as fheàrr airson rsync - bha ath-riochdachadh ZFS thairis air an lìonra “a-mhàin” 927% nas luaithe.

Bun-bheachdan ZFS: Stòradh agus Coileanadh
Air an aon lìonra, tha ath-riochdachadh aon 40GB Windows 7 faidhle ìomhaigh inneal brìgheil na sgeulachd gu tur eadar-dhealaichte. Tha ath-riochdachadh ZFS 289 tursan nas luaithe na rsync - no “dìreach” 161 tursan nas luaithe ma tha thu borb gu leòr airson rsync a ghairm le --inplace.

Bun-bheachdan ZFS: Stòradh agus Coileanadh
Nuair a thèid ìomhaigh VM a mheudachadh, bidh cùisean rsync a’ sgèile leis. Chan eil 1,9 TiB cho mòr airson ìomhaigh VM ùr-nodha - ach tha e mòr gu leòr gu bheil ath-riochdachadh ZFS 1148 uair nas luaithe na rsync, eadhon le argamaid rsync --inplace

Aon uair 's gu bheil thu a' tuigsinn mar a tha dealbhan-camara ag obair, bu chòir dha a bhith furasta tuigse fhaighinn air brìgh ath-riochdachadh. Leis nach eil ann an dealbh ach craobh chomharran airson clàran, tha e a’ leantainn ma nì sinn zfs send dealbh, an uairsin cuiridh sinn an dà chuid a 'chraobh seo agus a h-uile clàr co-cheangailte rithe. Nuair a chuireas sinn seo zfs send в zfs receive air an targaid, bidh e a’ sgrìobhadh an dà chuid fìor shusbaint a’ bhloca agus a’ chraobh chomharran a tha a’ toirt iomradh air na blocaichean don t-seata dàta targaid.

Bidh cùisean a’ fàs eadhon nas inntinniche air an dàrna fear zfs send. Tha dà shiostam againn a-nis, anns gach fear dhiubh poolname/datasetname@1, agus gabhaidh tu dealbh ùr poolname/datasetname@2. Mar sin, anns an amar tùsail a tha agad datasetname@1 и datasetname@2, agus anns an amar targaid gu ruige seo dìreach a’ chiad dealbh datasetname@1.

Leis gu bheil dealbh coitcheann againn eadar an stòr agus an targaid datasetname@1, is urrainn dhuinn a dhèanamh mean air mhean zfs send thairis air. Nuair a chanas sinn ris an t-siostam zfs send -i poolname/datasetname@1 poolname/datasetname@2, tha e a 'dèanamh coimeas eadar dà chraobh phuing. Comharran sam bith nach eil ann ach ann an @2, gu follaiseach thoir iomradh air blocaichean ùra - mar sin feumaidh sinn susbaint nam blocaichean sin.

Air siostam iomallach, a 'giollachd mean air mhean send a cheart cho sìmplidh. An toiseach bidh sinn a’ sgrìobhadh a h-uile clàr ùr a tha san t-sruth send, agus an uairsin cuir comharran ris na blocaichean sin. Voila, tha againn @2 anns an t-siostam ùr!

Tha ath-riochdachadh mean air mhean asyncronach ZFS na leasachadh mòr thairis air dòighean nas tràithe nach eil stèidhichte air dealbh leithid rsync. Anns gach cùis, chan eil ach dàta atharraichte air a ghluasad - ach feumaidh rsync an toiseach leugh bhon diosc an dàta gu lèir air gach taobh gus sùil a thoirt air an t-suim agus coimeas a dhèanamh eadar e. An coimeas ri sin, chan eil ath-riochdachadh ZFS a’ leughadh dad ach craobhan puing - agus blocaichean sam bith nach eil an làthair anns an dealbh cho-roinnte.

Compression togte

Bidh an uidheamachd leth-bhreac-air-sgrìobhaidh cuideachd a’ sìmpleachadh an t-siostam teannachaidh in-loidhne. Ann an siostam faidhle traidiseanta, tha teannachadh na dhuilgheadas - tha an dà chuid an seann dreach agus an dreach ùr den dàta atharraichte a’ fuireach san aon àite.

Ma smaoinicheas sinn air pìos dàta ann am meadhan faidhle a thòisicheas beatha mar mhegabyte de neamhan bho 0x00000000 agus mar sin air adhart, tha e gu math furasta a dhlùthadh gu aon roinn air diosc. Ach dè a thachras ma chuireas sinn megabyte de dhàta neo-thorrach leithid JPEG no fuaim meallta air thuaiream an àite a’ mhegabyte sin de neoni? Gun dùil, chan fheum am megabyte dàta seo aon, ach roinnean 256 4 KiB, agus san àite seo air an diosc chan eil ach aon roinn glèidhte.

Chan eil an duilgheadas seo aig ZFS, leis gu bheil clàran atharraichte an-còmhnaidh air an sgrìobhadh gu àite nach deach a chleachdadh - chan eil anns a’ bhloc tùsail ach aon roinn 4 KiB, agus gabhaidh an clàr ùr 256, ach chan eil seo na dhuilgheadas - criomag a chaidh atharrachadh o chionn ghoirid bhon " meadhan" den fhaidhle air a sgrìobhadh gu àite nach deach a chleachdadh ge bith a bheil a mheud air atharrachadh no nach eil, mar sin airson ZFS is e suidheachadh gu math cunbhalach a tha seo.

Tha teannachadh dùthchasach ZFS à comas gu bunaiteach, agus tha an siostam a’ tabhann algorithms pluggable - an-dràsta LZ4, gzip (1-9), LZJB, agus ZLE.

  • LZ4 na algairim sruthadh a tha a’ tabhann teannachadh agus dì-dhùmhlachadh air leth luath agus buannachdan coileanaidh airson a ’mhòr-chuid de chùisean cleachdaidh - eadhon air CPUan a tha gu math slaodach.
  • GZIP na algairim ionmholta air a bheil eòlas agus gaol aig a h-uile neach-cleachdaidh Unix. Faodar a chuir an gnìomh le ìrean teannachaidh 1-9, le co-mheas teannachaidh agus cleachdadh CPU a’ dol am meud fhad ‘s a tha e a’ dlùthachadh ri ìre 9. Tha an algairim gu math freagarrach airson a h-uile cùis cleachdaidh teacsa (no fìor dhlùthadh), ach air dhòigh eile bidh e gu tric ag adhbhrachadh cùisean CPU - cleachd e le cùram, gu sònraichte aig ìrean nas àirde.
  • LZJB Is e an algairim tùsail ann an ZFS. Tha e air a dhol à bith agus cha bu chòir a chleachdadh tuilleadh, tha an LZ4 a’ dol thairis air anns a h-uile dòigh.
  • DHOMHNULLACH - còdachadh ìre neoni, còdachadh ìre neoni. Chan eil e a’ suathadh ri dàta àbhaisteach idir, ach a’ teannachadh sreathan mòra de neamhan. Feumail airson stòran-dàta a tha gu tur do-chreidsinneach (leithid JPEG, MP4, no cruthan eile a tha air an teannachadh mar-thà) leis gu bheil e a’ seachnadh dàta do-chreidsinneach ach a’ teannachadh àite nach deach a chleachdadh anns na clàran a thig às.

Tha sinn a’ moladh teannachadh LZ4 airson cha mhòr a h-uile cùis cleachdaidh; tha am peanas coileanaidh nuair a thachras tu air dàta do-chreidsinneach glè bheag, agus buannachadh tha coileanadh airson dàta àbhaisteach cudromach. A’ dèanamh lethbhreac de dh’ ìomhaigh inneal brìgheil airson stàladh ùr de shiostam-obrachaidh Windows (OS air ùr-shuidheachadh, gun dàta a-staigh fhathast) le compression=lz4 seachad air 27% nas luaithe na le compression=none, ann an deuchainn seo ann an 2015.

ARC - tasgadan ath-atharrachail atharrachail

Is e ZFS an aon shiostam faidhle ùr-nodha as aithne dhuinn a tha a’ cleachdadh an uidheamachd caching leughaidh aige fhèin, seach a bhith an urra ri tasgadan duilleag an t-siostam obrachaidh gus lethbhric de bhlocaichean a chaidh a leughadh o chionn ghoirid a stòradh ann an RAM.

Ged nach eil an tasgadan dùthchasach às aonais na duilgheadasan aige - chan urrainn dha ZFS freagairt a thoirt do iarrtasan riarachadh cuimhne ùr cho luath ris an kernel, agus mar sin an dùbhlan ùr malloc() air riarachadh cuimhne dh’ fhaodadh e fàiligeadh ma tha feum aige air an RAM anns a bheil ARC an-dràsta. Ach tha adhbharan matha ann airson an tasgadan agad fhèin a chleachdadh, co-dhiù airson a-nis.

Bidh a h-uile siostam obrachaidh ùr-nodha aithnichte, a’ gabhail a-steach MacOS, Windows, Linux agus BSD, a’ cleachdadh an algairim LRU (Air a chleachdadh as lugha o chionn ghoirid) gus tasgadan na duilleige a chuir an gnìomh. Is e algairim prìomhadail a tha seo a ghluaiseas am bloc taisgte suas anns a’ chiudha às deidh gach leughadh, agus a phutadh na blocaichean a-mach air cùl a’ chiudha mar a dh’ fheumar gus ionnsramaidean tasgadan ùra a chur ris (blocaichean a bu chòir a bhith air an leughadh bhon diosc, chan ann bhon tasgadan) suas.

Mar as trice bidh an algairim ag obair gu math, ach air siostaman le stòran-dàta obrach mòra, bidh LRU gu furasta a’ leantainn gu bhith a’ bualadh - a’ fuadach bhlocaichean air a bheil feum gu tric gus àite a dhèanamh airson blocaichean nach tèid a leughadh bhon tasgadan a-rithist.

ARC na algairim gu math nas naive a dh’ fhaodar a mheas mar tasgadan “cuideam”. Gach uair a thèid bloca taisgte a leughadh, bidh e beagan “nas truime” agus nas duilghe fhuadach - agus eadhon às deidh dha bloc fhuadach rian taobh a-staigh ùine shònraichte. Bidh bloc a chaidh fhuadach ach a dh’ fheumas a leughadh air ais dhan tasgadan cuideachd “nas truime”.

Is e toradh deireannach seo uile tasgadan le co-mheas bualaidh mòran nas àirde, an co-mheas eadar buillean tasgadan (leughaidh air a dhèanamh bhon tasgadan) agus ionndrainn tasgadan (leugh bhon diosc). Is e staitistig air leth cudromach a tha seo - chan e a-mhàin gu bheil an tasgadan a’ bualadh orra fhèin òrdughan meudachd nas luaithe, faodar teachdaireachdan tasgadan a fhrithealadh nas luaithe cuideachd, leis mar as motha a bhuaileas tasgadan, mar as lugha de dh’ iarrtasan diosc co-aontach agus mar as ìsle an ùine airson na h-ionnstramaidean a tha air fhàgail a dh ’fheumas a thoirt seachad le diosc.

co-dhùnadh

Às deidh dhuinn semantics bunaiteach ZFS ionnsachadh - mar a bhios leth-bhreac-air-sgrìobhadh ag obair, a bharrachd air na dàimhean eadar amaran stòraidh, innealan brìgheil, blocaichean, roinnean, agus faidhlichean - tha sinn deiseil airson beachdachadh air coileanadh san t-saoghal fhìor le àireamhan fìor.

Anns an ath phàirt, bheir sinn sùil air fìor choileanadh amaran le vdevs le sgàthan agus RAIDz, an aghaidh a chèile, agus cuideachd an aghaidh topologies traidiseanta Linux kernel RAID a rannsaich sinn. na bu thràithe.

An toiseach, bha sinn airson a bhith a 'còmhdach a-mhàin na rudan bunaiteach - topologies ZFS fhèin - ach às deidh sin leithid a leig dhuinn ullachadh airson bruidhinn mu shuidheachadh agus gleusadh nas adhartaiche de ZFS, a’ toirt a-steach cleachdadh seòrsaichean vdev cuideachail leithid L2ARC, SLOG agus Riaradh Sònraichte.

Source: www.habr.com

Cuir beachd ann