ZFS Zoyambira: Kusungirako ndi Kuchita

ZFS Zoyambira: Kusungirako ndi Kuchita

Pavuli paki tadumbiskanapo kale nkhani zakwamba, mwachitsanzo. momwe mungayang'anire kuthamanga kwa ma drive anu и RAID ndi chiyani. Mu chachiwiri mwa izi, tidalonjeza kuti tipitiliza kuphunzira momwe ma multi-disk topology amagwirira ntchito mu ZFS. Uwu ndiye m'badwo wotsatira wamafayilo omwe tsopano akugwiritsidwa ntchito kulikonse kuchokera apulo mpaka Ubuntu.

Lero ndi tsiku labwino kwambiri lodziwana ndi ZFS, owerenga achidwi. Ingodziwani kuti pakuwunika modzichepetsa kwa wopanga OpenZFS Matt Ahrens, "ndizovuta kwambiri."

Koma tisanafike manambala - ndipo padzakhala, ndikulonjeza - pamitundu yonse ya ma disk asanu ndi atatu a ZFS kasinthidwe, tiyenera kulankhula za momwe Kawirikawiri, ZFS imasunga deta pa disk.

Zpool, vdev ndi chipangizo

ZFS Zoyambira: Kusungirako ndi Kuchita
Chithunzi chathunthu ichi chikuphatikiza ma vdev atatu othandizira, amodzi mwa kalasi iliyonse, ndi anayi a RAIDz2.

ZFS Zoyambira: Kusungirako ndi Kuchita
Nthawi zambiri palibe chifukwa chopangira dziwe lamitundu ndi makulidwe a vdev osagwirizana - koma ngati mukufuna, palibe chomwe chikukulepheretsani kutero.

Kuti mumvetse bwino mafayilo a ZFS, muyenera kuyang'anitsitsa mawonekedwe ake enieni. Choyamba, ZFS imagwirizanitsa zigawo zachikhalidwe ndi mafayilo amafayilo. Chachiwiri, imagwiritsa ntchito njira yopangira kukopera-pa-kulemba. Izi zikutanthauza kuti dongosololi ndi losiyana kwambiri ndi mafayilo wamba ndi ma RAID arrays. Chigawo choyamba cha midadada yomangira kuti mumvetsetse ndi dziwe losungira (zpool), chipangizo chodziwika bwino (vdev) ndi chipangizo chenicheni (chipangizo).

zpool

Dziwe losungira zpool ndiye mawonekedwe apamwamba kwambiri a ZFS. Phuli lililonse lili ndi chipangizo chimodzi kapena zingapo. Kenako, chilichonse chimakhala ndi chida chimodzi kapena zingapo zenizeni (chipangizo). Maiwe a Virtual ndi mayunitsi odzipangira okha. Kompyuta imodzi yakuthupi imatha kukhala ndi maiwe awiri kapena kupitilira apo, koma iliyonse imakhala yodziyimira pawokha. Maiwe sangathe kugawana zida zenizeni.

ZFS redundancy ili pamlingo wa chipangizocho, osati pamlingo wa dziwe. Palibenso kubwezeredwa pamlingo wa dziwe-ngati vdev kapena vdev yodzipatulira itayika, dziwe lonse limatayika limodzi nalo.

Maiwe osungira amakono amatha kupulumuka kutayika kwa cache kapena chipika cha chipangizo - ngakhale kuti akhoza kutaya deta yonyansa ngati ataya chipika cha vdev panthawi yamagetsi kapena kuwonongeka kwa dongosolo.

Pali lingaliro lolakwika lodziwika kuti ZFS "mikwingwirima" imalembedwa padziwe lonse. Izi sizowona. Zpool siyoseketsa RAID0, ndiyoseketsa kwambiri JBOD ndi njira yovuta yogawa zinthu.

Kwa mbali zambiri, zolemba zimagawidwa pakati pa zipangizo zamakono zomwe zilipo molingana ndi malo aulere omwe alipo, kotero mwachidziwitso iwo onse adzadzazidwa nthawi imodzi. Zomasulira zaposachedwa za ZFS zimaganizira momwe vdev ikugwiritsidwira ntchito (kutaya) - ngati chipangizo chimodzi chili chotanganidwa kwambiri kuposa china (mwachitsanzo, chifukwa chowerenga), chidzadumphidwa kwakanthawi kuti chilembedwe, ngakhale chili ndi chiŵerengero chapamwamba cha malo aulere. .

Njira yodziwikiranso yopangidwa mu njira zamakono zogawira zolemba za ZFS imatha kuchepetsa kuchedwa ndikuwonjezera kutulutsa panthawi ya katundu wambiri - koma sichoncho. carte blanche kusakaniza mwadala ma HDD ocheperako ndi ma SSD othamanga padziwe limodzi. Dziwe losafanana lotere lidzagwirabe ntchito pa liwiro la chipangizo chochepa kwambiri, ndiko kuti, ngati kuti chinapangidwa ndi zipangizo zoterezi.

vdev

Phukusi lililonse losungirako lili ndi chipangizo chimodzi kapena zingapo (vdev). Kenako, vdev iliyonse imaphatikizapo chipangizo chimodzi kapena zingapo zenizeni. Zipangizo zamakono zambiri zimagwiritsidwa ntchito posungirako deta yosavuta, koma pali makalasi angapo othandizira vdev, kuphatikizapo CACHE, LOG, ndi SPECIAL. Iliyonse mwa mitundu iyi ya vdev imatha kukhala ndi imodzi mwazolemba zisanu: chipangizo chimodzi, RAIDz1, RAIDz2, RAIDz3 kapena galasi.

RAIDz1, RAIDz2 ndi RAIDz3 ndi mitundu yapadera ya zomwe anthu akale amatcha double (diagonal) parity RAID. 1, 2 ndi 3 amatanthawuza kuchuluka kwa midadada yaparity yomwe imaperekedwa kunjira iliyonse ya data. M'malo mokhala ndi ma disks osiyana kuti apereke kufanana, zida za RAIDz zimagawa magawo ofanana molingana ndi ma disks. Gulu la RAIDz limatha kutaya ma disks ambiri momwe liri ndi midadada yofanana; ngati itataya ina, idzalephera ndikutenga dziwe losungiramo.

Pazida zamagalasi (mirror vdev), chipika chilichonse chimasungidwa pa chipangizo chilichonse mu vdev. Ngakhale magalasi amitundu iwiri ndi omwe amapezeka kwambiri, galasi limatha kukhala ndi zida zilizonse zosawerengeka - m'malo akuluakulu, katatu amagwiritsidwa ntchito kuti azitha kuwerenga bwino komanso kulolera zolakwika. Kalilore wa vdev amatha kupulumuka kulephera kulikonse bola ngati chipangizo chimodzi mu vdev chikugwirabe ntchito.

Ma vdev amodzi ndi owopsa mwachibadwa. Chida choterechi sichidzapulumuka kulephera kumodzi - ndipo ngati kugwiritsidwa ntchito ngati yosungirako kapena vdev yapadera, ndiye kuti kulephera kwake kudzatsogolera ku chiwonongeko cha dziwe lonse. Khalani osamala, kwambiri apa.

CACHE, LOG, ndi Zipangizo zamakono zamakono zimatha kupangidwa muzolemba zilizonse zomwe zili pamwambapa - koma kumbukirani kuti kutaya chipangizo chapadera chapadera kumatanthauza kutaya dziwe, kotero kuti topology yowonjezereka ndiyofunika kwambiri.

chipangizo

Awa mwina ndiye mawu osavuta kumvetsetsa mu ZFS - kwenikweni ndi chida chofikira mwachisawawa. Kumbukirani kuti zida zenizeni zimapangidwa ndi zida zapayekha, ndipo dziwe limapangidwa ndi zida zenizeni.

Ma disks, kaya maginito kapena olimba, ndi zida zomwe zimagwiritsidwa ntchito ngati zomangira za vdev. Komabe, chipangizo chilichonse chokhala ndi chofotokozera mu / dev chidzachita - kotero zida zonse za RAID zitha kugwiritsidwa ntchito ngati zida zosiyana.

Fayilo yosavuta yaiwisi ndi imodzi mwazinthu zofunika kwambiri zopangira zida zomwe vdev ingapangidwe. Madziwe oyesera kuchokera mafayilo ochepa ndi njira yabwino kwambiri yowonera malamulo a dziwe ndikuwona kuchuluka kwa malo omwe amapezeka mu dziwe kapena chipangizo chodziwika bwino cha topology yopatsidwa.

ZFS Zoyambira: Kusungirako ndi Kuchita
Mutha kupanga dziwe loyeserera kuchokera pamafayilo ochepa mumasekondi pang'ono - koma musaiwale kuchotsa dziwe lonse ndi zida zake pambuyo pake.

Tiyerekeze kuti mukufuna seva yama disks eyiti ndikukonzekera kugwiritsa ntchito ma disks 10 TB (~ 9300 GiB) - koma simukudziwa kuti ndi topology iti yomwe ikugwirizana ndi zosowa zanu. Mu chitsanzo pamwambapa, timapanga dziwe loyesera kuchokera ku mafayilo ochepa mumasekondi - ndipo tsopano tikudziwa kuti RAIDz2 vdev ya disks eyiti ya 10 TB imapereka 50 TiB ya mphamvu yogwiritsira ntchito.

Gulu lina lapadera la zida ndi SPARE. Zida zosinthira kutentha, mosiyana ndi zida zanthawi zonse, zimakhala za dziwe lonse osati za chipangizo chimodzi chokha. Ngati vdev iliyonse mu dziwe ilephera ndipo chipangizo chosungira chikugwirizana ndi dziwe ndikupezeka, ndiye kuti chidzalowa nawo vdev yomwe ikukhudzidwa.

Mukalumikizidwa ndi vdev yomwe yakhudzidwa, chipangizo chosinthira chimayamba kulandira makope kapena kukonzanso deta yomwe iyenera kukhala pa chipangizo chomwe chikusowa. Mwachikhalidwe RAID izi zimatchedwa "kumanganso", ndipo mu ZFS ndi "kutsitsimutsa".

Nkofunika kuzindikira kuti m'malo zipangizo musati mpaka kalekale m'malo analephera zipangizo. Uku ndikungosintha kwakanthawi kuti muchepetse nthawi yomwe vdev ikuyenera kunyozeka. Woyang'anira atalowa m'malo mwa chipangizo cholephera cha vdev, redundancy imabwezeretsedwa ku chipangizo chokhazikika, ndipo SPARE imachotsedwa ku vdev ndikubwerera kukhala yosungira dziwe lonse.

Seti ya data, midadada ndi magawo

Gawo lotsatira la midadada yomangira kuti mumvetsetse paulendo wathu wa ZFS zimagwirizana pang'ono ndi zida komanso zambiri zokhudzana ndi momwe detayo imasungidwira ndikusungidwa. Tikudumpha zigawo zingapo pano - monga metaslab - kuti tipewe kusanjikiza mwatsatanetsatane ndikusungabe kumvetsetsa kapangidwe kake.

Seti ya data

ZFS Zoyambira: Kusungirako ndi Kuchita
Tikayamba kupanga deta, imasonyeza malo onse omwe alipo. Kenaka timayika chiwerengero - ndikusintha malo okwera. Zamatsenga!

ZFS Zoyambira: Kusungirako ndi Kuchita
Zvol nthawi zambiri ndi dataset yomwe imachotsedwa pamafayilo ake, omwe timawasintha apa ndi mawonekedwe abwinobwino a ext4

Seti ya data ya ZFS imakhala yofanana ndi mawonekedwe amtundu wokhazikika. Monga fayilo yokhazikika, poyang'ana koyamba imawoneka ngati "chikwatu china." Koma monga machitidwe amafayilo okhazikika, seti iliyonse ya ZFS ili ndi zida zake zoyambira.

Choyamba, deta ikhoza kukhala ndi gawo lomwe laperekedwa. Ngati inu kwabasi zfs set quota=100G poolname/datasetname, ndiye kuti simungathe kulemba ku chikwatu chokwera /poolname/datasetname kuposa 100 GiB.

Tawonani kukhalapo—ndi kusakhalapo—kwa mikwingwirima kumayambiriro kwa mzere uliwonse? Deta iliyonse ili ndi malo ake muulamuliro wa ZFS komanso utsogoleri wotsogola. Palibe slash wotsogola muulamuliro wa ZFS - mumayamba ndi dzina la dziwe kenako njira yochokera ku data ina kupita ku ina. Mwachitsanzo, pool/parent/child kwa seti ya data yotchedwa child pansi pa dataset ya makolo parent mu dziwe lomwe lili ndi dzina lolenga pool.

Mwachikhazikitso, malo okwera a dataset adzakhala ofanana ndi dzina lake muulamuliro wa ZFS, ndi slash yotsogolera - dziwe lotchedwa pool wokwezedwa ngati /pool, seti ya data parent wokwezedwa mkati /pool/parent, ndi seti ya data ya mwana child wokwezedwa mkati /pool/parent/child. Komabe, malo okwera pamakina a data akhoza kusinthidwa.

Ngati tiwonetsa zfs set mountpoint=/lol pool/parent/child, ndiye seti ya data pool/parent/child zokwezedwa mu dongosolo ngati /lol.

Kuphatikiza pa ma dataset, tiyenera kutchula ma voliyumu (zols). Voliyumu imakhala yofanana ndi seti ya data, kupatula kuti ilibe mafayilo amafayilo - ndi chipangizo cha block. Mukhoza mwachitsanzo kulenga zvol Ndi dzina mypool/myzvol, kenako ipangireni ndi fayilo ya ext4, ndikuyika fayiloyo - tsopano muli ndi fayilo ya ext4, koma yokhala ndi chitetezo chonse cha ZFS! Izi zitha kuwoneka zopusa pakompyuta imodzi, koma zimakhala zomveka ngati kumbuyo pakutumiza chipangizo cha iSCSI.

Mabatani

ZFS Zoyambira: Kusungirako ndi Kuchita
Fayilo imayimiridwa ndi midadada imodzi kapena zingapo. Chida chilichonse chimasungidwa pa chipangizo chimodzi chokha. Kukula kwa block nthawi zambiri kumakhala kofanana ndi parameter mbiri, koma akhoza kuchepetsedwa kukhala 2, ngati ili ndi metadata kapena fayilo yaying'ono.

ZFS Zoyambira: Kusungirako ndi Kuchita
Ife kwenikweni kwenikweni Sitikuchita nthabwala za chilango chachikulu ngati mutakhala otsika kwambiri

Mu dziwe la ZFS, deta yonse, kuphatikizapo metadata, imasungidwa muzitsulo. Kuchuluka kwa block block kwa seti iliyonse ya data kumatanthauzidwa mu katundu recordsize (kukula kwa mbiri). Kukula kwa mbiri kumatha kusintha, koma izi sizingasinthe kukula kapena malo a midadada iliyonse yomwe yalembedwa kale ku seti ya data - imangokhudza midadada yatsopano momwe imalembedwera.

Pokhapokha ngati tafotokozedwa mwanjira ina, kukula kwaposachedwa kolowera ndi 128KiB. Ndi mtundu wamalonda ovuta pomwe magwiridwe ake sangakhale abwino, koma sizikhala zowopsa nthawi zambiri. Recordsize ikhoza kukhazikitsidwa pamtengo uliwonse kuyambira 4K mpaka 1M (ndi zoikamo zina recordsize mutha kukhazikitsa zochulukira, koma izi sizikhala lingaliro labwino).

Chotchinga chilichonse chimatanthawuza za fayilo imodzi yokha - simungathe kufinya mafayilo awiri osiyana kukhala chipika chimodzi. Fayilo iliyonse imakhala ndi midadada imodzi kapena zingapo, kutengera kukula kwake. Ngati fayiloyo ili yaying'ono kuposa kukula kwake, imasungidwa mumdawo wocheperako - mwachitsanzo, chipika chokhala ndi fayilo ya 2 KB chidzangokhala gawo limodzi la 4 KB pa disk.

Ngati fayiloyo ndi yayikulu mokwanira kuti ingafune midadada ingapo, ndiye kuti zonse zomwe zili mufayiloyo zidzakhala zazikulu recordsize - kuphatikiza kulowa komaliza, gawo lalikulu lomwe lingakhale malo osagwiritsidwa ntchito.

zol voliyumu alibe katundu recordsize - M'malo mwake ali ndi chuma chofanana volblocksize.

Magawo

Chomangira chomaliza, chofunikira kwambiri ndi gawo. Ndilo gawo laling'ono kwambiri lomwe lingathe kulembedwa kapena kuwerengedwa kuchokera ku chipangizo chothandizira. Kwa zaka makumi angapo, ma disks ambiri adagwiritsa ntchito magawo a 512-byte. Masiku ano, ma drive ambiri amasinthidwa kukhala magawo a 4 KB, ndipo ena - makamaka ma SSD - amasinthidwa kukhala magawo a 8 KB kapena okulirapo.

ZFS ili ndi mawonekedwe omwe amakulolani kuti muyike pamanja kukula kwa gawo. Katundu uyu ashift. Zina zosokoneza, ashift ndi mphamvu ziwiri. Mwachitsanzo, ashift=9 zikutanthauza kukula kwa gawo 2^9, kapena 512 byte.

ZFS imafunsa makina ogwiritsira ntchito kuti adziwe zambiri za chipangizo chilichonse chotchinga chikawonjezedwa ku vdev yatsopano, ndipo mwachidziwitso amangoyika ashift moyenera kutengera chidziwitsocho. Tsoka ilo, ma drive ambiri amanama za kukula kwa gawo lawo kuti apitilize kuyenderana ndi Windows XP (yomwe sinathe kumvetsetsa ma drive ndi magawo ena).

Izi zikutanthauza kuti tikulimbikitsidwa kwambiri kuti woyang'anira ZFS adziwe kukula kwenikweni kwa zida zawo ndikuyika pamanja ashift. Ngati ashift iyikidwa yaying'ono kwambiri, kuchuluka kwa ntchito zowerengera / kulemba kumawonjezeka modabwitsa. Chifukwa chake, kulemba "magawo" a 512-byte ku gawo lenileni la 4KiB kumatanthauza kulemba "gawo" loyamba, kenako werengani gawo la 4KiB, ndisinthe ndi "gawo" lachiwiri la 512-byte, lembaninso ku gawo latsopano. 4 KB gawo, ndi zina zotero pakulowa kulikonse.

M'dziko lenileni, chilango choterechi chimakhudza ma Samsung EVO SSD, omwe ayenera kugwiritsidwa ntchito ashift=13, koma ma SSD awa amanama za kukula kwa gawo lawo, chifukwa chake chosasinthika chakhazikitsidwa ashift=9. Pokhapokha ngati woyang'anira wodziwa bwino asintha izi, SSD iyi imagwira ntchito Mochedwerako wokhazikika maginito HDD.

Poyerekeza, chifukwa chokhala wamkulu kwambiri ashift palibe chilango chilichonse. Palibe kugunda kwenikweni, ndipo kuchuluka kwa malo osagwiritsidwa ntchito ndikocheperako (kapena ziro ngati kukakamiza kwayatsidwa). Chifukwa chake, timalimbikitsa kwambiri kuti ngakhale ma drive omwe amagwiritsa ntchito magawo 512-byte akhazikitse ashift=12 kapena ngakhale ashift=13kuyang'ana molimba mtima zamtsogolo.

Katundu ashift imayikidwa pa chipangizo chilichonse cha vdev, ndi osati kwa dziwe, monga momwe anthu ambiri amaganizira molakwika - ndipo sizisintha pambuyo pa kukhazikitsa. Ngati mwagunda mwangozi ashift Mukawonjezera vdev yatsopano ku dziwe, mwaipitsa dziwelo mosasinthika ndi chipangizo chochepa kwambiri ndipo, monga lamulo, palibe njira ina kuposa kuwononga dziwe ndikuyambanso. Ngakhale kufufuta vdev sikungakupulumutseni ku malo osweka ashift!

Njira yokopera polemba

ZFS Zoyambira: Kusungirako ndi Kuchita
Ngati fayilo yanthawi zonse ikufunika kulembanso deta, imasintha chipika chilichonse pomwe ili

ZFS Zoyambira: Kusungirako ndi Kuchita
Dongosolo la fayilo lolemba-pa-lemba limalemba mtundu watsopano wa block ndikutsegula wakale

ZFS Zoyambira: Kusungirako ndi Kuchita
Mwachidziŵikire, ngati tinyalanyaza dongosolo lenileni la midadada, “data comet” yathu imapangitsa kukhala “data worm” yomwe imayenda kuchokera kumanzere kupita kumanja kudutsa mapu a malo omwe alipo.

ZFS Zoyambira: Kusungirako ndi Kuchita
Tsopano titha kudziwa bwino momwe zithunzi zojambulira-zolemba zimagwirira ntchito - chipika chilichonse chikhoza kukhala chazithunzi zingapo, ndipo chidzapitilira mpaka zithunzithunzi zonse zomwe zikugwirizana nazo ziwonongeke.

Makina a Copy on Write (CoW) ndiye maziko oyambira pazomwe zimapangitsa ZFS kukhala dongosolo lodabwitsa. Lingaliro lofunikira ndi losavuta - ngati mufunsa fayilo yachikhalidwe kuti isinthe fayilo, idzachita zomwe mwafunsa. Ngati mupempha makina a fayilo kuti achite zomwezo, adzati "chabwino" - koma adzanama kwa inu.

M'malo mwake, fayilo yolemba-pa-kulemba imalemba mtundu watsopano wa chipika chosinthidwa, ndiyeno imasintha metadata ya fayilo kuti iwononge chipika chakale ndikuchigwirizanitsa ndi chipika chatsopano chomwe mwalemba kumene.

Kuchotsa chipika chakale ndikugwirizanitsa chatsopanocho kumachitidwa mu ntchito imodzi, kotero sikungasokonezeke - ngati mutakhazikitsanso mphamvu izi zitachitika, muli ndi fayilo yatsopano, ndipo ngati mwakhazikitsanso mphamvuyo kale, ndiye kuti muli nayo. Baibulo lakale. Mulimonsemo, sipadzakhala mikangano mu fayilo yamafayilo.

Copy-on-write mu ZFS imapezeka osati pamtundu wa fayilo, komanso pa disk management level. Izi zikutanthauza kuti ZFS siyingatengeke ndi zoyera muzolemba (dzenje mu RAID) - chodabwitsa pamene mzerewo unangolembedwa pang'ono dongosololi lisanawonongeke, ndi kuwonongeka kwa mndandanda pambuyo poyambiranso. Apa mzerewu umalembedwa atomiki, vdev nthawi zonse imakhala yotsatizana, ndi Bob ndi amalume ako.

ZIL: ZFS Intent Log

ZFS Zoyambira: Kusungirako ndi Kuchita
ZFS imagwira zolemba zofananira mwanjira yapadera - imazisunga kwakanthawi koma nthawi yomweyo mu ZIL isanazilembe mokhazikika pamodzi ndi zolemba zosasinthika.

ZFS Zoyambira: Kusungirako ndi Kuchita
Nthawi zambiri, zomwe zidalembedwa ku ZIL siziwerengedwanso. Koma izi ndizotheka pambuyo pa kulephera kwadongosolo

ZFS Zoyambira: Kusungirako ndi Kuchita
SLOG, kapena chipangizo chachiwiri cha LOG, chimangokhala chapadera - ndipo makamaka chachangu kwambiri - vdev pomwe ZIL imatha kusungidwa padera ndi yosungirako yayikulu.

ZFS Zoyambira: Kusungirako ndi Kuchita
Pambuyo pa ngozi, deta yonse yonyansa mu ZIL imabwerezedwanso - pamenepa, ZIL ili pa SLOG, kotero ndipamene imabwerezedwa.

Pali magulu awiri akuluakulu a zolemba: synchronous (sync) ndi asynchronous (async). Pazochulukira zambiri, zolemba zambiri ndizosasinthika - mawonekedwe amafayilo amawalola kuti asonkhanitsidwe ndikuperekedwa m'magulu, kuchepetsa kugawika ndikuchulukirachulukira.

Zojambulira za Synchronous ndi nkhani yosiyana kotheratu. Pulogalamu ikapempha kulembedwa kofananira, imauza fayilo kuti: "Muyenera kuchita izi ku kukumbukira kosasinthika. pompano, ndipo mpaka pamenepo palibenso chimene ndingachite.” Chifukwa chake, zolemba zofananira ziyenera kuperekedwa ku diski nthawi yomweyo - ndipo ngati izi zikuwonjezera kugawanika kapena kuchepetsa kutulutsa, zikhale choncho.

ZFS imagwira zolemba zofananira mosiyana ndi mafayilo amafayilo wamba, m'malo mongowasungira nthawi zonse, ZFS imawaika kumalo osungirako apadera otchedwa ZFS Intent Log, kapena ZIL. Chinyengo ndi chakuti zolemba izi komanso kukhalabe m'chikumbukiro, kuphatikizidwa pamodzi ndi zopempha zolembera zosasinthika, kuti pambuyo pake zilowetsedwe mu yosungirako monga ma TXGs (Transaction Groups).

Panthawi yogwira ntchito bwino, ZIL imalembedwa ndipo osawerenganso. Pamene, pakapita mphindi zochepa, zolemba zochokera ku ZIL zaperekedwa ku malo osungiramo ma TXG okhazikika a RAM, amachotsedwa ku ZIL. Nthawi yokhayo yomwe chinawerengedwa kuchokera ku ZIL ndi pamene mukulowetsa dziwe.

Ngati kulephera kwa ZFS kumachitika-kuwonongeka kwa makina opangira opaleshoni kapena kuzima kwa magetsi-pamene pali deta mu ZIL, detayi idzawerengedwa panthawi yotumiza dziwe lotsatira (mwachitsanzo, pamene dongosolo la failover liyambiranso). Chilichonse chomwe chili mu ZIL chidzawerengedwa, kugawidwa mu TXGs, kuperekedwa ku sitolo yaikulu, kenako kuchotsedwa ku ZIL panthawi yoitanitsa.

Imodzi mwamakalasi othandizira vdev imatchedwa LOG kapena SLOG, chipangizo chachiwiri cha LOG. Ili ndi ntchito imodzi - kupereka dziwe losiyana ndipo, makamaka, mofulumira kwambiri, ndi kukana kwambiri kulemba, vdev chipangizo kusunga ZIL, m'malo kusunga ZIL pa chachikulu vdev yosungirako. ZIL yokha imachita chimodzimodzi mosasamala kanthu za malo osungira, koma ngati vdev yokhala ndi LOG ili ndi ntchito yolemba kwambiri, ndiye kuti synchronous amalemba adzakhala mofulumira.

Kuwonjezera vdev ndi LOG ku dziwe sikugwira ntchito sangathe sinthani magwiridwe antchito a asynchronous - ngakhale mutakakamiza zolemba zonse ku ZIL ndi zfs set sync=always, iwo adzalumikizidwabe ndi kusungirako kwakukulu ku TXG mofananamo komanso pamayendedwe omwewo popanda chipika. Kusintha kwachindunji kokhako ndikosavuta kulemba latency (monga kuthamanga kwambiri kwa chipika kumapangitsa kuti ntchito ziziyenda mwachangu sync).

Komabe, m'malo omwe amafunikira kale zolemba zambiri zofananira, vdev LOG imatha kufulumizitsa mwachisawawa kulemba komanso kuwerenga kosawerengeka. Kutsitsa zolemba za ZIL ku LOG ​​yosiyana ya vdev kumatanthauza kukangana kochepa kwa IOPS pazosungira zoyambira, zomwe zimapangitsa kuti mawerengedwe onse awerengedwe ndi kulemba bwino.

Zithunzi

Makina ojambulira-pa-kulemba ndiwonso maziko ofunikira azithunzi za atomiki za ZFS komanso kubwereza kowonjezereka kofanana. Fayilo yogwira ntchito ili ndi mtengo wa pointer womwe umalemba zolemba zonse ndi zomwe zilipo - mukatenga chithunzithunzi, mumangopanga chithunzi cha mtengo wa pointer.

Cholembacho chikalembedwanso pamafayilo omwe akugwira ntchito, ZFS imayamba kulemba mtundu watsopano wa block kumalo osagwiritsidwa ntchito. Kenako imachotsa mtundu wakale wa block kuchokera pamafayilo apano. Koma ngati chithunzi china chikuwonetsa chipika chakale, sichisintha. Chotchinga chakale sichidzabwezeretsedwanso ngati malo aulere mpaka zithunzi zonse zofotokozera chipikacho zitawonongedwa!

Kubwereza

ZFS Zoyambira: Kusungirako ndi Kuchita
Laibulale yanga ya Steam mu 2015 inali 158 GiB ndikuphatikiza mafayilo 126. Izi zili pafupi kwambiri ndi momwe rsync imakhalira - kubwereza kwa ZFS pamaneti kunali "kokha" 927% mwachangu.

ZFS Zoyambira: Kusungirako ndi Kuchita
Pamanetiweki omwewo, kubwereza 40GB imodzi Windows 7 fayilo yazithunzi zamakina ndi nkhani yosiyana kotheratu. Kubwereza kwa ZFS ndikothamanga kwa 289 kuposa rsync-kapena "kokha" nthawi 161 mwachangu ngati muli odziwa kuyimba rsync ndi --inplace switch.

ZFS Zoyambira: Kusungirako ndi Kuchita
Chithunzi cha VM chikakula, nkhani za rsync zimakulirakulira. Kukula kwa 1,9 TiB sikuli kokulirapo pachithunzi chamakono cha VM - koma ndikokwanira kuti kubwereza kwa ZFS ndikothamanga 1148 kuposa rsync, ngakhale ndi rsync --inplace mkangano.

Mukamvetsetsa momwe zithunzithunzi zimagwirira ntchito, zimakhala zosavuta kumvetsetsa tanthauzo la kubwereza. Popeza chithunzithunzi chimangokhala mtengo wazolozera, zimatsata kuti tikatero zfs send chithunzithunzi, ndiye timatumiza mtengo uwu ndi zolemba zonse zogwirizana nazo. Tikadutsa izi zfs send в zfs receive pa chinthu chandamale, imalemba zonse zomwe zili mkati mwa chipikacho ndi mtengo wa zolozera zomwe zikuwonetsa midadada ku zomwe zafotokozedwazo.

Chilichonse chimakhala chosangalatsa kwambiri pachiwiri zfs send. Tsopano tili ndi machitidwe awiri, iliyonse ili ndi poolname/datasetname@1, ndipo mutenga chithunzi chatsopano poolname/datasetname@2. Choncho, mu dziwe gwero muli datasetname@1 и datasetname@2, ndipo mu dziwe lachindunji muli chithunzi choyamba chokha datasetname@1.

Chifukwa pakati pa gwero ndi chandamale tili ndi chithunzi chofanana datasetname@1, tikhoza kuchita owonjezera zfs send pamwamba pake. Tikamauza dongosolo zfs send -i poolname/datasetname@1 poolname/datasetname@2, ikufanizira mitengo iwiri yolozera. Zolozera zilizonse zomwe zilipo mu @2, mwachiwonekere amalozera ku midadada yatsopano - kotero tidzafunika zomwe zili m'mabulokowo.

Pa makina akutali, kukonza kumawonjezera send mophweka basi. Choyamba timalemba zolemba zonse zatsopano zomwe zikuphatikizidwa mumtsinje send, ndiyeno onjezani zolozera pamabulogu awa. Voila, tatero @2 m'dongosolo latsopano!

ZFS asynchronous incremental replication ndikusintha kwakukulu kuposa njira zakale zosagwiritsa ntchito chithunzithunzi monga rsync. Muzochitika zonsezi, zomwe zasinthidwa zokha zimasamutsidwa - koma rsync iyenera choyamba werengani kuchokera pa disk deta yonse kumbali zonse kuti muwone chiwerengerocho ndikuchiyerekeza. Mosiyana ndi izi, kubwereza kwa ZFS sikuwerenga china chilichonse kupatula mitengo ya pointer-ndi midadada iliyonse yomwe siyikuyimiridwa pachithunzi chonse.

Kuponderezana komangidwa

Kachipangizo kolemba-kulembanso kumathandizira kachitidwe kamene kamapangidwira. M'mafayilo achikhalidwe, kukanikiza kumakhala kovuta - mtundu wakale ndi mtundu watsopano wazomwe zasinthidwa zili pamalo amodzi.

Ngati mungaganizire chidutswa cha data pakati pa fayilo yomwe imayamba moyo wake ngati megabyte ya ziro kuchokera ku 0x00000000 ndi zina zotero - ndizosavuta kuziyika mu gawo limodzi pa disk. Koma chimachitika ndi chiyani ngati tisintha ma megabyte a ziro ndi megabyte ya data yosasunthika, monga JPEG kapena phokoso lachisawawa? Mwadzidzidzi, megabyte ya datayo sikanafuna imodzi, koma magawo 256 4 KB, ndipo gawo limodzi lokha ndilosungidwa mu disk space.

ZFS ilibe vuto ili, popeza zolemba zosinthidwa zimalembedwa nthawi zonse kumalo osagwiritsidwa ntchito - chipika choyambirira chimangotenga gawo limodzi la 4KiB, ndipo kulemba kwatsopano kudzatenga 256, koma izi sizovuta - kachidutswa kosinthidwa posachedwapa. "pakati" pafayiloyo idzalembedwa kumalo osagwiritsidwa ntchito mosasamala kanthu kuti kukula kwake kwasintha kapena ayi, kotero izi ndizochitika zachilendo kwa ZFS.

Kuphatikizika kwa ZFS komwe kumapangidwira kumayimitsidwa mwachisawawa, ndipo makinawa amapereka ma aligorivimu otha pluggable - pakadali pano kuphatikiza LZ4, gzip (1-9), LZJB ndi ZLE.

  • LZ4 ndi njira yotsatsira yomwe imapereka kupsinjika kwachangu kwambiri ndikuchepetsa komanso magwiridwe antchito nthawi zambiri - ngakhale pama CPU ocheperako.
  • GZIP ndi algorithm yolemekezeka yomwe ogwiritsa ntchito onse a Unix amadziwa ndikuikonda. Itha kukhazikitsidwa ndi milingo yoponderezedwa 1-9, ndikuwonjezereka kwa chiŵerengero cha kuponderezana ndi kugwiritsa ntchito CPU pamene mukuyandikira mlingo wa 9. Algorithm ndiyoyenererana ndi zolemba zonse (kapena zina zomwe zimagwiritsidwa ntchito kwambiri), koma nthawi zambiri zimayambitsa mavuto a CPU mosiyana - gwiritsani ntchito. mosamala, makamaka pamlingo wapamwamba.
  • LZJB - algorithm yoyambirira mu ZFS. Ndizosatha ndipo siziyenera kugwiritsidwanso ntchito, LZ4 ndiyopambana mwanjira iliyonse.
  • ZLE - encoding level zero, Zero Level Encoding. Simakhudza chilichonse, koma imakanikiza ziro zazikulu. Zothandiza pama seti a data osasunthika (monga JPEG, MP4 kapena mawonekedwe ena othinikizidwa kale) popeza imanyalanyaza deta yosasunthika koma imakanikiza malo osagwiritsidwa ntchito pazotsatira.

Mpofunika LZ4 psinjika pafupifupi onse ntchito; chilango cha ntchito pamene mukuchita ndi deta incompressible ndi ochepa kwambiri, ndipo kukula magwiridwe antchito a data wamba ndiwofunikira. Kutengera chithunzi cha makina kuti muyikenso makina ogwiritsira ntchito a Windows (OS yomwe yangoyikidwa kumene, palibe deta mkati mwake) ndi compression=lz4 idadutsa 27% mwachangu kuposa ndi compression=nonemu mayeso awa kuyambira 2015.

ARC - chosungira chosinthira chosinthira

ZFS ndiye njira yokhayo yamakono yomwe timayidziwa yomwe imagwiritsa ntchito makina ake owerengera, m'malo modalira pa cache ya tsamba la opareshoni kuti isunge zolemba za midadada yowerengedwa posachedwa mu RAM.

Ngakhale cache yachibadwidwe ilibe mavuto - ZFS siyingayankhe zopempha zatsopano zogawira makumbukidwe mwachangu monga kernel, kotero kuyimba kwatsopano. malloc() kugawa kukumbukira kumatha kulephera ngati ikufunika RAM yomwe ili ndi ARC pakadali pano. Koma pali zifukwa zomveka zogwiritsira ntchito cache yanu, makamaka pakadali pano.

Makina onse odziwika amakono, kuphatikiza MacOS, Windows, Linux ndi BSD, amagwiritsa ntchito algorithm ya LRU (Yogwiritsidwa Ntchito Posachedwapa) kuti agwiritse ntchito posungira tsamba. Iyi ndi algorithm yakale yomwe imakankhira chipika chosungidwa "pamwamba pa mzere" pambuyo powerenga ndikukankhira midadada "mpaka pamzere" momwe zimafunikira kuti muwonjezere zophonya zatsopano (mabulogu omwe amayenera kuwerengedwa kuchokera pa diski osati kuchokera ku cache) mpaka pamwamba.

Nthawi zambiri ma aligorivimu amagwira ntchito bwino, koma pamakina omwe ali ndi seti yayikulu yogwira ntchito, LRU imatsogolera kugunda-kutulutsa midadada yomwe imafunikira pafupipafupi kuti mupange malo midadada yomwe sidzawerengedwanso kuchokera pankhokwe.

ARC ndi algorithm yocheperako yomwe imatha kuonedwa ngati "cholemetsa". Nthawi zonse block block ikawerengedwa, imakhala yolemetsa pang'ono kutulutsa - ndipo ngakhale chipikacho chikatulutsidwa. kutsatira pa nthawi inayake. Chida chomwe chachotsedwa koma chiyenera kuwerengedwanso mu cache chidzalemeranso.

Chotsatira chomaliza cha zonsezi ndi cache yokhala ndi chiŵerengero chapamwamba kwambiri cha kugunda-chiŵerengero pakati pa kugunda kwa cache (kuwerenga kuchokera ku cache) ndi kuphonya (kuwerenga kuchokera ku disk). Ichi ndi chiwerengero chofunikira kwambiri - sikuti cache imangodzigunda yokha mwachangu kwambiri, kuphonya kwa cache kumatha kutumikiridwanso mwachangu, popeza kugunda kwa cache kumakhalapo, zopempha zochepa zofananira za disk ndikutsitsa latency kwa omwe akuphonya otsalawo. zomwe ziyenera kutumizidwa ndi disk.

Pomaliza

Tsopano popeza tafotokoza zoyambira za ZFS-momwe kukopera-kulemba kumagwirira ntchito, komanso maubale pakati pa maiwe osungira, zida zenizeni, midadada, magawo, ndi mafayilo - ndife okonzeka kukambirana momwe dziko limagwirira ntchito ndi manambala enieni.

Mu gawo lotsatira, tiwona momwe ma dziwe owoneka bwino a vdev ndi RAIDz amachitira, poyerekeza wina ndi mnzake, komanso poyerekeza ndi mitu yachikhalidwe ya Linux kernel RAID yomwe tapenda. kale.

Poyamba tinkafuna kungonena zoyambira - zolemba za ZFS zokha - koma pambuyo pake izi Tidzakhala okonzeka kuyankhula za kasinthidwe kapamwamba kwambiri ndi kukonza kwa ZFS, kuphatikiza kugwiritsa ntchito mitundu yothandiza ya vdev monga L2ARC, SLOG ndi Special Allocation.

Source: www.habr.com

Kuwonjezera ndemanga