Barrierat dhe sistemet e skedarëve të regjistruar

TĂ« gjithĂ« ju dĂ«shiroj njĂ« fundjavĂ« tĂ« shkĂ«lqyer! Ju ftojmĂ« nĂ« njĂ« mĂ«sim Demo falas «Konfigurimi i serverit web (Apache, Nginx, balancimi Nginx)», i cili do tĂ« drejtohet nga Andrei Buranov — specialist i sistemeve UNIX nĂ« kompaninĂ« Mail.Ru Group. Gjithashtu publikojmĂ« njĂ« artikull nga Jonathan Corbet — Redaktori Ekzekutiv nĂ« LWN.net.

Sistemet e files me regjistrim premtojnë të çlirojnë administratorët e sistemeve nga problemet me dëmtimin e diskut gjatë dështimeve të sistemit. Edhe pa nisur kontrollin e integritetit të sistemit të files. Megjithatë, në realitet, gjithçka është pak më e komplikuar. Dhe siç tregon diskutimi i fundit, ndoshta madje më e ngatërruar se sa shumë nga ne mendojnë, për shkak se siguria e integritetit të sistemeve të files me regjistrim ndikon në performancën.

NjĂ« sistem file, si ext3, pĂ«rdor njĂ« zonĂ« tĂ« veçantĂ« nĂ« disk, tĂ« quajtur regjistĂ«r. Kur bĂ«hen ndryshime nĂ« metadat e sistemit tĂ« files, kĂ«to ndryshime fillimisht regjistrohen nĂ« regjistĂ«r pa modifikuar pjesĂ«n tjetĂ«r tĂ« sistemit tĂ« files. Pas regjistrimit tĂ« tĂ« gjitha ndryshimeve nĂ« regjistĂ«r, aty shtohet njĂ« ‘bllok angazhimi’, qĂ« tregon pĂ«rfundimin e transaksionit. Dhe vetĂ«m pasi tĂ« regjistrohet blloku i angazhimit, transaksioni Ă«shtĂ« i konfirmuar dhe metadat e ndryshuara regjistrohen nĂ« disk. NĂ«se sistema dĂ«shtojĂ« ndonjĂ«herĂ«, me informacionin nĂ« regjistĂ«r mund tĂ« pĂ«rfundohet sigurt punĂ«n dhe tĂ« shmangen dĂ«mtimet e sistemit tĂ« files pĂ«r shkak se Ă«shtĂ« azhuruar vetĂ«m njĂ« pjesĂ« e metadatave.

MegjithatĂ«, ka njĂ« pengesĂ«: kodi i sistemit tĂ« files para regjistrimit tĂ« bllokut tĂ« angazhimit duhet tĂ« jetĂ« absolutisht i sigurt se tĂ« gjithĂ« informacioni pĂ«r transaksionin tashmĂ« Ă«shtĂ« futur nĂ« regjistĂ«r. Thjesht tĂ« regjistrosh operacionet nĂ« rendin e duhur nuk Ă«shtĂ« e mjaftueshme — disqet moderne mbĂ«shtesin cache tĂ« mĂ«dha tĂ« brendshme dhe riordinojnĂ« operacionet pĂ«r tĂ« pĂ«rmirĂ«suar performancĂ«n. Prandaj, para bllokut tĂ« angazhimit Ă«shtĂ« e nevojshme tĂ« tregosh shprehimisht pĂ«r transferimin e tĂ« dhĂ«nave nga regjistri nĂ« disk. NĂ«se blloku i angazhimit regjistrohet mĂ« herĂ«t, regjistri mund tĂ« jetĂ« i dĂ«mtuar. PĂ«r tĂ« zgjidhur kĂ«tĂ« problem pĂ«rdoren barrierat. NĂ« thelb, njĂ« barrierĂ« ndalon regjistrimin e çdo blloku pas barrierĂ«s, derisa tĂ« gjithĂ« blloqet e regjistruara para barrierĂ«s tĂ« jenĂ« transferuar nĂ« disk. Duke pĂ«rdorur barrierat, sistemet e files garantojnĂ« koherencĂ«n e strukturave tĂ« files.

Por ka një problem tjetër: sistemet e skedarëve ext3 dhe ext4 nuk përdorin barrierat si parazgjedhje. Ka një opsion, por nëse administratorin nuk i ka aktivizuar ato shprehimisht, këto sisteme skedarësh punojnë pa bariera, ndonëse në disa distribucione (p.sh., SUSE) vlerat e parazgjedhura janë të tjera. Eric Sandeen së fundmi vendosi që kjo situatë duhet të ndryshojë dhe bëri një patch, i cili modifikon cilësimet e parazgjedhura për ext3 dhe ext4. Dhe atëherë filloi një diskutim i gjallë.

Andrew Morton është shqyrtuar shumë hollësisht u përgjigj, pse vlera e parazgjedhur është pikërisht kështu:

HerĂ«n e fundit kur pĂ«rpiqeshim ta ndryshonim kĂ«tĂ«, performanca nĂ« shumĂ« ngarkesa u pĂ«rkeqĂ«sua me 30%, prandaj e hodha tĂ« gjitha kĂ«to patches me panik. Mendoj se nuk mund tĂ« pranojmĂ« dhe tĂ« ngadalĂ«sojmĂ« tĂ« gjitha makinat nĂ« atĂ« masë 

Këtu nuk ka zgjidhje ideale, dhe unë jam i prirur të mos zgjoj këtë qen të flenë dhe t'i lë cilësimet e parazgjedhura në vlerësimin e zhvilluesve të distribucioneve.

Prandaj, në parazgjedhje barrierat janë të çactivate, pasi ato ndikojnë ndjeshëm në performancë. Për më tepër, sistemet e skedarëve përdoren me sukses pa barrierat. Mesazhet për dëmtimin e sistemit të skedarëve ext3 janë të pakta dhe të rralla.

Por nuk Ă«shtĂ« thjesht fat i mirĂ«. Ted Ts’o shpjegon Ă«shtĂ« se regjistri ext3 / ext4 zakonisht Ă«shtĂ« i vendosur nĂ« njĂ« mĂ«nyrĂ« tĂ« vazhdueshme. SĂ« pari, drejtori i sistemit tĂ« skedarĂ«ve pĂ«rpiqet ta krijojĂ« atĂ« nĂ« mĂ«nyrĂ« tĂ« vazhdueshme. SĂ« dyti, regjistri zakonisht krijohet nĂ« tĂ« njĂ«jtĂ«n kohĂ« me sistemin e skedarĂ«ve, kur Ă«shtĂ« e lehtĂ« tĂ« gjesh njĂ« hapĂ«sirĂ« tĂ« vazhdueshme. VazhdueshmĂ«ria dhe renditja janĂ« tĂ« dobishme jo vetĂ«m pĂ«r performancĂ«n, por gjithashtu pĂ«r tĂ« parandaluar ri-renditjen. Zakonisht blloku i angazhimit do tĂ« vendoset menjĂ«herĂ« pas tĂ« dhĂ«nave tĂ« tjera nĂ« regjistĂ«r, prandaj disku nuk ka arsye pĂ«r ri-renditje. Blloku i angazhimit regjistrohet natyrshĂ«m nĂ« disk menjĂ«herĂ« pas regjistrimeve tĂ« tjera nĂ« regjistĂ«r.

Megjithatë, askush nuk pret që kjo të ndodhi gjithmonë. Disqet mund të sillen ndryshe. Për më tepër, regjistri përbën një buffer rrethor. Prandaj, kur një transaksion regjistrohet në fund të regjistrit, blloku i angazhimit mund të ndodhet në një bllok më të hershëm, përpara regjistrimeve të tjera në regjistër. Prandaj, ekziston gjithmonë mundësia e dëmtimit. Në të vërtetë, Chris Mason ka informacion për këtë testetNuk ka dyshim që puna pa barrierë është më e pasigurt se me to.

Nëse jeni gati të pranoni një goditje në performancë, mund të aktivizoni barrierat. Në atë rast, sigurisht, kur sistemi juaj i skedarëve nuk është i bazuar në LVM (siç ndodh në disa shpërndarje si default). Duket se menaxheri i pajisjeve nuk mbështet barrierat. Në raste të tjera, do të ishte mirë të zbutnim rënien e performancës. Dhe, duket se këtë është e mundur ta bëni.

Implementimi aktual i ext3 (kur barrierat janë të aktivizuara) kryen sekuencën e mëposhtme operacionesh për çdo transaksion:

  1. Të dhënat shkruhen në ditar

  2. Një barrierë ekzekutohet

  3. Përfundon blloku i angazhimit

  4. Një barrierë tjetër ekzekutohet

  5. Dhe më vonë metadatet janë në disq

Në ext4, barrierë e parë (hapi 2) mund të lihet jashtë, pasi sistemi i skedarëve ext4 mbështet checksum-in në ditar.

Nëse të dhënat e ditarit dhe blloku i angazhimit janë të riordnuara, dhe operacioni ndërpritet si rezultat i një dështimi, atëherë checksum-i i ditarit nuk do të përputhet me atë që ruhet në bllokun e angazhimit, dhe transaksioni do të refuzohet. 

Kris Mason mendojnë, që do të ishte "në përgjithësi e sigurt" të hiqte këtë barrierë edhe në ext3, me përjashtim të mundshëm kur ditari arrin në fund dhe fillon të shkruajë nga fillimi. 

Një ide tjetër për të përshpejtuar punën është të vononi operacionet me barrierat kur është e mundur. Nëse nuk ka një nevojë urgjente për të shkarkuar të dhënat në disk menjëherë, mund të krijoni disa transaksione në ditar dhe të shkarkoni në disk me një barrierë.

Gjithashtu ka një potencial të caktuar për përmirësim për shkak të rendit të kujdesshëm të operacioneve, në mënyrë që barrierat (të cilat zakonisht zbatohen si kërkesa për "shkarkoni të gjitha operacionet e vonuara në disk") të mos detyrojnë shkarkimin e blloqeve që nuk kërkojnë rregull.

Duket se ka ardhur koha të mendojmë se si ta bëjmë koston e barrierave të pranueshme. Ted Ts'o, duket se mendon në mënyrë të ngjashme:

Mendoj se duhet të përfshijmë barrierat në ext3/4, dhe pastaj të punojmë për të zvogëluar kostot në ext4/jbd2. Me siguri, shumica dërrmuese e sistemeve nuk punojnë në kushte të ngjashme me ato që Kris përdori për të demonstruar problemin dhe siguria e sistemit të skedarëve si default duhet të jetë prioritet.

Shkenca e shëndoshë më thotë se ky qen nuk po fle dhe, me siguri, do të lehë për ca kohë. Kjo mund të shqetësojë disa fqinjë, por është më mirë se sa ta lejojmë atë të kafshojë.

A Ă«shtĂ« interesante tĂ« zhvilloheni nĂ« kĂ«tĂ« drejtim? Regjistrohuni pĂ«r njĂ« mĂ«sim ProvĂ« falas «Konfigurimi i serverit web (Apache, Nginx, balancimi Nginx)» dhe merrni pjesĂ« nĂ« transmetim "Puna me logjet nĂ« Linux", qĂ« do tĂ« udhĂ«hiqet nga Pavel Vikiryuk — operator i komunikimit MVNO, inxhinier DevOps.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster