Izisekelo ze-ZFS: Isitoreji kanye nokusebenza

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza

Kule ntwasahlobo sesike saxoxa ngezihloko eziyisingeniso, isib. ungabheka kanjani isivinini samadrayivu akho и yini i-RAID. Kweyesibili yalokhu, saze sathembisa ukuqhubeka nokufunda ukusebenza kwezinhlobonhlobo zama-multi-disk topology kuZFS. Lolu uhlelo lwefayela lesizukulwane esilandelayo manje esisetshenziswa yonke indawo ukusuka Apple ukuze Ubuntu.

Hhayi-ke, namuhla usuku olungcono kakhulu lokujwayelana ne-ZFS, abafundi abafisa ukwazi. Yazi nje ukuthi ekuhloleni okuthobekile kukanjiniyela we-OpenZFS uMat Ahrens, "kunzima impela."

Kepha ngaphambi kokuthi sifinyelele ezinombolweni - futhi kuzoba khona, ngiyathembisa - kuzo zonke izinhlobo zokucushwa kwe-ZFS enamadiski ayisishiyagalombili, sidinga ukukhuluma ngakho. kanjani Ngokuvamile, i-ZFS igcina idatha kudiski.

I-Zpool, i-vdev nedivayisi

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza
Lo mdwebo ogcwele we-pool uhlanganisa ama-vdev amathathu asizayo, eyodwa yekilasi ngalinye, namane e-RAIDz2

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza
Ngokuvamile asikho isizathu sokudala ichibi lezinhlobo namasayizi ama-vdev angafanele - kodwa uma ufuna, akukho okukuvimbayo ekwenzeni kanjalo.

Ukuze uqonde ngempela uhlelo lwefayela le-ZFS, udinga ukubhekisisa ukwakheka kwalo kwangempela. Okokuqala, i-ZFS ihlanganisa ivolumu yendabuko nezendlalelo zokuphatha uhlelo lwefayela. Okwesibili, isebenzisa indlela yokwenza ikhophi-on-write. Lezi zici zisho ukuthi uhlelo luhluke kakhulu kumasistimu avamile wefayela nezinhlaka ze-RAID. Isethi yokuqala yamabhulokhi wokwakha ayisisekelo okufanele aqondwe yichibi lokugcina (i-zpool), idivayisi ebonakalayo (i-vdev) kanye nedivayisi yangempela (idivayisi).

i-zpool

Ichibi lokugcina le-zpool liyisakhiwo esiphezulu se-ZFS. Iphuli ngayinye iqukethe idivayisi eyodwa noma ngaphezulu ebonakalayo. Ngokulandelayo, ngayinye yazo iqukethe eyodwa noma ngaphezulu idivayisi yangempela (amadivayisi). Amachibi okubhukuda angamayunithi aziqukathe wona. Ikhompyutha eyodwa ephathekayo ingaba namachibi amabili noma ngaphezulu ahlukene, kodwa ngalinye lizimele ngokuphelele kwamanye. Amachibi awakwazi ukwabelana ngamadivayisi abonakalayo.

I-ZFS redundancy isezingeni ledivayisi ebonakalayo, hhayi ezingeni lephuli. Akukho nakancane ukuphindaphindeka ezingeni lechibi—uma i-vdev noma i-vdev ezinikele ilahleka, yonke indawo yokubhukuda ilahleka kanye nayo.

Amachibi okugcina esimanje angasinda ekulahlekeni kwenqolobane yedivayisi ebonakalayo - nakuba angase alahlekelwe inani elincane ledatha engcolile uma elahlekelwa ilogu ye-vdev ngesikhathi sokunqamuka kukagesi noma ukuphahlazeka kwesistimu.

Kunombono oyiphutha ojwayelekile wokuthi "imigqa yedatha" ye-ZFS ibhalwe kulo lonke iphuli. Lokhu akulona iqiniso. I-Zpool akuyona i-RAID0 ehlekisayo, ihlekisa kakhulu I-JBOD ngendlela eyinkimbinkimbi yokusabalalisa okuguquguqukayo.

Ngokwengxenye enkulu, amarekhodi asatshalaliswa phakathi kwamadivayisi atholakalayo atholakalayo ngokuya ngesikhala esitholakalayo samahhala, ngakho-ke ngokombono azogcwaliswa wonke ngesikhathi esisodwa. Izinguqulo zakamuva ze-ZFS zicabangela ukusetshenziswa kwamanje kwe-vdev (ukulahlwa) - uma idivayisi eyodwa ebonakalayo imatasa kakhulu kunenye (ngokwesibonelo, ngenxa yomthwalo ofundwayo), izokweqiwa okwesikhashana ukuze ibhale, naphezu kokuba nesilinganiso esiphezulu kakhulu sesikhala samahhala. .

Indlela yokuthola kabusha eyakhelwe ezindleleni zesimanje zokwabiwa kwe-ZFS inganciphisa ukubambezeleka futhi yandise ukuphuma ngesikhathi somthwalo ophakeme ngokungajwayelekile - kodwa ayikwenzi lokho. i-carte blanche ekuxubeni okungahleliwe kwama-HDD ahamba kancane nama-SSD asheshayo endaweni yokubhukuda eyodwa. Ichibi elinjalo elingalingani lisazosebenza ngesivinini sedivayisi ehamba kancane, okungukuthi, njengokungathi lakhiwe ngokuphelele ngamadivaysi anjalo.

i-vdev

Ichibi ngalinye lokulondoloza liqukethe idivayisi eyodwa noma ngaphezulu (i-vdev). Ngokulandelayo, i-vdev ngayinye ihlanganisa idivayisi yangempela eyodwa noma ngaphezulu. Amadivayisi amaningi asetshenziswayo asetshenziselwa ukugcinwa kwedatha okulula, kodwa kunamakilasi ambalwa womsizi we-vdev, afaka i-CACHE, LOG, kanye ne-SPECIAL. Ngalunye lwalezi zinhlobo ze-vdev zingaba ne-topology eyodwa kwezinhlanu: idivayisi eyodwa, i-RAIDz1, i-RAIDz2, i-RAIDz3 noma isibuko.

I-RAIDz1, i-RAIDz2 ne-RAIDz3 yizinhlobo ezikhethekile zalokho abantu abadala abangakubiza ngokuthi i-RAID ephindwe kabili (diagonal) yokulingana. U-1, 2 no-3 ubhekisela ekutheni mangaki amabhlogo wokulinganisa abelwe umzila wedatha ngamunye. Esikhundleni sokuba namadiski ahlukene ukuze kuhlinzekwe ngokulingana, amadivayisi abonakalayo e-RAIDz asabalalisa ukulingana ngokulinganayo kuwo wonke amadiski. Uhlu lwe-RAIDz lungalahlekelwa amadiski amaningi njengoba lunamabhulokhi wokulinganisa; uma ilahlekelwa enye, izohluleka futhi ithathe ichibi lokugcina nalo.

Kumadivayisi abonakalayo esibukweni (isibuko vdev), ibhulokhi ngayinye igcinwa kudivayisi ngayinye ku-vdev. Nakuba izibuko ezibanzi ezimbili zivame kakhulu, isibuko singaqukatha noma iyiphi inombolo engafanele yamadivayisi-ekufakweni okukhulu, okuphindwe kathathu kuvame ukusetshenziselwa ukuthuthukisa ukusebenza kokufunda nokubekezelela amaphutha. Isibuko se-vdev singasinda kunoma yikuphi ukwehluleka inqobo nje uma okungenani idivayisi eyodwa ku-vdev isasebenza.

Ama-vdevs angawodwa ayingozi ngokwemvelo. Idivayisi enjalo ebonakalayo ngeke isinde ekuhlulekeni okukodwa - futhi uma isetshenziswe njengesitoreji noma i-vdev ekhethekile, khona-ke ukwehluleka kwayo kuzoholela ekubhujisweni kwechibi lonke. Qaphela, kakhulu, kakhulu lapha.

I-CACHE, LOG, kanye namadivayisi abonakalayo AKHETHEKILE angadalwa kunoma iyiphi i-topology engenhla - kodwa khumbula ukuthi ukulahlekelwa isisetshenziswa esibonakalayo ESIKHETHEKILE kusho ukulahlekelwa i-pool, ngakho-ke i-topology engafuneki iyanconywa kakhulu.

idivayisi

Leli yigama elilula kakhulu ukuliqonda ku-ZFS - empeleni iyithuluzi lokufinyelela okungahleliwe. Khumbula ukuthi amadivaysi abonakalayo akhiwe ngamadivayisi angawodwana, futhi ichibi lakhiwe ngamadivayisi abonakalayo.

Amadiski, okungaba yisimo kazibuthe noma esiqinile, angamathuluzi ebhulokhi asetshenziswa kakhulu njengamabhulokhi wokwakha we-vdev. Kodwa-ke, noma iyiphi idivayisi enencazelo ku/dev izokwenza - ngakho wonke amalungu afanayo wehadiwe RAID angasetshenziswa njengamadivayisi ahlukene.

Ifayela eliluhlaza elilula lingenye yezinsiza ezibaluleke kakhulu zokuvimba lapho kungakhiwa khona i-vdev. Amachibi okuhlola avela amafayela ayingcosana kuyindlela elula kakhulu yokuhlola imiyalo ye-pool futhi ubone ukuthi singakanani isikhala esitholakalayo echibini noma kudivayisi ebonakalayo ye-topology enikeziwe.

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza
Ungakha i-pool yokuhlola kusuka kumafayela ayingcosana ngemizuzwana embalwa - kodwa ungakhohlwa ukususa yonke i-pool kanye nezingxenye zayo ngemva kwalokho.

Ake sithi ufuna iseva enamadiski ayisishiyagalombili futhi uhlele ukusebenzisa amadiski angu-10 TB (~9300 GiB) - kodwa awunasiqiniseko sokuthi iyiphi i-topology evumelana kangcono nezidingo zakho. Esibonelweni esingenhla, sakha ichibi lokuhlola kusuka kumafayela ayingcosana endabeni yemizuzwana - futhi manje siyazi ukuthi i-RAIDz2 vdev yamadiski ayisishiyagalombili we-TB ayi-10 inikeza i-50 TiB yomthamo osebenzisekayo.

Esinye isigaba esikhethekile samadivayisi yi-SPARE. Amadivayisi okushintshanisa okushisayo, ngokungafani namadivayisi ajwayelekile, awawo wonke ama-pool esikhundleni sedivayisi eyodwa ebonakalayo. Uma noma iyiphi i-vdev echibini ihluleka futhi idivayisi eyisipele ixhunywe echibini futhi itholakala, khona-ke izojoyina ngokuzenzakalelayo i-vdev ethintekile.

Uma isixhunywe ku-vdev ethintekile, idivayisi yokumiselela iqala ukuthola amakhophi noma ukwakhiwa kabusha kwedatha okufanele ibe kudivayisi engekho. Ku-RAID yendabuko lokhu kubizwa ngokuthi "ukwakha kabusha", futhi ku-ZFS "iyaguquguquka".

Kubalulekile ukuqaphela ukuthi amadivaysi angena esikhundleni awawashintshi unomphela amadivayisi ahlulekile. Lokhu ukumiselela kwesikhashana kuphela ukunciphisa isikhathi esisithathayo ukuze i-vdev yehlise izinga. Ngemva kokuthi umlawuli emiselele idivayisi ye-vdev ehlulekile, ukuphinda kusetshenziswe kabusha kubuyiselwa kuleyo divayisi engunaphakade, futhi i-SPARE iyanqanyulwa ku-vdev futhi ibuyela ekubeni isipele salo lonke iphuli.

Amasethi edatha, amabhlogo kanye nemikhakha

Isethi elandelayo yamabhulokhi wokwakha okufanele uwaqonde ohambweni lwethu lweZFS ihlobene kancane nehardware nokunye okuningi okuphathelene nendlela idatha ngokwayo ehlelwa futhi igcinwe ngayo. Seqa izendlalelo ezimbalwa lapha - njenge-metaslab - ukugwema ukuhlanganisa imininingwane ngenkathi sigcina ukuqonda kwesakhiwo sonke.

Isethi yedatha

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza
Uma siqala ukudala isethi yedatha, ibonisa yonke indawo ye-pool etholakalayo. Bese sibeka i-quota - futhi sishintshe iphuzu lokukhweza. Umlingo!

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza
I-Zvol ngokuvamile iyidathasethi ekhishwe ungqimba lwesistimu yefayela, esiyishintshayo lapha ngohlelo lwefayela olujwayelekile lwe-ext4.

Isethi yedatha ye-ZFS icishe ifane nesistimu yefayela ekhweziwe evamile. Njengesistimu yefayela evamile, uma uthi nhlá ibonakala “ingenye nje ifolda.” Kepha njengezinhlelo zamafayela afakwe njalo, isethi ngayinye yedatha ye-ZFS inesethi yayo yezinto eziyisisekelo.

Okokuqala, isethi yedatha ingase ibe nesabelo esabelwe. Uma ufake zfs set quota=100G poolname/datasetname, lapho-ke ngeke ukwazi ukubhalela kufolda ekhweziwe /poolname/datasetname ngaphezu kwe-100 GiB.

Uyaphawula ukuba khona—nokungabikho—kwemiklamo ekuqaleni komugqa ngamunye? Isethi yedatha ngayinye inendawo yayo kukho kokubili isigaba se-ZFS kanye nesigaba sokunyuka kwesistimu. Akukho slash okuholayo esigabeni se-ZFS - uqala ngegama lechibi bese usendleleni usuka kudatha esethwe kwelandelayo. Ngokwesibonelo, pool/parent/child kusethi yedatha eqanjwe igama child ngaphansi kwedathasethi yomzali parent echibini elinegama lokudala pool.

Ngokuzenzakalelayo, indawo yokukhweza yedathasethi izolingana negama layo esigabeni se-ZFS, nge-slash ehamba phambili - ichibi eliqanjwe igama. pool agibele njenge /pool, isethi yedatha parent agibele phakathi /pool/parent, kanye nesethi yedatha yengane child agibele phakathi /pool/parent/child. Nokho, indawo yokukhweza yesistimu yesethi yedatha ingashintshwa.

Uma sibonisa zfs set mountpoint=/lol pool/parent/child, bese kuba isethi yedatha pool/parent/child ifakwe ohlelweni njenge /lol.

Ngokungeziwe kumasethi edatha, kufanele sikhulume ngamavolumu (zvols). Ivolumu icishe ifane nesethi yedatha, ngaphandle kokuthi empeleni ayinalo isistimu yefayela—iyidivayisi nje yokuvimba. Ungakwazi ngokwesibonelo ukudala zvol Ngegama mypool/myzvol, bese uyifometha ngohlelo lwefayela lwe-ext4, bese ufaka lolo hlelo lwefayela - manje usunohlelo lwefayela lwe-ext4, kodwa olunazo zonke izici zokuphepha ze-ZFS! Lokhu kungase kubonakale kuwubuwula kukhompuyutha eyodwa, kodwa kwenza umqondo owengeziwe njenge-backend lapho uthumela idivayisi ye-iSCSI.

Emabhuloki

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza
Ifayela limelwe ibhulokhi elilodwa noma amaningi. Ibhulokhi ngayinye igcinwa kudivayisi eyodwa ebonakalayo. Usayizi webhulokhi ngokuvamile ulingana nepharamitha usayizi werekhodi, kodwa kungancishiswa kube 2^ashift, uma iqukethe imethadatha noma ifayela elincane.

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza
Thina ngempela ngempela Asidlali ngesijeziso esikhulu sokusebenza uma ubeka i-ashift iphansi kakhulu

Echibini le-ZFS, yonke idatha, okuhlanganisa imethadatha, igcinwa kumabhulokhi. Usayizi webhulokhi omkhulu wesethi ngayinye yedatha uchazwa esakhiweni recordsize (usayizi werekhodi). Usayizi werekhodi ungashintsha, kodwa lokhu ngeke kushintshe usayizi noma indawo yanoma yimaphi amabhulokhi asevele ebhaliwe kusethi yedatha - kuthinta kuphela amabhulokhi amasha njengoba ebhalwa.

Ngaphandle uma kucaciswe ngenye indlela, usayizi wamanje wokufaka ozenzakalelayo ungu-128 KiB. Kuwuhlobo lokuhweba okunzima lapho ukusebenza kungeke kuphelele, kodwa kungeke kube kubi ezimweni eziningi. Recordsize ingasethelwa kunoma yiliphi inani ukusuka ku-4K ukuya ku-1M (nezilungiselelo ezengeziwe recordsize ungafaka ngisho nangokwengeziwe, kodwa lokhu akuvamile ukuba umqondo omuhle).

Noma yiliphi ibhulokhi libhekisela kudatha yefayela elilodwa kuphela—awukwazi ukuminyanisa amafayela amabili ahlukene ebhulokhini elilodwa. Ifayela ngalinye liqukethe ibhulokhi elilodwa noma amaningi, kuye ngosayizi walo. Uma usayizi wefayela umncane kunosayizi werekhodi, lizogcinwa kubhulokhi encane - isibonelo, ibhulokhi elinefayela elingu-2 KB lizothatha kuphela umkhakha owodwa we-4 KB kudiski.

Uma ifayela likhulu ngokwanele ukuthi lidinga amabhulokhi ambalwa, khona-ke konke okufakiwe kulelo fayela kuzoba ngosayizi recordsize - kufaka phakathi ukungena kokugcina, ingxenye eyinhloko okungenzeka ibe indawo engasetshenzisiwe.

Imiqulu yezol ayinayo indawo recordsize - esikhundleni salokho banempahla efanayo volblocksize.

Imikhakha

Isakhiwo sokugcina, esiyisisekelo kakhulu umkhakha. Iyunithi ephathekayo encane kakhulu engabhalelwa noma ifundwe kusukela kudivayisi yomsingathi. Emashumini ambalwa eminyaka, amadiski amaningi asebenzisa imikhakha ye-512-byte. Kulezi zinsuku, amadrayivu amaningi alungiselelwe imikhakha ye-4 KB, futhi amanye - ikakhulukazi ama-SSD - alungiselelwe imikhakha ye-8 KB noma emikhulu nakakhulu.

I-ZFS inesici esikuvumela ukuthi usethe usayizi womkhakha ngesandla. Lesi sakhiwo ashift. Ngokudidayo, i-ashift ingamandla amabili. Ngokwesibonelo, ashift=9 kusho usayizi womkhakha 2^9, noma 512 bytes.

I-ZFS ibuza isistimu yokusebenza ngolwazi oluningiliziwe mayelana nedivayisi ngayinye ye-block uma yengezwa ku-vdev entsha, futhi ngokuzenzakalelayo isetha i-ashift ngokufanele ngokusekelwe kulolo lwazi. Ngeshwa, amadrayivu amaningi aqamba amanga ngosayizi womkhakha wawo ukuze alondoloze ukuhambisana neWindows XP (eyayingakwazi ukuqonda amadrayivu nabanye osayizi bomkhakha).

Lokhu kusho ukuthi kunconywa kakhulu ukuthi umlawuli we-ZFS azi usayizi wangempela womkhakha wamadivayisi wabo futhi asethwe ngesandla ashift. Uma i-ashift isethwe incane kakhulu, inani lemisebenzi yokufunda/yokubhala liyakhula ngokomkhathi. Ngakho-ke, ukubhala "imikhakha" ye-512-byte emkhakheni wangempela we-4 KB kusho ukuthi kufanele ubhale "umkhakha" wokuqala, bese ufunda umkhakha we-4 KB, uwuguqule "ngomkhakha" wesibili wamabhayithi angu-512, uwubhale uwubuyisele kwentsha. 4 KB, nokunye kokungena ngakunye.

Emhlabeni wangempela, inhlawulo enjalo ithinta ama-Samsung EVO SSD, okufanele asebenze kuwo ashift=13, kodwa lawa ma-SSD aqamba amanga ngosayizi womkhakha wawo, ngakho-ke okuzenzakalelayo kusethwe ukuze ashift=9. Ngaphandle kwalapho umlawuli wesistimu onolwazi eshintsha lesi silungiselelo, le SSD iyasebenza Kancane i-HDD yamagnetic evamile.

Ukuze uqhathanise, ngokuba mkhulu kakhulu ashift cishe akukho nhlawulo. Akukho hit ukusebenza kwangempela, futhi ukwanda kwesikhala esingasetshenzisiwe akunamkhawulo (noma uziro uma ukuminyanisa kunikwe amandla). Ngakho-ke, sincoma kakhulu ukuthi ngisho nalawo madrayivu asebenzisa imikhakha ye-512-byte afakwe ashift=12 noma ngisho ashift=13ukubheka ngokuzethemba esikhathini esizayo.

Impahla ashift ifakwe kudivayisi ngayinye ye-virtual vdev, futhi hhayi echibini, njengoba abantu abaningi becabanga ngephutha - futhi akushintshi ngemva kokufakwa. Uma ushaye ngephutha ashift Uma ungeza i-vdev entsha echibini, ungcolise ngokungenakuguquleka lelo chibi ngedivayisi esebenza kancane futhi, njengomthetho, ayikho enye inketho ngaphandle kokucekela phansi ichibi bese uqala kabusha. Ngisho nokususa i-vdev ngeke kukusindise esimisweni esiphukile ashift!

Indlela yokukopisha-nokubhala

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza
Uma isistimu yefayela evamile idinga ukubhala kabusha idatha, ilungisa ibhulokhi ngayinye lapho itholakala khona

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza
Isistimu yefayela yokukopisha-ubhala ibhala inguqulo entsha yebhulokhi bese ivula inguqulo endala

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza
Ngokufingqa, uma singaziba ukuhlelwa kwangempela kwamabhulokhi, i-“data comet” yethu yenza kube lula “i-data worm” ehamba ukusuka kwesokunxele iye kwesokudla kumephu yesikhala esitholakalayo.

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza
Manje singathola umbono omuhle wokuthi izifinyezo zokukopisha-ubhala zisebenza kanjani - ibhulokhi ngalinye lingaba yizifinyezo eziningi, futhi lizoqhubeka kuze kube yilapho zonke izifinyezo ezihlobene nazo zishabalaliswa.

Indlela yeCopy on Write (CoW) iyisisekelo esiyisisekelo sokuthi yini eyenza iZFS ibe uhlelo olumangalisayo. Umqondo oyisisekelo ulula - uma ucela isistimu yefayela yendabuko ukuthi iguqule ifayela, izokwenza lokho okucelile. Uma ucela isistimu yefayela yokukopisha-phezu kokubhala ukuthi yenze into efanayo, izothi “kulungile”—kodwa izoqamba amanga kuwe.

Kunalokho, isistimu yefayela yokukopisha-ubhala ibhala inguqulo entsha yebhulokhi elungisiwe, bese ibuyekeza imethadatha yefayela ukuze isuse ukuxhumanisa ibhulokhi endala futhi iyihlobanise nebhulokhi entsha osanda kuyibhala.

Ukunqamula ibhulokhi endala nokuxhumanisa entsha kwenziwa ekusebenzeni okukodwa, ngakho-ke akukwazi ukuphazanyiswa - uma usetha kabusha amandla ngemva kokwenzeka kwalokhu, unenguqulo entsha yefayela, futhi uma usetha kabusha amandla ngaphambili, usunawo amandla. inguqulo endala. Kunoma yikuphi, ngeke kube khona ukungqubuzana ohlelweni lwefayela.

Kopisha-ukubhala ku-ZFS akwenzeki kuphela ezingeni lesistimu yefayela, kodwa futhi ezingeni lokuphatha idiski. Lokhu kusho ukuthi i-ZFS ayinakho ukuthola indawo emhlophe kurekhodi (umgodi ku-RAID) - isenzakalo lapho umugqa wawurekhodwe kancane kuphela ngaphambi kokuthi isistimu iphahlazeke, nomonakalo kumalungu afanayo ngemva kokuqaliswa kabusha. Lapha umugqa ubhalwe nge-athomu, i-vdev ihlale ilandelana, futhi UBob ungumalume wakho.

ZIL: Ilogi yenhloso ye-ZFS

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza
I-ZFS iphatha ukubhala okuvumelanayo ngendlela ekhethekile - ikugcina okwesikhashana kodwa ngokushesha ku-ZIL ngaphambi kokuyibhala unomphela kanye nokubhala okungavumelaniyo.

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza
Ngokuvamile, idatha ebhalelwe i-ZIL ayiphinda ifundwe. Kodwa lokhu kungenzeka ngemva kokuhluleka kwesistimu

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza
I-SLOG, noma idivayisi ye-LOG yesibili, imane ikhethekile - futhi okungcono kakhulu ishesha kakhulu - i-vdev lapho i-ZIL ingagcinwa ngokuhlukana nendawo yokugcina enkulu.

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza
Ngemuva kokuphahlazeka, yonke idatha engcolile ku-ZIL iphinda idlalwe - kulokhu, i-ZIL iku-SLOG, kulapho iphinda idlalwa khona.

Kunezigaba ezimbili eziyinhloko zokubhala: i-synchronous (sync) ne-asynchronous (async). Emisebenzini eminingi, iningi lokubhala alivumelanisi - uhlelo lwamafayela luvumela ukuthi ahlanganiswe futhi akhishwe ngamaqoqo, kuncishiswe ukuhlukana futhi kukhule ngokuphawulekayo okuphumayo.

Ukurekhodwa kokuvumelanisa kuyindaba ehluke ngokuphelele. Lapho uhlelo lokusebenza lucela ukubhala okuvumelanayo, lutshela isistimu yefayela: "Kudingeka wenze lokhu kumemori engaguquki. khona manje, futhi kuze kube yileso sikhathi akukho engingakwenza.” Ngakho-ke, ukubhala okuvumelanayo kufanele kuzibophezele kudiski ngokushesha - futhi uma lokhu kwandisa ukuhlukana noma kunciphisa ukuphuma, makube njalo.

I-ZFS iphatha imibhalo ehambisanayo ngendlela ehlukile kunezinhlelo zefayela ezijwayelekile—esikhundleni sokuwasusa ngokushesha endaweni evamile yokugcina izinto, i-ZFS iwanikela endaweni ekhethekile yokugcina ebizwa ngokuthi i-ZFS Intent Log, noma i-ZIL. Iqhinga wukuthi la marekhodi futhi hlala enkumbulweni, uhlanganiswe nezicelo ezijwayelekile zokubhala ezingavumelanisiwe, ukuze kamuva zifakwe endaweni yokugcina njengama-TXG ajwayelekile (Amaqembu Okwenziwayo).

Ngesikhathi sokusebenza okuvamile, i-ZIL iyabhalwa futhi ngeke iphinde ifundwe. Lapho, ngemva kwemizuzwana embalwa, amarekhodi asuka ku-ZIL esezibophezele ekugcinweni okuyinhloko kuma-TXG avamile asuka ku-RAM, akhishwa ku-ZIL. Isikhathi kuphela lapho kufundwa okuthile ku-ZIL lapho ungenisa ichibi.

Uma kwenzeka ukwehluleka kwe-ZFS—ukuphahlazeka kwesistimu yokusebenza noma ukucisha kukagesi—ngenkathi kunedatha ku-ZIL, leyo datha izofundwa ngesikhathi sokungenisa kwechibi elilandelayo (isibonelo, uma uhlelo lwe-failover luqalwa kabusha). Noma yini eku-ZIL izofundwa, ihlanganiswe ibe ngama-TXG, inikezelwe esitolo esikhulu, bese ikhishwa ku-ZIL ngesikhathi sohlelo lokungenisa.

Elinye lamakilasi omsizi we-vdev libizwa nge-LOG noma i-SLOG, idivayisi ye-LOG yesibili. Inomsebenzi owodwa - ukunikeza ichibi elihlukile futhi, mhlawumbe, ngokushesha okukhulu, elinokumelana nokubhala okuphezulu kakhulu, idivayisi ye-vdev yokugcina i-ZIL, esikhundleni sokugcina i-ZIL kusitoreji esikhulu se-vdev. I-ZIL ngokwayo iziphatha ngendlela efanayo kungakhathaliseki indawo yokugcina, kodwa uma i-vdev ene-LOG inomsebenzi wokubhala ophezulu kakhulu, khona-ke ukubhala okuvumelanayo kuzoshesha.

Ukwengeza i-vdev nge-LOG echibini akusebenzi ngeke thuthukisa ukusebenza kokubhala okungavumelaniyo - noma ngabe uphoqa konke ukubhala ku-ZIL nge zfs set sync=always, zisazoxhunyaniswa nesitoreji esikhulu ku-TXG ngendlela efanayo nangejubane elifanayo nangaphandle kwelogi. Okuwukuphela kokuthuthukiswa kokusebenza okuqondile ukubambezeleka kokubhala okuvumelanayo (njengoba isivinini sokungena esiphezulu senza imisebenzi isheshe sync).

Kodwa-ke, endaweni esivele idinga ukubhala okuningi okuvumelanayo, i-vdev LOG ingasheshisa ngokungaqondile ukubhala okungavumelani nokufunda okungagciniwe. Ukukhipha amarekhodi e-ZIL ku-LOGE ehlukile ye-vdev kusho umbango omncane we-IOPS kusitoreji esiyinhloko, okuthuthukisa ukusebenza kwakho konke ukufunda nokubhala ngezinga elithile.

Izifinyezo

Indlela yokukopisha-phezu kokubhala iyisisekelo esidingekayo sezifinyezo ze-athomu ze-ZFS kanye nokuphindaphindwa kwe-asynchronous. Isistimu yefayela esebenzayo inesihlahla sesikhombi esimaka konke okufakiwe ngedatha yamanje - uma uthatha isifinyezo, uvele wenze ikhophi yalesi sihlahla sesikhombi.

Lapho irekhodi libhalwa phezu kwesistimu yefayela esebenzayo, i-ZFS iqala ukubhala inguqulo entsha yebhulokhi endaweni engasetshenzisiwe. Bese ikhipha inguqulo endala yebhulokhi ohlelweni lwamanje lwefayela. Kodwa uma ezinye izifinyezo zikhomba ibhulokhi endala, isahlala ingashintshile. Ibhulokhi elidala ngeke libuyiselwe njengendawo yamahhala kuze kube yilapho zonke izifinyezo ezikhomba lelo bhulokhi zibhujiswa!

ukuphindaphinda

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza
Ilabhulali yami yeSteam ngo-2015 yayiyi-158 GiB futhi ifaka amafayela ayi-126. Lokhu kusondele kakhulu esimweni esifanele se-rsync - Ukuphindaphinda kwe-ZFS kunethiwekhi "kuphela" ku-927% ngokushesha.

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza
Kunethiwekhi efanayo, ukuphindaphinda i-40GB eyodwa Windows 7 ifayela lesithombe somshini obonakalayo yindaba ehluke ngokuphelele. Ukuphindaphinda kwe-ZFS kushesha izikhathi ezingama-289 kune-rsync—noma “kuphela” izikhathi eziyi-161 ngokushesha uma unolwazi olwanele lokubiza i-rsync ngokushintsha --inplace.

Izisekelo ze-ZFS: Isitoreji kanye nokusebenza
Uma isithombe se-VM sikala, izinkinga ze-rsync zikala ngaso. Usayizi we-1,9 TiB awumkhulu kangako ngesithombe sesimanje se-VM — kodwa mkhulu ngokwanele ukuthi ukuphindaphinda kwe-ZFS kushesha izikhathi eziyi-1148 kune-rsync, ngisho nengxabano ye-rsync --inplace

Uma usuqonda ukuthi izifinyezo zisebenza kanjani, kuzoba lula ukubamba ingqikithi yokuphindaphinda. Njengoba isifinyezo simane siyisihlahla sezinkomba zokuqopha, kulandela ukuthi uma senza zfs send isifinyezo, bese sithumela lesi sihlahla nawo wonke amarekhodi ahlobene naso. Uma sidlula lokhu zfs send в zfs receive entweni ehlosiwe, ibhala kokubili okuqukethwe kwangempela kwebhulokhi kanye nesihlahla sezinkomba ezibhekisela emabhuloki kusethi yedatha eqondiwe.

Izinto ziba mnandi nakakhulu okwesibili zfs send. Manje sinezinhlelo ezimbili, ngayinye equkethe poolname/datasetname@1, bese uthatha isifinyezo esisha poolname/datasetname@2. Ngakho-ke, echibini lomthombo onalo datasetname@1 и datasetname@2, futhi echibini okuqondiwe kukhona kuphela isifinyezo sokuqala datasetname@1.

Ngoba phakathi komthombo nokuhlosiwe sinesithombe esifushane esivamile datasetname@1, singakwenza ngokwandayo zfs send phezu kwayo. Uma sitshela uhlelo zfs send -i poolname/datasetname@1 poolname/datasetname@2, iqhathanisa izihlahla ezimbili zokukhomba. Noma yiziphi izikhombisi ezikhona kuphela @2, ngokusobala ibhekisela kumabhulokhi amasha - ngakho-ke sizodinga okuqukethwe kwalawo mabhulokhi.

Kusistimu yesilawuli kude, ukucubungula kuyakhuphuka send elula nje. Okokuqala sibhala konke okufakiwe okusha okufakwe ekusakazweni send, bese wengeza izinkomba kulawa mabhulokhi. Voila, sinakho @2 ohlelweni olusha!

Ukuphindaphinda okukhulayo kwe-ZFS okuyi-asynchronous intuthuko enkulu kunezindlela zangaphambilini ezingezona izifinyezo ezifana ne-rsync. Kuzo zombili izimo, kudluliselwa idatha eshintshiwe kuphela - kodwa i-rsync kufanele iqale funda kusuka kudiski yonke idatha nhlangothi zombili ukuhlola isamba bese uyiqhathanisa. Ngokuphambene, ukuphindaphinda kwe-ZFS akufunda lutho ngaphandle kwezihlahla ezikhombayo—nanoma yimaphi amabhlogo angamelwe kusifinyezo esiphelele.

Ukucindezelwa okwakhelwe ngaphakathi

Indlela yokukopisha-phezu kokubhala futhi yenza lula isistimu yokuminyanisa eyakhelwe ngaphakathi. Ohlelweni lwamafayela oluvamile, ukucindezela kuyinkinga - kokubili inguqulo endala kanye nenguqulo entsha yedatha eshintshiwe kusendaweni efanayo.

Uma ucabangela ucezu lwedatha phakathi kwefayela eliqala impilo yalo njenge-megabyte ye-zero kusuka ku-0x00000000 nokunye - kulula kakhulu ukuyicindezela emkhakheni owodwa kudiski. Kodwa kwenzekani uma sishintsha le megabhayithi yoziro nge-megabyte yedatha engenakucindezelwa, njenge-JPEG noma umsindo ongahleliwe? Kungazelelwe, leyo megabyte yedatha ngeke idinge eyodwa, kodwa imikhakha ye-256 4 KB, futhi umkhakha owodwa kuphela ubekelwe kuleso sikhala sediski.

I-ZFS ayinayo le nkinga, njengoba amarekhodi aguquliwe ahlala ebhalelwa indawo engasetshenzisiwe - ibhulokhi yokuqala ithatha ingxenye eyodwa ye-4 KB, futhi ukubhala okusha kuzothatha u-256, kodwa lokhu akuyona inkinga - ingxenye esanda kuguqulwa "ophakathi" kwefayela bekuzobhalwa endaweni engasetshenziswanga kungakhathaliseki ukuthi ubukhulu balo bushintshile noma cha, ngakho-ke lesi isimo esijwayelekile ngokuphelele kuZFS.

Ukuminyanisa okwakhelwe ngaphakathi kwe-ZFS kukhutshaziwe ngokuzenzakalelayo, futhi isistimu inikezela ngama-algorithms axhumeke - okwamanje afaka i-LZ4, i-gzip (1-9), i-LZJB ne-ZLE.

  • I-LZ4 i-algorithm yokusakaza-bukhoma enikezela ngokuminyanisa okusheshayo nokucindezelwa kanye nezinzuzo zokusebenza ezimweni eziningi zokusetshenziswa - ngisho nakuma-CPU ahamba kancane.
  • I-GZIP i-algorithm ehlonishwayo bonke abasebenzisi be-Unix abayaziyo nabayithandayo. Ingasetshenziswa ngamaleveli okuminyanisa 1-9, ngokwenyuka kwesilinganiso sokucindezela nokusetshenziswa kwe-CPU njengoba usondela kuzinga 9. I-algorithm ifaneleka kahle kuwo wonke umbhalo (noma ezinye izimo zokusetshenziswa ezicindezelwa kakhulu), kodwa ngokuvamile ibangela izinkinga ze-CPU uma kungenjalo - isebenzise. ngokuqapha, ikakhulukazi emazingeni aphezulu.
  • LZJB - I-algorithm yoqobo ku-ZFS. Isiphelelwe yisikhathi futhi akufanele isasetshenziswa, i-LZ4 iphakeme ngayo yonke indlela.
  • KABI - Umbhalo wekhodi wezinga elinguziro, Umbhalo Wekhodi Wezinga Eliziro. Ayithinti nhlobo idatha evamile, kodwa icindezela ukulandelana okukhulu koziro. Iwusizo kumasethi edatha angenakucindezelwa ngokugcwele (njenge-JPEG, i-MP4 noma amanye amafomethi asevele ecindezelwe) njengoba ishaya indiva idatha engenakucindezelwa kodwa icindezela isikhala esingasetshenzisiwe kumarekhodi angumphumela.

Sincoma ukucindezelwa kwe-LZ4 cishe kuwo wonke amacala okusebenzisa; isijeziso sokusebenza lapho usebenza nedatha engenakuqhathaniswa sincane kakhulu, futhi ukukhula ukusebenza kwedatha evamile kubalulekile. Ukukopisha isithombe somshini obonakalayo wokufakwa okusha kwesistimu yokusebenza ye-Windows (i-OS esanda kufakwa, ayikho idatha ngaphakathi okwamanje) nge compression=lz4 kudlule u-27% ngokushesha kunalokhu compression=none, ku lokhu kuhlolwa kusuka ku-2015.

I-ARC - inqolobane yokushintsha eguquguqukayo

I-ZFS iwukuphela kwesistimu yefayela yesimanje esiyaziyo esebenzisa eyayo indlela yokulondoloza inqolobane yokufunda, kunokuthembela kunqolobane yekhasi lesistimu yokusebenza ukuze igcine amakhophi wamabhulokhi asanda kufundwa ku-RAM.

Yize inqolobane yomdabu ingenayo izinkinga zayo - i-ZFS ayikwazi ukuphendula izicelo zokwabiwa kwenkumbulo entsha ngokushesha njenge-kernel, ngakho-ke ucingo olusha malloc() Ukunikezwa kwenkumbulo kungase kuhluleke uma kudinga i-RAM okwamanje ehlala i-ARC. Kodwa kunezizathu ezinhle zokusebenzisa i-cache yakho, okungenani okwamanje.

Zonke izinhlelo zokusebenza zesimanjemanje, ezihlanganisa i-MacOS, iWindows, i-Linux ne-BSD, zisebenzisa i-algorithm ye-LRU (Okungasetshenziswa Kancane Kamuva) ukuze kuqalise inqolobane yekhasi. Lena i-algorithm yakudala ephusha ibhulokhi egcinwe kunqolobane "phezulu kolayini" ngemva kokufunda ngakunye futhi iphushele amabhlokhi "phansi komugqa" njengoba kudingekile ukuze wengeze okuphuthelwe kwenqolobane entsha (amabhulokhi okufanele ngabe afundwa kudiski kunokuba kusuka kunqolobane) kuye phezulu.

Ngokuvamile i-algorithm isebenza kahle, kodwa kumasistimu anamasethi amakhulu edatha esebenzayo, i-LRU iholela kalula ekushayeni—ukukhipha amabhulokhi adingeka njalo ukuze kuvuleke indawo yamabhulokhi angeke aphinde afundwe kunqolobane futhi.

I-ARC i-algorithm ehlakaniphile engabhekwa njengenqolobane "enesisindo". Ngaso sonke isikhathi lapho kufundwa ibhulokhi egcinwe kunqolobane, iba nzima kakhulu ukuyikhipha - futhi nangemva kokuba ibhulokhi isikhishiwe. kulandelelwe esikhathini esithile. Ibhulokhi elikhishiwe kodwa elidinga ukufundwa libuyiselwe kunqolobane nalo lizoba nzima kakhulu.

Umphumela wokugcina wakho konke lokhu yinqolobane enenani eliphakeme kakhulu le-hit-isilinganiso phakathi kwe-cache hits (ifundeka kunqolobane) nokugeja (ifundwa kudiski). Lesi yisibalo esibaluleke kakhulu - akukhona nje kuphela ukuthi i-cache ishaya ngokwazo isevisi ye-oda yobukhulu ngokushesha, ukuphuthelwa kwenqolobane nakho kungaseviswa ngokushesha, njengoba kuba namahithi amaningi enqolobane, izicelo ezihambisanayo ezimbalwa zokudisk futhi kwehlisa ukubambezeleka kwalabo abaphuthelwe abasele. okufanele isetshenziswe ngediski.

isiphetho

Manje njengoba sesihlanganise i-semantics eyisisekelo ye-ZFS—indlela ukubhala-on-kusebenza okusebenza ngayo, kanye nobudlelwano phakathi kwamachibi okugcina, amadivaysi abonakalayo, amabhlogo, imikhakha, namafayela—sesilungele ukuxoxa ngokusebenza komhlaba wangempela nawo. izinombolo zangempela.

Engxenyeni elandelayo, sizobheka ukusebenza kwangempela kwamachibi e-vdev ane-mirrored ne-RAIDz, uma kuqhathaniswa namanye, futhi futhi kuqhathaniswa ne-Linux kernel RAID topology esiye sayihlola. phambilini.

Ekuqaleni besifuna ukumboza izisekelo kuphela - ama-topology e-ZFS uqobo - kepha ngemuva kwalokho kanjalo Sizolungela ukukhuluma ngokucushwa okuthuthuke kakhulu kanye nokulungisa i-ZFS, okuhlanganisa ukusetshenziswa kwezinhlobo ze-vdev ezisizayo ezifana ne-L2ARC, i-SLOG kanye Nokwabiwa Okukhethekile.

Source: www.habr.com

Engeza amazwana