ZFS Basics: fitahirizana sy fampisehoana

ZFS Basics: fitahirizana sy fampisehoana

Tamin'ity lohataona ity dia efa niresaka lohahevitra fampidirana sasany isika, ohatra, ny fomba hijerena ny hafainganam-pandehan'ny fiaranao ΠΈ inona ny RAID. Ao amin'ny faharoa amin'izy ireo, nampanantena mihitsy izahay fa hanohy ny fandalinana ny fahombiazan'ny topologie multi-disk isan-karazany ao amin'ny ZFS. Ity no rafitra fichier taranaka manaraka izay ampiharina na aiza na aiza: avy amin'ny Apple Π΄ΠΎ Ubuntu.

Eny, androany no andro tsara indrindra hifankazarana amin'ny ZFS, mpamaky tia karokaroka. Fantaro fotsiny fa amin'ny hevitra feno fanetren-tenan'ny mpamorona OpenZFS Matt Ahrens, "tena sarotra izany."

Saingy alohan'ny hahatongavantsika amin'ny isa - ary ho eo izy ireo, mampanantena aho - ho an'ny safidy rehetra amin'ny fanamafisana ZFS valo kapila, mila miresaka momba izany isika. Ahoana no Amin'ny ankapobeny, ny ZFS dia mitahiry angona amin'ny kapila.

Zpool, vdev ary fitaovana

ZFS Basics: fitahirizana sy fampisehoana
Ity diagrama dobo feno ity dia ahitana vdev fanampiny telo, iray isaky ny kilasy, ary efatra ho an'ny RAIDz2

ZFS Basics: fitahirizana sy fampisehoana
Matetika tsy misy antony hamoronana dobo misy karazana sy habe vdev tsy mifanentana - fa tsy misy manakana anao tsy hanao izany raha tianao.

Mba hahatakarana marina ny rafitra fisie ZFS dia mila mijery akaiky ny rafitra misy azy ianao. Voalohany, ny ZFS dia manambatra ny ambaratonga nentim-paharazana amin'ny fitantanana ny rakitra sy ny rafitra. Faharoa, mampiasa mekanika dika mitovy amin'ny fanoratana izy io. Ireo endri-javatra ireo dia midika fa ny rafitra dia tsy mitovy amin'ny rafitra rakitra mahazatra sy ny RAID arrays. Ny andiany voalohany amin'ireo singa fototra tokony ho takatra dia ny dobo fitehirizana (zpool), fitaovana virtoaly (vdev), ary fitaovana tena izy (fitaovana).

zpool

Ny dobo fitahirizana zpool no rafitra ZFS ambony indrindra. Ny dobo tsirairay dia misy fitaovana virtoaly iray na maromaro. Ny tsirairay amin'izy ireo kosa dia misy fitaovana tena izy (fitaovana) iray na maromaro. Ny dobo virtoaly dia bloc tsy miankina. Ny solosaina ara-batana iray dia mety ahitana dobo roa na maromaro misaraka, saingy tsy miankina tanteraka amin'ny hafa ny tsirairay. Tsy afaka mizara fitaovana virtoaly ny dobo.

Ny fihenan'ny ZFS dia eo amin'ny haavon'ny fitaovana virtoaly, fa tsy amin'ny haavon'ny dobo. Tsy misy famerana tanteraka ny haavon'ny dobo - raha misy fiara vdev na vdev manokana very, dia very miaraka amin'izany ny dobo iray manontolo.

Ny dobo fitehirizana maoderina dia afaka mivelona amin'ny fahaverezan'ny cache na ny fitaovana virtoaly diary - na dia mety hamoy data maloto kely aza izy ireo raha very ny log vdev mandritra ny fahatapahan'ny herinaratra na ny fianjeran'ny rafitra.

Misy hevi-diso mahazatra fa ny ZFS "data stripes" dia voasoratra manerana ny dobo manontolo. Tsy marina izany. Zpool dia tsy mampihomehy RAID0 mihitsy, fa mampihomehy JBOD miaraka amin'ny mekanika fizarana miovaova miovaova.

Amin'ny ankapobeny dia zaraina amin'ireo fitaovana virtoaly misy ny fidirana araka ny habaka malalaka misy, ka amin'ny teoria dia ho fenoina miaraka izy ireo. Ao amin'ny dikan-tenin'ny ZFS taty aoriana, ny fampiasana vdev ankehitriny (fampiasana) dia raisina - raha misy fitaovana virtoaly iray be atao kokoa noho ny iray hafa (ohatra, noho ny famakiana entana), dia hajanona vetivety amin'ny fanoratana izany, na dia manana ny maimaim-poana avo indrindra aza. habaka ratio.

Ny mekanisma fitadiavana fampiasana natsangana tamin'ny fomba fanoratana ZFS maoderina dia afaka mampihena ny faharetana sy mampitombo ny fidirana mandritra ny vanim-potoanan'ny enta-mavesatra tsy mahazatra - fa tsy izany. carte blanche amin'ny fampifangaroana tsy an-tsitrapo ny HDD miadana sy SSD haingana ao anaty dobo iray. Ny dobo tsy mitovy toy izany dia mbola hiasa amin'ny hafainganam-pandehan'ny fitaovana miadana indrindra, izany hoe, toy ny hoe voaforona tanteraka amin'ny fitaovana toy izany.

vdev

Ny dobo fitehirizana tsirairay dia misy fitaovana virtoaly iray na maromaro (fitaovana virtoaly, vdev). Ny vdev tsirairay kosa dia misy fitaovana tena izy na maromaro. Ny ankamaroan'ny fitaovana virtoaly dia ampiasaina amin'ny fitahirizana angon-drakitra tsotra, saingy misy kilasy mpanampy vdev maromaro, anisan'izany ny CACHE, LOG, ary SPECIAL. Ny tsirairay amin'ireo karazana vdev ireo dia afaka manana topologie dimy: fitaovana tokana (fitaovana tokana), RAIDz1, RAIDz2, RAIDz3, na fitaratra (fitaratra).

RAIDz1, RAIDz2 ary RAIDz3 dia karazany manokana amin'ny antsoin'ny antitra taloha hoe RAID parity roa (diagonal). 1, 2 ary 3 dia manondro ny isan'ny sakana parity atokana ho an'ny angona tsirairay. Raha tokony ho kapila misaraka ho an'ny parity, ny fitaovana virtoaly RAIDz dia mizara ity parity ity amin'ny kapila. Ny array RAIDz dia mety hamoy kapila betsaka satria manana sakana parity; raha very iray hafa izy dia hidonaka ary hitondra ny dobo fitehirizana azy.

Ao amin'ny fitaovana virtoaly misy fitaratra (fitaratra vdev), ny sakana tsirairay dia voatahiry amin'ny fitaovana tsirairay ao amin'ny vdev. Na dia fitaratra mivelatra roa aza no fahita indrindra, dia mety ho ao anaty fitaratra ny fitaovana rehetra tsy ara-dalΓ na - ny triple dia matetika ampiasaina amin'ny fametrahana lehibe mba hanatsarana ny fahaiza-mamaky sy ny fandeferana diso. Ny fitaratra vdev dia afaka mivelona amin'ny tsy fahombiazana rehetra raha mbola mitohy miasa ny fitaovana iray ao amin'ny vdev.

Ny vdev tokana dia tena mampidi-doza. Ny fitaovana virtoaly toy izany dia tsy ho tafavoaka velona amin'ny tsy fahombiazana tokana - ary raha ampiasaina ho fitahirizana na vdev manokana, ny tsy fahombiazany dia hitarika amin'ny fandringanana ny dobo manontolo. Mitandrema fatratra eto.

Ny CACHE, LOG, ary VA SPECIAL dia azo noforonina amin'ny alalan'ireo topologie etsy ambony ireo - saingy tadidio fa ny fahaverezan'ny VA SPECIAL dia midika ho fahaverezan'ny dobo, ka ny topologie mihoa-pampana no tena soso-kevitra.

fitaovana

Ity angamba no teny mora indrindra azo amin'ny ZFS - ara-bakiteny dia fitaovana fidirana kisendrasendra. Tsarovy fa ny fitaovana virtoaly dia voaforon'ny fitaovana tsirairay, raha ny dobo kosa dia misy fitaovana virtoaly.

Disks - na andriamby na solide - no fitaovana sakana mahazatra indrindra ampiasaina ho toy ny trano fanorenana vdev. Na izany aza, ny fitaovana rehetra misy famaritana ao amin'ny / dev dia hanao, noho izany dia azo ampiasaina ho fitaovana misaraka ny array RAID hardware manontolo.

Ny rakitra manta tsotra dia iray amin'ireo fitaovana fanakanana hafa manan-danja indrindra azo anaovana vdev. Dobo fitsapana avy amin'ny zara raha rakitra dia fomba azo ampiasaina hanamarinana ny baikon'ny dobo ary hijerena hoe ohatrinona ny habaka misy ao anaty dobo na fitaovana virtoaly amin'ny topolojia iray nomena.

ZFS Basics: fitahirizana sy fampisehoana
Azonao atao ny mamorona dobo fitsapana avy amin'ny rakitra vitsy ao anatin'ny segondra vitsy - fa aza adino ny mamafa ny dobo manontolo sy ny singa ao aminy avy eo

Andeha atao hoe te-hametraka mpizara amin'ny kapila valo ianao ary mikasa ny hampiasa kapila 10 TB (~ 9300 GiB) - saingy tsy azonao antoka hoe inona ny topolojia mifanaraka amin'ny filanao. Ao amin'ny ohatra etsy ambony, dia manangana dobo fitsapana avy amin'ny rakitra kely izahay ao anatin'ny segondra - ary fantatray izao fa ny RAIDz2 vdev misy kapila 10 TB valo dia manome 50 TiB amin'ny fahaiza-manao azo ampiasaina.

Ny kilasy manokana iray hafa dia ny SPARE (spare). Ny fitaovana hot-swap, tsy toy ny fitaovana mahazatra, dia an'ny dobo iray manontolo, fa tsy an'ny fitaovana virtoaly iray. Raha toa ka tsy nahomby ny vdev iray ao amin'ny dobo ary misy fitaovana mitsitsy mifandray amin'ny dobo ary misy, dia hiditra ho azy amin'ny vdev voakasika izany.

Rehefa avy mifandray amin'ny vdev voakasik'izany dia manomboka mahazo kopia na fanamboarana ny angon-drakitra tokony ho ao amin'ny fitaovana tsy hita ilay fitaovana fampiasa. Amin'ny RAID nentim-paharazana dia antsoina hoe fananganana indray izany, raha ao amin'ny ZFS kosa dia antsoina hoe resilvering.

Zava-dehibe ny manamarika fa ny fitaovana mitsitsy dia tsy manolo ny fitaovana tsy nahomby. Fanoloana vonjimaika fotsiny izany mba hampihenana ny fotoana simba ny vdev. Aorian'ny fanoloan'ny mpitantana ny vdev tsy nahomby, dia averina amin'ny fitaovana maharitra ny redundancy, ary tapaka amin'ny vdev ny SPARE ary miverina miasa ho toy ny fitsitsiana ny dobo manontolo.

Angon-drakitra, sakana ary sehatra

Ny andian-baravarankely manaraka ho takatra amin'ny diantsika ZFS dia kely kokoa momba ny fitaovana ary bebe kokoa momba ny fomba fandaminana sy fitehirizana ny angona. Mandalo ambaratonga vitsivitsy eto isika - toy ny metaslab - mba tsy hanakorontanana ny antsipiriany amin'ny fitazonana ny fahatakarana ny rafitra ankapobeny.

Dataset (dataset)

ZFS Basics: fitahirizana sy fampisehoana
Rehefa mamorona angon-drakitra voalohany isika dia mampiseho ny habaka dobo rehetra misy. Avy eo dia mametraka ny quota isika - ary manova ny teboka fametrahana. Magic!

ZFS Basics: fitahirizana sy fampisehoana
Zvol dia ny ankamaroany dia angon-drakitra nesorina tamin'ny sarin'ny rafi-drakitra, izay soloinay eto amin'ny rafitra fichier ext4 mahazatra.

Ny angon-drakitra ZFS dia mitovy amin'ny rafitra fichier mahazatra. Toy ny rafitra fichier mahazatra, raha vao jerena dia toa "laharana hafa fotsiny". Saingy toy ny rafi-drakitra azo fehezina mahazatra, ny angon-drakitra ZFS tsirairay dia manana ny fananana fototra.

Voalohany indrindra, ny angon-drakitra dia afaka manana quota voatendry. Raha napetraka zfs set quota=100G poolname/datasetname, dia tsy ho afaka manoratra amin'ny lahatahiry napetraka ianao /poolname/datasetname mihoatra ny 100 GiB.

Mariho ny fisiana - sy ny tsy fisian'ny tsipika eo am-piandohan'ny andalana tsirairay? Ny angon-drakitra tsirairay dia manana ny toerany ao amin'ny ambaratonga ZFS sy ny ambaratongan'ny rafitra. Tsy misy slash lehibe ao amin'ny ambaratonga ZFS - manomboka amin'ny anaran'ny dobo ianao ary avy eo ny lalana avy amin'ny angona iray mankany amin'ny manaraka. Ohatra, pool/parent/child ho an'ny angon-drakitra nomena anarana child eo ambanin'ny dataset parent parent ao anaty dobo misy anarana mamorona pool.

Amin'ny alΓ lan'ny default dia hitovy amin'ny anarany ao amin'ny ambaratongan'ny ZFS ny toeran'ny angon-drakitra, miaraka amin'ny slash lehibe - ilay dobo antsoina hoe pool mitaingina toy ny /pool, angon-drakitra parent napetraka ao /pool/parent, ary ny angon-drakitra momba ny zaza child napetraka ao /pool/parent/child. Na izany aza, azo ovaina ny teboka fametrahana rafitra an'ny dataset.

Raha mamaritra isika zfs set mountpoint=/lol pool/parent/child, avy eo ny angon-drakitra pool/parent/child mipetaka amin'ny rafitra toy ny /lol.

Ho fanampin'ny angon-drakitra dia tokony hanonona volume (zvols) isika. Mitovy amin'ny angon-drakitra ny boky iray, afa-tsy hoe tsy manana rafitra fichier izy io β€” fitaovana fanakanana fotsiny izy io. Azonao atao, ohatra, ny mamorona zvol Miaraka amin'ny anarany mypool/myzvol, dia amboary amin'ny rafitra fichier ext4 izany, ary amboary io rafitra fichier io - manana rafitra fichier ext4 ianao izao, fa miaraka amin'ny fiarovana rehetra an'ny ZFS! Mety ho toa adaladala izany amin'ny milina tokana, saingy misy dikany kokoa ho toy ny backend rehefa manondrana fitaovana iSCSI.

kilalao miendrika biriky

ZFS Basics: fitahirizana sy fampisehoana
Ny rakitra dia aseho amin'ny sakana iray na maromaro. Ny sakana tsirairay dia voatahiry amin'ny fitaovana virtoaly iray. Ny haben'ny sakana dia matetika mitovy amin'ny parameter recordsize, fa azo ahena ho 2^ fifindraraha misy metadata na rakitra kely.

ZFS Basics: fitahirizana sy fampisehoana
Isika tokoa tena tsy mivazivazy momba ny sazy lehibe ho an'ny fampisehoana raha mametraka fiovΓ na kely loatra ianao

Ao amin'ny dobo ZFS, ny angona rehetra, anisan'izany ny metadata, dia voatahiry ao anaty sakana. Ny haben'ny sakana ambony indrindra ho an'ny angon-drakitra tsirairay dia voafaritra ao amin'ny fananana recordsize (habe firaketana). Ny haben'ny rakitra dia azo ovaina, saingy tsy hanova ny haben'ny na ny toerana misy ny blocs izay efa voasoratra ao amin'ny angon-drakitra izany - misy fiantraikany amin'ny blocs vaovao ihany rehefa voasoratra.

Raha tsy misy fanamarihana manokana, ny haben'ny rakitra default dia 128 KiB. Karazana fifanakalozam-barotra sarotra izay tsy tonga lafatra ny fampisehoana, saingy tsy dia mahatsiravina amin'ny ankamaroan'ny tranga ihany koa. Recordsize dia azo apetraka amin'ny sanda rehetra manomboka amin'ny 4K ka hatramin'ny 1M (miaraka amin'ny fanovana mandroso recordsize azonao atao ny mametraka bebe kokoa, saingy tsy dia tsara loatra izany).

Ny sakana rehetra dia manondro ny angon'ny rakitra iray ihany - tsy azonao atao ny mametaka rakitra roa samy hafa ao anaty sakana iray. Ny rakitra tsirairay dia misy sakana iray na maromaro, arakaraka ny habeny. Raha kely noho ny haben'ny rakitra ny haben'ny rakitra dia hotehirizina amin'ny haben'ny sakana kely kokoa - ohatra, ny sakana misy rakitra 2 KiB dia tsy hanana afa-tsy sehatra 4 KiB ao amin'ny kapila.

Raha lehibe ny rakitra ary mitaky sakana maromaro, dia ho lehibe ny rakitra rehetra miaraka amin'ity rakitra ity recordsize - anisan'izany ny fidirana farany, ny ampahany lehibe amin'izany dia mety ho toerana tsy ampiasaina.

zvols tsy manana fananana recordsize - fa manana fananana mitovy aminy izy ireo volblocksize.

sehatra

Ny tranobe fototra farany indrindra dia ny sehatra. Io no singa ara-batana kely indrindra azo soratana na vakiana avy amin'ny fitaovana fototra. Nandritra ny am-polony taona maro, ny ankamaroan'ny kapila dia nampiasa sehatra 512-byte. Vao haingana, ny ankamaroan'ny kapila dia namboarina ho an'ny sehatra 4 KiB, ary ny sasany - indrindra ny SSD - dia manana sehatra 8 KiB na mihoatra.

Ny rafitra ZFS dia manana fananana izay ahafahanao mametraka tanana ny haben'ny sehatra. Ity fananana ity ashift. Somary mampisafotofoto, ny ashift dia herin'ny roa. Ohatra, ashift=9 midika hoe haben'ny sehatra 2^9, na 512 bytes.

ZFS dia manontany ny rafitra miasa amin'ny antsipiriany momba ny fitaovana sakana tsirairay rehefa ampidirina amin'ny vdev vaovao, ary ara-teorika dia mametraka ashift ho azy araka ny tokony ho izy mifototra amin'izany fampahalalana izany. Indrisy anefa fa maro ny kapila mandainga momba ny haben'ny sehatra misy azy mba hitazonana ny fifanarahana amin'ny Windows XP (izay tsy nahatakatra ny fiara miaraka amin'ny haben'ny sehatra hafa).

Midika izany fa ny mpitantana ZFS dia manoro hevitra mafy hahafantatra ny tena haben'ny sehatry ny fitaovany ary apetraka amin'ny tanana ashift. Raha apetraka ambany loatra ny fifindran'ny toetr'andro, dia mitombo tsikelikely ny isan'ny asa mamaky/manoratra. Noho izany, ny fanoratana ny "sectors" 512-byte ho sehatra tena 4 KiB dia midika fa mila manoratra ny "sector" voalohany, avy eo mamaky ny sehatra 4 KiB, manova azy amin'ny "sector" 512-byte faharoa, soraty amin'ny vaovao. sehatra 4 KiB, sy ny sisa. isaky ny fidirana.

Ao amin'ny tontolo tena izy, ny sazy toy izany dia mamely ny Samsung EVO SSDs, izay ashift=13, fa mandainga momba ny haben'ny sehatra misy azy ireo SSD ireo, ary noho izany dia napetraka ny default ashift=9. Raha toa ka tsy manova an'io toe-javatra io ny mpitantana ny rafitra efa za-draharaha dia miasa ity SSD ity Moramora HDD magnetika mahazatra.

Ho fampitahana, ho an'ny habeny lehibe loatra ashift saika tsy misy sazy. Tsy misy sazy tena misy, ary ny fitomboan'ny habaka tsy ampiasaina dia kely indrindra (na aotra miaraka amin'ny famatrarana azo atao). Noho izany, manoro hevitra mafy izahay fa na dia ireo fiara izay mampiasa sehatra 512-byte aza dia mametraka ashift=12 na dia ashift=13hiatrika ny ho avy amim-pahatokiana.

NY FANANANA ashift dia napetraka ho an'ny fitaovana virtoaly vdev tsirairay, ary tsy ho an'ny dobo, araka ny fiheveran'ny maro diso - ary tsy miova aorian'ny fametrahana. Raha voadona tsy nahy ashift rehefa manampy vdev vaovao amin'ny dobo iray ianao dia nandoto tsy azo averina io dobo io miaraka amin'ny fitaovana tsy dia mahomby ary matetika tsy misy safidy hafa afa-tsy ny manimba ny dobo ary manomboka indray. Na ny fanesorana ny vdev aza dia tsy hahavonjy anao amin'ny fanamboarana tapaka ashift!

Mekanisma kopia amin'ny fanoratana

ZFS Basics: fitahirizana sy fampisehoana
Raha misy rafitra fichier mahazatra mila mandika ny angona, dia manova ny bloc tsirairay izay misy azy

ZFS Basics: fitahirizana sy fampisehoana
Ny rafi-drakitra kopia amin'ny fanoratana dia manoratra kinova sakana vaovao ary manokatra ny dikan-teny taloha

ZFS Basics: fitahirizana sy fampisehoana
Raha tsorina, raha tsy miraharaha ny tena toerana ara-batana misy ireo sakana isika, dia ny "data comet" dia tsotsotra ho "kankana data" izay mihetsika miankavia miankavanana manerana ny sarintanin'ny habaka misy.

ZFS Basics: fitahirizana sy fampisehoana
Ankehitriny dia afaka mahazo hevitra tsara momba ny fomba fiasan'ny sary kopia amin'ny fanoratana isika - ny sakana tsirairay dia mety ho an'ny sary maromaro, ary hitohy mandra-paharava ny sary rehetra mifandraika

Ny mekanika Copy on Write (CoW) no fototry ny mahatonga ny ZFS ho rafitra mahagaga. Ny foto-kevitra fototra dia tsotra - raha mangataka rafitra fichier nentim-paharazana ianao hanova rakitra, dia hanao izay nangatahinao izany. Raha mangataka rafitra fichier copie-on-write ianao hanao toy izany koa dia holazainy hoe "ok" fa mandainga aminao.

Fa kosa, ny rafitra fichier copy-on-write dia manoratra dikan-teny vaovao amin'ny sakana novaina ary avy eo dia manavao ny metadatan'ny rakitra mba hanaisotra ny rohy taloha ary hampifandray ny sakana vaovao vao nosoratanao taminy.

Ny fanesorana ny sakana taloha sy ny fampifandraisana ny vaovao dia atao amin'ny fandidiana iray, noho izany dia tsy azo sakanana izany - raha maty ianao aorian'ny nitrangan'izany, dia manana dikan-drakitra vaovao ianao, ary raha maty aloha ianao dia manana ny dikan-teny taloha. . Na izany na tsy izany dia tsy hisy fifandirana ao amin'ny rafi-drakitra.

Copy-on-write ao amin'ny ZFS dia tsy miseho amin'ny haavon'ny rafi-drakitra, fa koa amin'ny sehatry ny fitantanana kapila. Midika izany fa tsy misy fiantraikany amin'ny habaka fotsy ny ZFS (lavaka ao amin'ny RAID) - trangan-javatra iray rehefa nanam-potoana handraketana an-tsoratra fotsiny ny tapany talohan'ny nianjeran'ny rafitra, miaraka amin'ny fahasimban'ny array aorian'ny famerenana indray. Eto ny tsipika dia nosoratana atomika, ny vdev dia misesy foana, ary Dadatoanao i Bob.

ZIL: ZFS intent log

ZFS Basics: fitahirizana sy fampisehoana
Ny rafitra ZFS dia mitantana ny fanoratana synchronous amin'ny fomba manokana - mitahiry azy ireo mandritra ny fotoana fohy fa avy hatrany dia mitahiry azy ireo ao amin'ny ZIL alohan'ny hanoratana azy ireo amin'ny farany miaraka amin'ny fanoratana asynchronous.

ZFS Basics: fitahirizana sy fampisehoana
Amin'ny ankapobeny, ny angona voasoratra amin'ny ZIL dia tsy vakiana intsony. Saingy azo atao izany aorian'ny fianjeran'ny rafitra

ZFS Basics: fitahirizana sy fampisehoana
SLOG, na fitaovana LOG faharoa, dia manokana fotsiny - ary tena haingana - vdev, izay azo tehirizina misaraka amin'ny fitahirizana lehibe ny ZIL.

ZFS Basics: fitahirizana sy fampisehoana
Aorian'ny fianjerana dia averina averina daholo ny angon-drakitra maloto rehetra ao amin'ny ZIL - amin'ity tranga ity, ZIL dia ao amin'ny SLOG, noho izany dia averina avy eo.

Misy sokajy roa lehibe ny asa fanoratana - synchronous (sync) sy asynchronous (async). Ho an'ny ankamaroan'ny enta-mavesatra, ny ankamaroan'ny fanoratana dia asynchronous - ny rafi-drakitra dia mamela azy ireo hanangona sy havoaka amin'ny ampahany, mampihena ny fizarazarana ary mampitombo be ny vokatra.

Zavatra hafa tanteraka ny fandraketam-peo voarindra. Rehefa mangataka fanoratana synchronous ny fampiharana iray dia milaza amin'ny rafi-drakitra izy io: "Mila mametraka izany amin'ny fitadidiana tsy miovaova ianao. izao dia izaomandra-pahatongan'izany dia tsy misy zavatra hafa azoko atao." Noho izany, ny fanoratana synchronous dia tokony apetraka amin'ny kapila avy hatrany - ary raha mampitombo ny fizarazarana na mampihena ny fivoahana izany, dia izay tokoa.

ZFS dia mitantana ny fanoratana synchronous amin'ny fomba hafa noho ny rafitra rakitra mahazatra - fa tsy mametraka azy ireo avy hatrany amin'ny fitahirizana tsy tapaka, ZFS dia mametraka azy ireo amin'ny toerana fitahirizana manokana antsoina hoe ZFS Intent Log, na ZIL. Ny hafetsena dia ireo firaketana ireo ihany koa mijanona ao amin'ny fitadidiana, miaraka amin'ny fangatahana fanoratana asynchronous mahazatra, ho voatahiry any amin'ny fitahirizana ho toy ny TXGs (Vondrona Transaction) mahazatra.

Amin'ny fampandehanana mahazatra, ny ZIL dia nosoratana ary tsy vakiana intsony. Rehefa afaka fotoana fohy, ny firaketana an-tsoratra avy amin'ny ZIL dia manolo-tena amin'ny fitahirizana lehibe amin'ny TXG mahazatra avy amin'ny RAM, dia misaraka amin'ny ZIL izy ireo. Ny hany fotoana vakiana avy amin'ny ZIL dia rehefa manafatra ny dobo.

Raha tsy nahomby ny ZFS - fianjeran'ny rafitra miasa na fahatapahan-jiro - raha misy angona ao amin'ny ZIL, dia hovakiana mandritra ny fanafarana dobo manaraka izany angona izany (ohatra, rehefa averina ny rafitra vonjy maika). Ny zavatra rehetra ao amin'ny ZIL dia hovakiana, mivondrona ho TXGs, manolo-tena amin'ny fitahirizana lehibe, ary avy eo misaraka amin'ny ZIL mandritra ny dingana fanafarana.

Ny iray amin'ireo kilasy mpanampy vdev dia antsoina hoe LOG na SLOG, ny fitaovana faharoa an'ny LOG. Manana tanjona iray izy io - ny hanome ny dobo miaraka amin'ny vdev misaraka, ary tsara kokoa ny haingana kokoa, tena mahatohitra ny fanoratana ny ZIL, fa tsy mitahiry ny ZIL amin'ny fivarotana vdev lehibe. Ny ZIL mihitsy no manao fihetsika mitovy na aiza na aiza misy azy, fa raha ny LOG vdev dia manana fahaiza-manoratra avo lenta dia ho haingana kokoa ny fanoratana synchronous.

Ny fampidirana vdev miaraka amin'ny LOG amin'ny dobo dia tsy mandeha tsy afaka manatsara ny asa fanoratana asynchronous - na dia manery ny manoratra rehetra amin'ny ZIL aza ianao zfs set sync=always, dia mbola hampifandray amin'ny fitahirizana lehibe ao amin'ny TXG amin'ny fomba mitovy sy amin'ny hafainganam-pandeha mitovy amin'ny tsy misy ny log. Ny hany fanatsarana ny fampandehanana mivantana dia ny faharetan'ny fanoratana synchronous (satria ny log haingana kokoa dia manafaingana ny asa). sync).

Na izany aza, ao anatin'ny tontolo iray izay efa mitaky fanoratana synchronous be dia be, ny vdev LOG dia afaka manafaingana ankolaka ny fanoratana asynchronous sy ny famakiana tsy misy cache. Ny fanesorana ny fidirana ZIL amin'ny vdev LOG misaraka dia midika fa kely kokoa ny fifandirana ho an'ny IOPS amin'ny fitahirizana voalohany, izay manatsara ny fahombiazan'ny famakiana sy fanoratana rehetra.

sarin'ireo

Ny mekanika copie-on-write dia fototra ilaina ho an'ny sary atomika ZFS sy replication asynchronous incremental. Ny rafitra rakitra mavitrika dia manana hazo fanondro izay manamarika ny firaketana rehetra miaraka amin'ny angona ankehitriny - rehefa maka sary ianao dia manao dika mitovy amin'ity hazo fanondro ity.

Rehefa voasoritra ao amin'ny rafi-drakitra mavitrika ny rakitra iray, ZFS no manoratra voalohany ny dikan-teny sakana vaovao amin'ny habaka tsy ampiasaina. Avy eo dia manaisotra ny dikan-teny taloha amin'ny sakana amin'ny rafi-drakitra ankehitriny. Fa raha misy snapshot manondro ilay sakana taloha, dia mbola tsy miova izany. Ny sakana taloha dia tsy haverina ho toerana malalaka mandra-pahapotehan'ny sary rehetra manondro an'io sakana io!

Replication

ZFS Basics: fitahirizana sy fampisehoana
Ny tranomboky Steam tamin'ny taona 2015 dia 158 GiB ary misy rakitra 126. Tena akaiky ny toe-javatra mety indrindra ho an'ny rsync - ZFS replication amin'ny tambajotra dia "ihany" 927% haingana kokoa.

ZFS Basics: fitahirizana sy fampisehoana
Amin'ny tambajotra iray ihany, tantara hafa tanteraka ny famerenana ny rakitra sary milina virtoaly 40GB Windows 7. Ny famerenan'ny ZFS dia 289 heny haingana noho ny rsync - na "ihany" 161 heny haingana kokoa raha toa ianao ka mahay miantso rsync miaraka amin'ny --inplace.

ZFS Basics: fitahirizana sy fampisehoana
Rehefa mirefy ny sary VM iray, ny rsync dia mamoaka ny haavony miaraka aminy. 1,9 TiB dia tsy dia lehibe loatra ho an'ny sary VM maoderina - fa lehibe izany fa ny replication ZFS dia 1148 heny haingana noho ny rsync, na dia miaraka amin'ny rsync's --inplace argument

Raha vao azonao ny fomba fiasan'ny snapshots dia tokony ho mora ny mahazo ny fototry ny replication. Satria hazo fanondro amin'ny firaketana fotsiny ny snapshot, dia manaraka izany raha manao izany isika zfs send snapshot, avy eo dia alefanay ity hazo ity sy ny rakitra rehetra mifandraika amin'izany. Rehefa mandefa an'ity izahay zfs send Π² zfs receive eo amin'ny lasibatra, dia manoratra ny tena votoatin'ny sakana sy ny hazon'ny tondro izay manondro ireo sakana amin'ny angona kendrena.

Vao mainka mahaliana kokoa ny zavatra amin'ny faharoa zfs send. Manana rafitra roa isika izao, samy misy poolname/datasetname@1, ary maka sary vaovao ianao poolname/datasetname@2. Noho izany, ao amin'ny dobo tany am-boalohany anananao datasetname@1 ΠΈ datasetname@2, ary ao amin'ny dobo kendrena hatreto dia ny sary voalohany ihany datasetname@1.

Satria manana sary iraisana isika eo amin'ny loharano sy ny tanjona datasetname@1, vitantsika io mitombo miandalana, zfs send tafahoatra an'iny. Rehefa miteny amin'ny rafitra isika zfs send -i poolname/datasetname@1 poolname/datasetname@2, mampitaha hazo fanondro roa. Izay tondro izay tsy misy afa-tsy ao @2, mazava ho azy fa manondro ireo sakana vaovao - noho izany dia ilaintsika ny ao anatin'ireo sakana ireo.

Amin'ny rafitra lavitra, fanodinana incremental send tsotra ihany. Voalohany dia soratanay ny fidirana vaovao rehetra tafiditra ao amin'ny stream send, ary ampio fanondro amin'ireo sakana ireo. Voila, manana izahay @2 amin'ny rafitra vaovao!

ZFS asynchronous incremental replication dia fanatsarana lehibe amin'ny fomba tsy mifototra amin'ny snapshot taloha toa ny rsync. Amin'ireo tranga roa ireo dia angon-drakitra niova ihany no afindra - fa ny rsync aloha dia tsy maintsy vakio ny avy amin'ny kapila ny angon-drakitra rehetra amin'ny andaniny roa mba hijerena ny isa sy hampitaha azy. Mifanohitra amin'izany kosa, ny replication ZFS dia tsy mamaky na inona na inona afa-tsy hazo fanondro - sy izay sakana tsy hita ao amin'ny sary nozaraina.

Fampidirana anatiny

Manamora ny rafitra fanerena inline ihany koa ny mekanika copie-on-write. Ao amin'ny rafitra fichier nentim-paharazana, olana ny famatrarana - na ny dikan-teny taloha sy ny dikan-teny vaovao amin'ny angon-drakitra novaina dia mipetraka ao amin'ny habaka iray ihany.

Raha mandinika ny angon-drakitra iray eo afovoan'ny rakitra iray izay manomboka ny fiainana ho megabyte amin'ny zeros avy amin'ny 0x00000000 sy ny sisa, dia tena mora ny manindry azy amin'ny sehatra iray amin'ny kapila. Fa inona no mitranga raha manolo io megabyte aotra io amin'ny megabyte angona tsy azo fehezina toy ny JPEG na pseudo-random noise? Tsy nampoizina, ity megabyte ny angon-drakitra ity dia tsy mitaky sehatra iray, fa 256 4 KiB, ary amin'ity toerana ity amin'ny kapila dia sehatra iray ihany no voatokana.

Tsy manana an'io olana io ny ZFS, satria ny firaketana novaina dia nosoratana hatrany amin'ny habaka tsy ampiasaina - ny sakana voalohany dia tsy misy afa-tsy sehatra 4 KiB, ary ny firaketana vaovao dia hibodo 256, saingy tsy olana izany - sombiny novaina vao haingana avy amin'ny " afovoany" amin'ny rakitra dia hosoratana amin'ny habaka tsy ampiasaina na inona na inona niova na tsia, noho izany ho an'ny ZFS dia toe-javatra mahazatra izany.

Ny famatrarana ZFS teratany dia kilemaina amin'ny alΓ lan'ny default, ary ny rafitra dia manolotra algorithm pluggable β€” LZ4, gzip (1-9), LZJB, ary ZLE amin'izao fotoana izao.

  • LZ4 dia algorithm amin'ny streaming izay manome tombotsoa ho an'ny famoretana sy famotehana ary fampandehanana haingana indrindra ho an'ny ankamaroan'ny tranga fampiasana - na dia amin'ny CPU miadana aza.
  • gzip dia algorithm mendri-kaja izay fantatry ny mpampiasa Unix rehetra ary tia azy. Azo ampiharina amin'ny ambaratonga compression 1-9, miaraka amin'ny tahan'ny fanerena sy ny fampiasana CPU mitombo rehefa manakaiky ny haavony 9. Ny algorithm dia mety tsara amin'ny tranga fampiasana lahatsoratra rehetra (na zavatra hafa azo fehezina), fa raha tsy izany dia matetika miteraka olana amin'ny CPU βˆ’ ampiasao izany amim-pitandremana, indrindra amin'ny ambaratonga ambony.
  • LZJB dia ny algorithm tany am-boalohany ao amin'ny ZFS. Tsy ampiasaina intsony ary tsy tokony hampiasaina intsony, ny LZ4 dia mihoatra azy amin'ny lafiny rehetra.
  • ratsy - Encoding niveau zero, Encoding niveau aotra. Tsy mikasika angon-drakitra ara-dalΓ na mihitsy izy io, fa manindry andiana aotra lehibe. Mahasoa ho an'ny angon-drakitra tsy azo tsinontsinoavina tanteraka (toy ny JPEG, MP4, na endrika hafa efa voatsindry) satria tsy miraharaha angona tsy azo tsinontsinoavina izy fa manindrona toerana tsy ampiasaina amin'ny rakitsoratra vokatr'izany.

Manoro hevitra ny famatrarana LZ4 izahay ho an'ny tranga fampiasana rehetra; ny sazy fampisehoana rehefa sendra angon-drakitra incompressible dia tena kely, ary AMIN'ANDRIAMANITRA zava-dehibe ny fahombiazan'ny angona mahazatra. Mandika sary milina virtoaly ho an'ny fametrahana vaovao ny rafitra fandidiana Windows (OS vao tafapetraka, tsy misy angona ao anatiny) miaraka amin'ny compression=lz4 nandalo 27% haingana kokoa noho ny tamin'ny compression=nonein ity fitsapana ity tamin'ny taona 2015.

ARC - cache fanoloana adaptive

ZFS no hany rafitra fisie maoderina fantatray fa mampiasa ny mekanika famakiam-boky manokana, fa tsy miantehitra amin'ny cache pejin'ny rafitra miasa hitahiry ireo dika mitovy amin'ireo sakana vao novakiana ao amin'ny RAM.

Na dia tsy misy olana aza ny cache teratany - ZFS dia tsy afaka mamaly haingana ny fangatahana fitadidiana fahatsiarovana vaovao haingana toy ny kernel, noho izany ny fanamby vaovao malloc() amin'ny fizarana fahatsiarovana dia mety tsy hahomby raha toa ka mila ny RAM izay itoeran'ny ARC amin'izao fotoana izao. Saingy misy antony tsara hampiasana ny cache anao manokana, farafaharatsiny amin'izao fotoana izao.

Ny rafitra fiasa maoderina rehetra fantatra, anisan'izany ny MacOS, Windows, Linux ary BSD, dia mampiasa ny algorithm LRU (Least vao haingana) hampihatra ny cache pejy. Algorithm primitive ity izay manosika ny sakana voatahiry "miakatra ny filaharana" aorian'ny famakiana tsirairay, ary manosika ireo sakana "midina ny filaharana" raha ilaina izany mba hampidirana ny cache vaovao (bloka izay tokony ho novakiana avy amin'ny kapila, fa tsy avy amin'ny cache) ambony.

MazΓ na dia miasa tsara ny algorithm, fa amin'ny rafitra misy angona lehibe miasa, ny LRU dia mitarika mora foana amin'ny fandosirana - mandroaka sakana ilaina matetika mba hanomezana toerana ho an'ny sakana izay tsy hovakiana intsony ao amin'ny cache.

Arc dia algorithm tsy dia naive loatra izay azo raisina ho toy ny cache "mavesatra". Isaky ny vakiana ny bloc cache dia miha "mavesatra" sy sarotra ny handroahana azy - ary na dia aorian'ny fandroahana sakana iray aza fantarina ao anatin'ny fe-potoana iray. Ny sakana iray izay noroahina nefa mila averina vakiana ao anaty cache dia ho lasa "mavesatra kokoa".

Ny vokatr'izany rehetra izany dia cache miaraka amin'ny taham-pamokarana avo kokoa, ny tahan'ny eo amin'ny cache hits (vakiana avy amin'ny cache) ary ny cache tsy hita (mamaky avy amin'ny kapila). Statistika tena manan-danja tokoa izany - tsy vitan'ny hoe ny cache dia mamely tena haingana kokoa, ny cache dia azo alefa haingana kokoa, satria ny cache be dia be, ny kely kokoa ny fangatahana kapila miaraka ary ny fihenan'ny latency ho an'ireo sisa tavela izay tsy maintsy aroso miaraka amin'ny kapila.

famaranana

Rehefa avy nianatra ny semantika fototra an'ny ZFS - ny fomba fiasan'ny copie-on-write, ary koa ny fifandraisana misy eo amin'ny dobo fitehirizana, ny fitaovana virtoaly, ny sakana, ny sehatra ary ny rakitra - dia vonona ny hiresaka momba ny zava-bita tena izy amin'ny isa tena izy.

Ao amin'ny ampahany manaraka, hojerentsika ny tena zava-bitan'ny dobo misy fitaratra vdevs sy RAIDz, mifanohitra amin'ny tsirairay, ary koa mifanohitra amin'ny topologie RAID kernel Linux nentim-paharazana izay nozahanay. aloha.

Tamin'ny voalohany, ny fototra ihany no tiana holazaina - ny topologie ZFS ihany - fa taorian'izay izany andao hiomana hiresaka momba ny fananganana sy fanefena ny ZFS mandroso kokoa, ao anatin'izany ny fampiasana karazana vdev fanampiny toy ny L2ARC, SLOG ary Allocation manokana.

Source: www.habr.com

Add a comment