Bażi ZFS: Ħażna u Prestazzjoni

Bażi ZFS: Ħażna u Prestazzjoni

Din ir-rebbiegħa diġà ddiskutejna xi suġġetti introduttorji, eż. kif tiċċekkja l-veloċità tad-drajvs tiegħek и x'inhu RAID. Fit-tieni waħda minn dawn, aħna saħansitra wegħedna li nkomplu nistudjaw il-prestazzjoni ta 'diversi topoloġiji multi-disk f'ZFS. Din hija s-sistema ta 'fajls tal-ġenerazzjoni li jmiss li issa qed tiġi skjerata kullimkien minn Apple li Ubuntu.

Ukoll, illum hija l-aħjar ġurnata biex tiffamiljarizza ma' ZFS, qarrejja kurjużi. Kun af li fil-valutazzjoni umli tal-iżviluppatur OpenZFS Matt Ahrens, "huwa tassew diffiċli."

Iżda qabel ma naslu għan-numri—u se jkun hemm, inwiegħed—għall-għażliet kollha ta’ konfigurazzjoni ZFS ta’ tmien diski, irridu nitkellmu dwar kif B'mod ġenerali, ZFS jaħżen data fuq disk.

Zpool, vdev u apparat

Bażi ZFS: Ħażna u Prestazzjoni
Din id-dijagramma tal-ġabra sħiħa tinkludi tliet vdevs awżiljarji, wieħed minn kull klassi, u erbgħa għal RAIDz2

Bażi ZFS: Ħażna u Prestazzjoni
Normalment ma jkun hemm l-ebda raġuni biex toħloq ġabra ta’ tipi u daqsijiet ta’ vdev li ma jaqblux – imma jekk trid, m’hemm xejn li jwaqqafk milli tagħmel dan

Biex tifhem tassew is-sistema tal-fajls ZFS, trid tagħti ħarsa mill-qrib lejn l-istruttura attwali tagħha. L-ewwel, ZFS jgħaqqad il-volum tradizzjonali u s-saffi ta 'ġestjoni tas-sistema tal-fajls. It-tieni, juża mekkaniżmu transazzjonali kopja fuq kitba. Dawn il-karatteristiċi jfissru li s-sistema hija strutturalment differenti ħafna minn sistemi ta 'fajls konvenzjonali u arrays RAID. L-ewwel sett ta 'blokki tal-bini bażiċi li wieħed jifhem huma l-pool tal-ħażna (zpool), apparat virtwali (vdev) u apparat reali (apparat).

zpool

Il-pool tal-ħażna zpool huwa l-ogħla struttura ZFS. Kull pool fih apparat virtwali wieħed jew aktar. Min-naħa tagħhom, kull wieħed minnhom fih mezz reali wieħed jew aktar (apparat). Il-pools virtwali huma unitajiet awtonomi. Kompjuter fiżiku wieħed jista 'jkun fih żewġ pools separati jew aktar, iżda kull wieħed huwa kompletament indipendenti mill-oħrajn. Il-pools ma jistgħux jaqsmu apparat virtwali.

Ir-redundancy ZFS hija fil-livell tal-apparat virtwali, mhux fil-livell tal-pool. M'hemm assolutament l-ebda redundancy fil-livell tal-pool—jekk vdev jew vdev dedikat jintilef, il-pool kollu jintilef flimkien miegħu.

Il-pools tal-ħażna moderni jistgħu jgħixu mit-telf tal-cache jew il-log ta 'apparat virtwali - għalkemm jistgħu jitilfu ammont żgħir ta' dejta maħmuġa jekk jitilfu l-log vdev waqt qtugħ tad-dawl jew crash tas-sistema.

Hemm kunċett żbaljat komuni li ZFS "data stripes" huma miktuba madwar il-pool kollu. Dan mhux minnu. Zpool mhuwiex RAID0 umoristiċi, huwa aktar wieħed umoristiku JBOD b'mekkaniżmu kumpless ta' distribuzzjoni varjabbli.

Fil-biċċa l-kbira, ir-rekords huma mqassma fost l-apparati virtwali disponibbli skont l-ispazju ħieles disponibbli, għalhekk fit-teorija se jimtlew kollha fl-istess ħin. Verżjonijiet aktar reċenti ta 'ZFS iqisu l-użu attwali tal-vdev (utilizzazzjoni) - jekk apparat virtwali wieħed ikun aktar okkupat b'mod sinifikanti minn ieħor (pereżempju, minħabba t-tagħbija tal-qari), se jinqabeż temporanjament għall-kitbiet, minkejja li jkollu l-ogħla proporzjon ta' spazju ħieles.

Il-mekkaniżmu ta 'skoperta tar-riċiklaġġ mibni fil-metodi moderni ta' allokazzjoni ta 'kitba ZFS jista' jnaqqas il-latenza u jżid il-fluss matul perjodi ta 'tagħbija mhux tas-soltu għolja—iżda ma jagħmilx hekk. carte blanche għal taħlit involontarju ta' HDDs bil-mod u SSDs veloċi f'ġabra waħda. Tali grupp mhux ugwali xorta se jopera bil-veloċità tal-apparat l-aktar bil-mod, jiġifieri, bħallikieku kien magħmul kompletament minn tali apparati.

vdev

Kull pool ta' ħażna jikkonsisti f'apparat virtwali wieħed jew aktar (vdev). Min-naħa tiegħu, kull vdev jinkludi apparat reali wieħed jew aktar. Il-biċċa l-kbira tal-apparati virtwali jintużaw għall-ħażna tad-dejta sempliċi, iżda hemm diversi klassijiet ta’ helper vdev, inklużi CACHE, LOG, u SPEĊJALI. Kull wieħed minn dawn it-tipi ta 'vdev jista' jkollu waħda minn ħames topoloġiji: apparat wieħed, RAIDz1, RAIDz2, RAIDz3 jew mera.

RAIDz1, RAIDz2 u RAIDz3 huma varjetajiet speċjali ta 'dak li l-anzjani kienu jsejħu RAID b'parità doppja (djagonali). 1, 2 u 3 jirreferu għal kemm huma allokati blokki ta' parità għal kull korsija tad-dejta. Minflok ma jkollhom diski separati biex jipprovdu parità, l-apparati RAIDz virtwali jqassmu l-parità b'mod semi-indaqs madwar id-diski. Array RAIDz jista' jitlef diski daqs kemm għandu blokki ta' parità; jekk jitlef ieħor, se jfalli u jieħu l-pool tal-ħażna magħha.

F'apparat virtwali mera (mirror vdev), kull blokka hija maħżuna fuq kull apparat fil-vdev. Għalkemm mirja b'żewġ wiesgħa huma l-aktar komuni, mera jista 'jkollha kwalunkwe numru arbitrarju ta' apparati—f'installazzjonijiet akbar, it-tripli spiss jintużaw biex itejbu l-prestazzjoni tal-qari u t-tolleranza tal-ħsarat. Mera tal-vdev tista' tgħix għal kwalunkwe falliment sakemm mill-inqas apparat wieħed fil-vdev jibqa' operattiv.

Vdevs uniċi huma intrinsikament perikolużi. Apparat virtwali bħal dan mhux se jgħix falliment wieħed - u jekk jintuża bħala ħażna jew vdev speċjali, allura n-nuqqas tiegħu jwassal għall-qerda tal-pool kollu. Oqgħod attent ħafna hawn.

L-apparati virtwali CACHE, LOG, u SPEĊJALI jistgħu jinħolqu fi kwalunkwe topoloġiji ta’ hawn fuq - imma ftakar li li titlef apparat virtwali SPEĊJALI jfisser li titlef il-pool, għalhekk topoloġija żejda hija rakkomandata ħafna.

apparat

Dan huwa probabbilment l-eħfef terminu biex jinftiehem f'ZFS - huwa litteralment mezz ta 'aċċess każwali blokk. Ftakar li l-apparati virtwali huma magħmula minn apparati individwali, u ġabra hija magħmula minn apparati virtwali.

Id-diski, jew manjetiċi jew solidi, huma l-aktar apparati ta' blokki komuni użati bħala l-blokki tal-bini ta' vdev. Madankollu, kwalunkwe apparat b'deskrittur f'/dev se jagħmel - għalhekk arrays RAID tal-ħardwer kollu jistgħu jintużaw bħala apparati separati.

Fajl mhux maħdum sempliċi huwa wieħed mill-aktar apparati ta 'blokk alternattivi importanti li minnu jista' jinbena vdev. Test pools minn fajls skarsi huwa mod konvenjenti ħafna biex tivverifika l-kmandi tal-pool u tara kemm hemm spazju disponibbli f'pool jew apparat virtwali ta' topoloġija partikolari.

Bażi ZFS: Ħażna u Prestazzjoni
Tista 'toħloq ġabra tat-test minn fajls skars fi ftit sekondi biss - imma tinsiex tħassar il-ġabra kollha u l-komponenti tagħha wara

Ejja ngħidu li trid server ta' tmien diski u tippjana li tuża diski ta' 10 TB (~9300 GiB) - iżda m'intix ċert liema topoloġija taqbel l-aħjar għall-bżonnijiet tiegħek. Fl-eżempju ta 'hawn fuq, nibnu ġabra ta' test minn fajls skars fi ftit sekondi - u issa nafu li RAIDz2 vdev ta 'tmien diski ta' 10 TB jipprovdi 50 TiB ta 'kapaċità użabbli.

Klassi speċjali oħra ta 'apparati hija SPARE. L-apparati hot-swap, b'differenza mill-apparati regolari, jappartjenu għall-pool kollu aktar milli għal apparat virtwali wieħed. Jekk xi vdev fil-pool ifalli u apparat spare huwa konness mal-pool u disponibbli, allura awtomatikament jingħaqad mal-vdev affettwat.

Ladarba konness mal-vdev affettwat, l-apparat ta 'sostituzzjoni jibda jirċievi kopji jew rikostruzzjonijiet tad-dejta li għandha tkun fuq l-apparat nieqes. Fir-RAID tradizzjonali dan jissejjaħ "rikostruzzjoni", u f'ZFS huwa "resilvering".

Huwa importanti li wieħed jinnota li l-apparati ta 'sostituzzjoni ma jissostitwixxux b'mod permanenti apparati falluti. Dan huwa biss sostituzzjoni temporanja biex jitnaqqas iż-żmien li jieħu biex vdev jiddegrada. Wara li l-amministratur jissostitwixxi l-apparat tal-vdev li falla, ir-redundancy tiġi restawrata għal dak l-apparat permanenti, u l-ISPARE jiġi skonnettjat mill-vdev u jerġa' lura biex ikun spare għall-pool kollu.

Settijiet tad-dejta, blokki u setturi

Is-sett li jmiss ta 'blokki tal-bini li wieħed jifhem fil-vjaġġ tagħna ZFS jirrelata inqas mal-ħardwer u aktar x'jaqsam ma' kif id-dejta nnifisha hija organizzata u maħżuna. Qegħdin naqbżu ftit saffi hawn - bħal metaslab - biex nevitaw li nħaffu d-dettalji filwaqt li nżommu fehim tal-istruttura ġenerali.

Sett tad-dejta

Bażi ZFS: Ħażna u Prestazzjoni
Meta noħolqu l-ewwel dataset, dan juri l-ispazju kollu tal-pool disponibbli. Imbagħad nissettjaw il-kwota - u nibdlu l-punt tal-muntaġġ. Magic!

Bażi ZFS: Ħażna u Prestazzjoni
Zvol huwa l-aktar sempliċi dataset imqaxxar mis-saff tas-sistema tal-fajls tiegħu, li nissostitwixxu hawnhekk b'sistema ta 'fajls ext4 kompletament normali

Is-sett tad-dejta ZFS huwa bejn wieħed u ieħor l-istess bħal sistema ta 'fajls immuntata standard. Bħal sistema ta 'fajls regolari, mal-ewwel daqqa t'għajn tidher li hija "folder ieħor biss." Iżda bħal sistemi ta 'fajls immuntati regolari, kull sett ta' dejta ZFS għandu s-sett ta 'proprjetajiet bażiċi tiegħu stess.

L-ewwelnett, sett ta' dejta jista' jkollu kwota assenjata. Jekk tinstalla zfs set quota=100G poolname/datasetname, allura ma tkunx tista 'tikteb fil-folder immuntat /poolname/datasetname aktar minn 100 GiB.

Innota l-preżenza—u n-nuqqas—ta’ slashes fil-bidu ta’ kull linja? Kull sett tad-dejta għandu l-post tiegħu kemm fil-ġerarkija ZFS kif ukoll fil-ġerarkija tal-immuntar tas-sistema. M'hemm l-ebda slash ewlieni fil-ġerarkija ZFS—tibda bl-isem tal-grupp u mbagħad il-mogħdija minn sett ta 'dejta għal ieħor. Pereżempju, pool/parent/child għal sett tad-dejta msemmi child taħt id-dataset prinċipali parent f'pool b'isem kreattiv pool.

B'mod awtomatiku, il-punt tal-muntaġġ ta' sett tad-dejta se jkun ekwivalenti għal ismu fil-ġerarkija ZFS, b'linja mmejla ewlenija - il-ġabra msemmija pool immuntat bħala /pool, sett tad-data parent immuntat fi /pool/parent, u s-sett tad-dejta tat-tfal child immuntat fi /pool/parent/child. Madankollu, il-punt tal-muntaġġ tas-sistema tas-sett tad-dejta jista' jinbidel.

Jekk nindikaw zfs set mountpoint=/lol pool/parent/child, imbagħad is-sett tad-dejta pool/parent/child immuntat fis-sistema bħala /lol.

Minbarra s-settijiet tad-dejta, għandna nsemmu volumi (zvols). Volum huwa bejn wieħed u ieħor l-istess bħal sett ta 'dejta, ħlief li fil-fatt m'għandux sistema ta' fajls—huwa biss mezz ta 'blokk. Tista 'per eżempju toħloq zvol Bl-isem mypool/myzvol, imbagħad ifformattjaha b'sistema ta 'fajls ext4, u mbagħad immonta dik is-sistema ta' fajls - issa għandek sistema ta 'fajls ext4, iżda bil-karatteristiċi ta' sigurtà kollha ta 'ZFS! Dan jista 'jidher iblah fuq kompjuter wieħed, iżda jagħmel ħafna aktar sens bħala backend meta tesporta apparat iSCSI.

Blokki

Bażi ZFS: Ħażna u Prestazzjoni
Fajl huwa rappreżentat minn blokka waħda jew aktar. Kull blokka hija maħżuna fuq apparat virtwali wieħed. Id-daqs tal-blokk huwa ġeneralment ugwali għall-parametru daqs tar-rekords, iżda tista 'titnaqqas għal 2^ashift, jekk ikun fih metadata jew fajl żgħir.

Bażi ZFS: Ħażna u Prestazzjoni
Aħna verament tassew Aħna mhux qed niċċajta dwar il-piena kbira tal-prestazzjoni jekk issettja shift baxx wisq

F'ġabra ZFS, id-dejta kollha, inkluża l-metadejta, tinħażen fi blokki. Id-daqs massimu tal-blokk għal kull sett tad-dejta huwa definit fil-proprjetà recordsize (daqs tar-rekord). Id-daqs tar-rekord jista 'jinbidel, iżda dan mhux se jbiddel id-daqs jew il-post ta' xi blokki li diġà nkitbu fis-sett tad-dejta - jaffettwa biss blokki ġodda hekk kif jinkitbu.

Sakemm ma jkunx speċifikat mod ieħor, id-daqs tad-dħul awtomatiku attwali huwa 128 KiB. Huwa tip ta 'kompromess iebsa fejn il-prestazzjoni mhux se tkun perfetta, iżda mhux se tkun terribbli f'ħafna każijiet. Recordsize jista 'jiġi ssettjat għal kwalunkwe valur minn 4K sa 1M (b'settings addizzjonali recordsize tista 'tinstalla saħansitra aktar, iżda din rari hija idea tajba).

Kwalunkwe blokka tirreferi għad-dejta ta 'fajl wieħed biss—ma tistax tagħfas żewġ fajls differenti fi blokka waħda. Kull fajl jikkonsisti fi blokka waħda jew aktar, skont id-daqs tiegħu. Jekk id-daqs tal-fajl huwa iżgħar mid-daqs tar-rekord, ikun maħżun fi blokk iżgħar—per eżempju, blokka li jkun fiha fajl 2KiB se tokkupa biss settur wieħed 4KiB fuq disk.

Jekk il-fajl huwa kbir biżżejjed biex jeħtieġ diversi blokki, allura l-entrati kollha għal dak il-fajl se jkunu ta 'daqs recordsize - inkluża l-aħħar entrata, li l-parti prinċipali tagħha tista' tkun spazju mhux użat.

volumi zvol m'għandhomx il-proprjetà recordsize - minflok għandhom il-proprjetà ekwivalenti volblocksize.

Setturi

L-aħħar, l-aktar element bażiku tal-bini huwa s-settur. Hija l-iżgħar unità fiżika li tista' tinkiteb jew tinqara minn apparat ospitanti. Għal bosta deċennji, il-biċċa l-kbira tad-diski użaw setturi ta '512-byte. Dawn il-ġranet, il-biċċa l-kbira tad-drajvs huma kkonfigurati għal setturi ta '4KiB, u xi wħud—speċjalment SSDs—huma kkonfigurati għal setturi ta' 8KiB jew saħansitra akbar.

ZFS għandu karatteristika li tippermettilek issettja manwalment id-daqs tas-settur. Din il-proprjetà ashift. B'mod kemxejn konfuż, ashift huwa qawwa ta 'tnejn. Pereżempju, ashift=9 tfisser daqs tas-settur 2^9, jew 512 bytes.

ZFS jitlob lis-sistema operattiva għal informazzjoni dettaljata dwar kull apparat blokk meta jiġi miżjud ma 'vdev ġdid, u teoretikament awtomatikament jistabbilixxi ashift b'mod xieraq ibbażat fuq dik l-informazzjoni. Sfortunatament, ħafna drives jimteddu dwar id-daqs tas-settur tagħhom sabiex iżommu l-kompatibilità mal-Windows XP (li ma setgħetx tifhem drives b'daqsijiet oħra tas-settur).

Dan ifisser li huwa rakkomandat ħafna li l-amministratur ZFS ikun jaf id-daqs attwali tas-settur tal-apparat tagħhom u ssettja manwalment ashift. Jekk ashift huwa ssettjat żgħir wisq, in-numru ta 'operazzjonijiet ta' qari/kitba jiżdied b'mod astronomiku. Għalhekk, il-kitba ta' "setturi" ta' 512 byte f'settur reali ta' 4KiB tfisser li jkollok tikteb l-ewwel "settur", imbagħad taqra s-settur 4KiB, timmodifikah bit-tieni "settur" ta' 512-byte, iktebha lura fis-settur 4KiB il-ġdid. , eċċ. għal kull dħul.

Fid-dinja reali, penali bħal din taffettwa Samsung EVO SSDs, li għalihom għandha tapplika ashift=13, iżda dawn l-SSDs jinsabu dwar id-daqs tas-settur tagħhom, u għalhekk in-nuqqas huwa ssettjat għal ashift=9. Sakemm amministratur tas-sistema b'esperjenza ma jibdilx dan is-setting, dan l-SSD jaħdem aktar bil-mod HDD manjetiku regolari.

Għall-paragun, talli huma kbar wisq ashift prattikament m'hemm l-ebda penali. M'hemm l-ebda hit ta 'prestazzjoni reali, u ż-żieda fl-ispazju mhux użat hija infiniteżimali (jew żero jekk il-kompressjoni hija attivata). Għalhekk, nirrakkomandaw bil-qawwa li anke dawk id-drajvs li jużaw setturi ta '512-byte jinstallaw ashift=12 jew saħansitra ashift=13biex tħares b’kunfidenza lejn il-futur.

Proprjetà ashift huwa installat għal kull mezz virtwali vdev, u mhux għall-pool, kif ħafna nies jaħsbu bi żball, u ma jinbidilx wara l-installazzjoni. Jekk aċċidentalment tolqot ashift Meta żżid vdev ġdid ma 'pool, tkun imniġġes b'mod irrevokabbli dak il-pool b'apparat ta' prestazzjoni baxxa u, bħala regola, m'hemm l-ebda għażla oħra ħlief li teqred il-pool u tibda mill-ġdid. Anke t-tħassir ta 'vdev mhux se jsalvak minn setting miksur ashift!

Copy-on-write mekkaniżmu

Bażi ZFS: Ħażna u Prestazzjoni
Jekk sistema ta 'fajls regolari teħtieġ li terġa' tikteb id-dejta, timmodifika kull blokka fejn tinsab

Bażi ZFS: Ħażna u Prestazzjoni
Sistema ta 'fajls ta' kopja fuq kitba tikteb verżjoni ġdida tal-blokk u mbagħad tiftaħ il-verżjoni l-antika

Bażi ZFS: Ħażna u Prestazzjoni
Fl-astratt, jekk ninjoraw l-arranġament fiżiku attwali tal-blokki, il-"kometa tad-dejta" tagħna tissimplifika għal "dudu tad-dejta" li jimxi mix-xellug għal-lemin madwar il-mappa tal-ispazju disponibbli

Bażi ZFS: Ħażna u Prestazzjoni
Issa nistgħu nieħdu idea tajba ta' kif jaħdmu snapshots kopja fuq il-kitba - kull blokk jista' jappartjeni għal snapshots multipli, u jippersisti sakemm jinqerdu l-istantaneji kollha assoċjati

Il-mekkaniżmu Copy on Write (CoW) huwa l-bażi fundamentali ta 'dak li jagħmel ZFS sistema daqshekk aqwa. Il-kunċett bażiku huwa sempliċi - jekk titlob lil sistema ta 'fajls tradizzjonali biex tibdel fajl, din tagħmel eżattament dak li tlabt. Jekk titlob lil sistema ta’ fajls ta’ kopja fuq kitba biex tagħmel l-istess ħaġa, din tgħid “tajjeb”—imma tigdeb lilek.

Minflok, sistema ta 'fajls ta' kopja fuq kitba tikteb verżjoni ġdida tal-blokk modifikat, u mbagħad taġġorna l-metadata tal-fajl biex tneħħi l-konnessjoni tal-blokka l-antika u tassoċjaha mal-blokka l-ġdida li għadek kif ktibt.

It-tneħħija tal-blokka l-qadima u t-tgħaqqid tal-ġdid isir f'operazzjoni waħda, u għalhekk ma jistax jiġi interrott - jekk reset l-enerġija wara li jiġri dan, għandek verżjoni ġdida tal-fajl, u jekk reset l-enerġija qabel, imbagħad ikollok il-verżjoni l-antika. Fi kwalunkwe każ, mhux se jkun hemm kunflitti fis-sistema tal-fajls.

Il-kopja fuq il-kitba f'ZFS isseħħ mhux biss fil-livell tas-sistema tal-fajls, iżda wkoll fil-livell tal-ġestjoni tad-disk. Dan ifisser li ZFS mhuwiex suxxettibbli għal spazju abjad fir-rekord (toqba fir-RAID) - fenomenu meta l-istrixxa kienet ġiet irreġistrata biss parzjalment qabel ma ġġarraf is-sistema, bi ħsara lill-array wara reboot. Hawnhekk l-istrixxa hija miktuba atomikament, vdev huwa dejjem sekwenzjali, u Bob huwa iz-ziju tiegħek.

ZIL: ZFS intenzjoni log

Bażi ZFS: Ħażna u Prestazzjoni
ZFS jimmaniġġja kitba sinkronika b'mod speċjali - jaħżenhom temporanjament iżda immedjatament f'ZIL qabel ma tiktebhom b'mod permanenti flimkien ma' kitba asinkronika.

Bażi ZFS: Ħażna u Prestazzjoni
Tipikament, id-dejta miktuba lil ZIL qatt ma tinqara mill-ġdid. Iżda dan huwa possibbli wara ħsara fis-sistema

Bażi ZFS: Ħażna u Prestazzjoni
SLOG, jew apparat LOG sekondarju, huwa sempliċiment vdev speċjali - u preferibbilment veloċi ħafna - fejn ZIL jista' jinħażen separatament mill-ħażna prinċipali

Bażi ZFS: Ħażna u Prestazzjoni
Wara ħabta, id-dejta kollha maħmuġa f'ZIL terġa' tintlagħab - f'dan il-każ, ZIL jinsab fuq SLOG, għalhekk huwa fejn terġa' tintlagħab

Hemm żewġ kategoriji ewlenin ta’ kitba—sinkronu (sinkroniku) u mhux sinkroniku (async). Għall-biċċa l-kbira tal-piżijiet tax-xogħol, il-maġġoranza l-kbira tal-kitbiet huma asinkroniċi—is-sistema tal-fajls tippermettilhom li jiġu aggregati u maħruġa f'lottijiet, titnaqqas il-frammentazzjoni u żżid b'mod sinifikanti l-fluss.

Ir-reġistrazzjonijiet sinkroniċi huma kwistjoni kompletament differenti. Meta applikazzjoni titlob kitba sinkronika, tgħid lis-sistema tal-fajls: "Ikollok bżonn tikkommetti dan għal memorja mhux volatili Bħalissa, u sa dak iż-żmien m’hemm xejn aktar li nista’ nagħmel.” Għalhekk, il-kitbiet sinkroniċi għandhom jiġu impenjati għad-disk immedjatament - u jekk dan iżid il-frammentazzjoni jew inaqqas il-fluss, hekk ikun.

ZFS jimmaniġġja l-kitbiet sinkroniċi b'mod differenti minn sistemi ta 'fajls regolari—minflok li jlaħlaħhom immedjatament għal ħażna regolari, ZFS jimpenjahom għal żona ta' ħażna speċjali msejħa ZFS Intent Log, jew ZIL. Il-trick huwa li dawn ir-rekords ukoll jibqgħu fil-memorja, jiġu aggregati flimkien ma 'talbiet normali ta' kitba asinkroniċi, biex aktar tard jiġu mlaħalħa fil-ħażna bħala TXGs kompletament normali (Gruppi ta 'Transazzjoni).

Waqt it-tħaddim normali, ZIL jinkiteb u qatt ma jerġa' jinqara. Meta, wara ftit mumenti, ir-rekords miż-ZIL jiġu impenjati għall-ħażna prinċipali f'TXGs regolari mir-RAM, jinqalgħu miż-ZIL. L-unika darba li tinqara xi ħaġa minn ZIL hija meta timporta pool.

Jekk iseħħ ħabta ZFS—ħabta tas-sistema operattiva jew qtugħ tad-dawl—waqt li jkun hemm dejta fiż-ZIL, dik id-dejta tinqara waqt l-importazzjoni tal-pool li jmiss (pereżempju, meta s-sistema tal-ħabta terġa’ tinbeda). Tkun xi tkun fil-ZIL se jinqara, miġbura fi TXGs, impenjati fil-maħżen prinċipali, u mbagħad maqtugħa mill-ZIL matul il-proċess ta ' l-importazzjoni.

Waħda mill-klassijiet tal-vdev helper tissejjaħ LOG jew SLOG, apparat LOG sekondarju. Għandu għan wieħed - li jipprovdi ġabra b'apparat vdev separat u preferibbilment ħafna aktar mgħaġġel, reżistenti ħafna għall-kitba għall-ħażna ta 'ZIL, minflok taħżen ZIL fuq il-ħażna vdev prinċipali. ZIL innifsu jġib ruħu l-istess irrispettivament mill-post tal-ħażna, iżda jekk il-vdev b'LOG għandu prestazzjoni ta 'kitba għolja ħafna, allura l-kitba sinkronika tkun aktar mgħaġġla.

Iż-żieda ta' vdev b'LOG mal-pool ma taħdimx ma tistax ittejjeb il-prestazzjoni tal-kitba asinkronika - anki jekk tisforza l-kitba kollha lil ZIL ma ' zfs set sync=always, xorta se jkunu marbuta mal-ħażna prinċipali f'TXG bl-istess mod u bl-istess pass bħal mingħajr il-log. L-uniku titjib dirett fil-prestazzjoni huwa l-latenza tal-kitba sinkronika (billi veloċitajiet ogħla tal-log jagħmlu l-operazzjonijiet aktar mgħaġġla sync).

Madankollu, f'ambjent li diġà jeħtieġ ħafna kitba sinkronika, vdev LOG jista' indirettament iħaffef kitba asinkronika u qari mhux fil-cache. Il-ħatt tar-rekords ZIL għal vdev LOG separat ifisser inqas tilwim għal IOPS fuq il-ħażna primarja, li jtejjeb il-prestazzjoni tal-qari u l-kitba kollha sa ċertu punt.

Snapshots

Il-mekkaniżmu tal-kopja fuq il-kitba huwa wkoll pedament meħtieġ għal snapshots atomiċi ZFS u replikazzjoni asinkronika inkrementali. Is-sistema tal-fajls attiva għandha siġra tal-pointer li timmarka l-entrati kollha bid-dejta kurrenti—meta tieħu snapshot, sempliċement tagħmel kopja ta’ dik is-siġra tal-pointer.

Meta rekord jinkiteb fuq is-sistema tal-fajls attiva, ZFS l-ewwel jikteb il-verżjoni l-ġdida tal-blokk fl-ispazju mhux użat. Imbagħad tneħħi l-verżjoni l-antika tal-blokk mis-sistema tal-fajls attwali. Imma jekk xi snapshot jirreferu għal blokk antik, xorta jibqa' mhux mibdul. Il-blokk l-antik fil-fatt mhux se jiġi rrestawrat bħala spazju ħieles sakemm jinqerdu l-istampa kollha li jirreferu għal dak il-blokk!

Replikazzjoni

Bażi ZFS: Ħażna u Prestazzjoni
Il-librerija Steam tiegħi fl-2015 kienet 158 ​​GiB u kienet tinkludi 126 fajl. Dan huwa pjuttost qrib is-sitwazzjoni ottimali għal rsync - ir-replikazzjoni ta 'ZFS fuq in-netwerk kienet "biss" 927% aktar mgħaġġla.

Bażi ZFS: Ħażna u Prestazzjoni
Fuq l-istess netwerk, ir-replikazzjoni ta 'fajl tal-immaġni tal-magna virtwali Windows 40 ta' 7GB waħda hija storja kompletament differenti. Ir-replikazzjoni ZFS hija 289 darba aktar mgħaġġla minn rsync—jew "biss" 161 darba aktar mgħaġġla jekk int espert biżżejjed biex issejjaħ rsync bis-swiċċ --inplace.

Bażi ZFS: Ħażna u Prestazzjoni
Meta immaġni VM tiskala, rsync joħroġ skala magħha. Id-daqs 1,9 TiB mhuwiex daqshekk kbir għal immaġni VM moderna - iżda huwa kbir biżżejjed li r-replikazzjoni ZFS hija 1148 darba aktar mgħaġġla minn rsync, anke bl-argument rsync --inplace

Ladarba tifhem kif jaħdmu snapshots, ikun faċli li tifhem l-essenza tar-replikazzjoni. Peress li snapshot hija sempliċiment siġra ta 'rekords pointers, isegwi li jekk nagħmlu zfs send snapshot, imbagħad nibagħtu din is-siġra u r-rekords kollha assoċjati magħha. Meta ngħaddu dan zfs send в zfs receive fuq l-oġġett fil-mira, jikteb kemm il-kontenut attwali tal-blokk kif ukoll is-siġra tal-indikazzjonijiet li jirreferu l-blokki għas-sett tad-dejta fil-mira.

L-affarijiet isiru saħansitra aktar interessanti fit-tieni zfs send. Issa għandna żewġ sistemi, kull waħda fiha poolname/datasetname@1, u tieħu stampa ġdida poolname/datasetname@2. Għalhekk, fil-pool tas-sors li għandek datasetname@1 и datasetname@2, u fil-grupp fil-mira hemm biss l-ewwel snapshot datasetname@1.

Għax bejn is-sors u l-mira għandna snapshot komuni datasetname@1, nistgħu nagħmluha inkrementali zfs send fuqha. Meta ngħidu lis-sistema zfs send -i poolname/datasetname@1 poolname/datasetname@2, hija tqabbel żewġ siġar pointer. Kwalunkwe indikazzjonijiet li jeżistu biss fi @2, ovvjament jirreferu għal blokki ġodda - għalhekk ikollna bżonn il-kontenut ta 'dawk il-blokki.

Fuq sistema remota, l-ipproċessar inkrementali send daqstant sempliċi. L-ewwel niktbu l-entrati ġodda kollha inklużi fil-fluss send, u mbagħad żid pointers għal dawn il-blokki. Voila, għandna @2 fis-sistema l-ġdida!

Replikazzjoni inkrementali asinkronika ZFS hija titjib kbir fuq metodi preċedenti mhux ibbażati fuq snapshot bħal rsync. Fiż-żewġ każijiet, id-data mibdula biss tiġi trasferita - iżda rsync għandu l-ewwel aqra mid-disk id-data kollha fuq iż-żewġ naħat biex tiċċekkja s-somma u tqabbelha. B'kuntrast, ir-replikazzjoni ZFS ma taqra xejn għajr siġar tal-pointer—u kwalunkwe blokk li mhumiex rappreżentati fl-istampa ġenerali.

Kompressjoni inkorporata

Il-mekkaniżmu tal-kopja fuq il-kitba jissimplifika wkoll is-sistema ta 'kompressjoni integrata. F'sistema ta 'fajls tradizzjonali, il-kompressjoni hija problematika—kemm il-verżjoni l-antika kif ukoll il-verżjoni l-ġdida tad-dejta mibdula jgħixu fl-istess spazju.

Jekk tikkunsidra biċċa data fin-nofs ta 'fajl li jibda l-ħajja tiegħu bħala megabyte ta' żerijiet minn 0x00000000 u l-bqija - huwa faċli ħafna li tikkompressaha f'settur wieħed fuq disk. Imma x'jiġri jekk nissostitwixxu dan il-megabyte ta 'żeri b'megabyte ta' dejta inkompressibbli, bħal JPEG jew storbju psewdo-random? F'daqqa waħda, dak il-megabyte ta 'dejta jkun jeħtieġ mhux settur wieħed, iżda 256 4 KiB, u settur wieħed biss kien riżervat f'dak l-ispazju tad-diska.

ZFS m'għandux din il-problema minħabba li l-kitbiet modifikati dejjem jinkitbu fi spazju mhux użat - il-blokk oriġinali jieħu biss settur wieħed ta' 4 KiB, iżda kitba ġdida tieħu 256, iżda din mhix problema - biċċa modifikata reċentement mill-" nofs" tal-fajl kien ikun miktub fi spazju mhux użat irrispettivament minn jekk id-daqs tiegħu nbidilx jew le, għalhekk din hija sitwazzjoni kompletament normali għal ZFS.

Il-kompressjoni ZFS inkorporata hija diżattivata b'mod awtomatiku, u s-sistema toffri algoritmi pluggable—bħalissa jinkludu LZ4, gzip (1-9), LZJB, u ZLE.

  • LZ4 huwa algoritmu ta 'streaming li joffri kompressjoni u dekompressjoni estremament veloċi u benefiċċji ta' prestazzjoni għall-biċċa l-kbira tal-każijiet ta 'użu—anke fuq CPUs pjuttost bil-mod.
  • gzip huwa algoritmu venerabbli li l-utenti Unix kollha jafu u jħobbu. Jista' jiġi implimentat b'livelli ta' kompressjoni 1-9, b'żieda fil-proporzjon tal-kompressjoni u l-użu tas-CPU hekk kif tersaq lejn il-livell 9. L-algoritmu huwa adattat tajjeb għall-każijiet kollha ta' użu tat-test (jew każijiet oħra kompressibbli ħafna), iżda ħafna drabi jikkawża problemi tas-CPU mod ieħor. b'kawtela, speċjalment f'livelli ogħla.
  • LZJB - algoritmu oriġinali f'ZFS. Huwa skadut u m'għandux jintuża aktar, LZ4 huwa superjuri f'kull mod.
  • ĦAŻIN — kodifikazzjoni ta' livell żero, kodifikazzjoni ta' livell żero. Ma tmissx data normali għal kollox, iżda tikkompressa sekwenzi kbar ta 'żeri. Utli għal settijiet ta' data kompletament inkompressibbli (bħal JPEG, MP4 jew formati oħra diġà kkompressati) peress li tinjora data inkompressibbli iżda tikkompressa l-ispazju mhux użat fir-rekords li jirriżultaw.

Nirrakkomandaw kompressjoni LZ4 għal kważi l-każijiet kollha ta 'użu; il-piena tal-prestazzjoni meta tittratta data inkompressibbli hija żgħira ħafna, u tkabbir prestazzjoni għal data tipika hija sinifikanti. Tikkopja immaġini ta' magna virtwali għal installazzjoni ġdida tas-sistema operattiva Windows (OS li għadu kif ġie installat, għad m'hemmx dejta ġewwa) b' compression=lz4 għadda 27% aktar malajr milli ma compression=nonepulzieri dan it-test mill-2015.

ARC - Cache ta' Sostituzzjoni Adattiva

ZFS hija l-unika sistema ta 'fajls moderna li nafu biha li tuża l-mekkaniżmu ta' caching tal-qari tagħha stess, aktar milli tiddependi fuq il-cache tal-paġna tas-sistema operattiva biex taħżen kopji ta 'blokki li nqraw reċentement fir-RAM.

Għalkemm il-cache nattiv mhuwiex mingħajr problemi - ZFS ma jistax jirrispondi għal talbiet ġodda ta 'allokazzjoni ta' memorja malajr daqs il-kernel, għalhekk sejħa ġdida malloc() l-allokazzjoni tal-memorja tista' tfalli jekk teħtieġ RAM okkupata bħalissa mill-ARC. Iżda hemm raġunijiet tajbin biex tuża l-cache tiegħek, għall-inqas għalissa.

Is-sistemi operattivi moderni magħrufa kollha, inklużi MacOS, Windows, Linux u BSD, jużaw l-algoritmu LRU (Least Recently Used) biex jimplimentaw il-cache tal-paġna. Dan huwa algoritmu primittiv li jimbotta blokk fil-cache "fuq il-quċċata tal-kju" wara kull qari u jimbotta blokki "fil-qiegħ tal-kju" kif meħtieġ biex iżżid missijiet ta' cache ġodda (blokki li kellhom jinqraw mid-disk aktar milli mill-cache) sal-quċċata.

Normalment l-algoritmu jaħdem tajjeb, iżda fuq sistemi b'settijiet kbar ta' dejta tax-xogħol, LRU faċilment iwassal għal thrashing—tkeċċija blokki li spiss ikunu meħtieġa biex jagħmlu spazju għal blokki li qatt ma jerġgħu jinqraw mill-cache.

ARC huwa algoritmu ħafna inqas naive li jista 'jitqies bħala cache "ippeżat". Kull darba li jinqara blokka cache, din issir ftit "itqal" u ssir aktar diffiċli biex tkeċċi - u anke wara li l-blokk jiġi żgumbrat tracked matul ċertu perjodu ta’ żmien. Blokk li ġie żgumbrat iżda li mbagħad jeħtieġ li jinqara lura fil-cache se jsir itqal ukoll.

Ir-riżultat aħħari ta 'dan kollu huwa cache bi proporzjon ta' hit ħafna ogħla—il-proporzjon bejn il-hits tal-cache (jaqra mill-cache) u miss (jaqra mid-disk). Din hija statistika estremament importanti - mhux biss il-cache hits infushom jiġu servut ordnijiet ta' kobor aktar malajr, il-cache miss jistgħu wkoll jiġu sservisjati aktar malajr, peress li aktar ma jkun hemm cache hits, inqas talbiet konkorrenti għad-disk u inqas tkun il-latency għal dawk li fadal miss. li għandhom jiġu servis ma disk.

Konklużjoni

Issa li koprejna s-semantika bażika ta’ ZFS—kif taħdem il-kopja fuq il-kitba, kif ukoll ir-relazzjonijiet bejn pools ta’ ħażna, tagħmir virtwali, blokki, setturi u fajls—aħna lesti biex niddiskutu l-prestazzjoni fid-dinja reali ma’ numri reali.

Fil-parti li jmiss, aħna ser inħarsu lejn il-prestazzjoni attwali tal-pools Vdev u RAIDz riflessi, meta mqabbla ma 'xulxin, u wkoll meta mqabbla mat-topoloġiji RAID tal-kernel Linux tradizzjonali li eżaminajna qabel.

Għall-ewwel ridna nkopru biss l-affarijiet bażiċi - it-topoloġiji ZFS infushom - iżda wara tali Inkunu lesti biex nitkellmu dwar konfigurazzjoni u rfinar aktar avvanzati ta 'ZFS, inkluż l-użu ta' tipi awżiljarji vdev bħal L2ARC, SLOG u Allokazzjoni Speċjali.

Sors: www.habr.com

Żid kumment