Linux kjarna 6.2 mun innihalda endurbætur á RAID5/6 í Btrfs

Btrfs endurbætur hafa verið lagðar til fyrir innlimun í Linux 6.2 kjarna til að laga skrifgat vandamálið í RAID 5/6 útfærslunni. Kjarni vandans kemur niður á því að ef hrun verður við upptöku er í upphafi ómögulegt að skilja hvaða blokk á hvaða RAID tæki var skrifað rétt og í hvaða upptöku var ekki lokið. Ef þú reynir að endurheimta RAID í þessum aðstæðum, gætu blokkirnar sem samsvara undirskrifuðu blokkunum verið eytt vegna þess að ástand RAID blokkanna er ekki samstillt. Þetta vandamál kemur upp í hvaða RAID1/5/6 fylki sem er þar sem sérstakar ráðstafanir hafa ekki verið gerðar til að berjast gegn þessum áhrifum.

Í RAID útfærslu, eins og RAID1 í btrfs, er þetta vandamál leyst með því að nota eftirlitssummur í báðum eintökum; ef það er ósamræmi eru gögnin einfaldlega endurheimt úr öðru eintakinu. Þessi aðferð virkar líka ef eitthvað tæki byrjar að senda röng gögn í stað þess að bila algjörlega.

Hins vegar, þegar um RAID5/6 er að ræða, geymir skráarkerfið ekki eftirlitssummur fyrir jöfnunarreitina: í venjulegum aðstæðum er réttmæti kubbanna sannreynt með því að þeir eru allir eftirlitssummar og hægt er að endurbyggja jöfnunarreitinn. úr gögnunum. Hins vegar, ef um er að ræða upptöku að hluta, gæti þessi aðferð ekki virkað við ákveðnar aðstæður. Í þessu tilviki, þegar fylki er endurheimt, er mögulegt að blokkir sem falla undir ófullnægjandi skrá verði endurheimtar rangt.

Í tilviki btrfs á þetta vandamál mest við ef platan sem verið er að framleiða er minni en röndin. Í þessu tilviki verður skráarkerfið að framkvæma les-breyta-skrifa aðgerð (lesa-breyta-skrifa, RMW). Ef þetta rekst á blokkir með ófullnægjandi skrifum, þá getur RMW aðgerðin valdið spillingu sem verður ekki greint, óháð eftirlitstölum. Hönnuðir hafa gert breytingar þar sem RMW aðgerðin athugar eftirlitssummu blokka áður en þessi aðgerð er framkvæmd og ef nauðsynlegt er að endurheimta gögn athugar hún einnig eftirlitssumman eftir upptöku. Því miður, í aðstæðum þar sem ófullkomin rönd (RMW) er skrifuð, leiðir þetta til viðbótarkostnaðar til að reikna út eftirlitstölur, en eykur verulega áreiðanleika. Fyrir RAID6 er slík rökfræði ekki enn tilbúin, þó fyrir slíka bilun í RAID6 er nauðsynlegt að skrifin misheppnist á 2 tækjum í einu, sem er ólíklegra.

Að auki getum við tekið eftir ráðleggingum um notkun RAID5/6 frá þróunaraðilum, kjarninn í þeim er að í Btrfs geta lýsigögn og gagnageymslusnið verið mismunandi. Í þessu tilviki geturðu notað sniðið RAID1 (spegill) eða jafnvel RAID1C3 (3 eintök) fyrir lýsigögn og RAID5 eða RAID6 fyrir gögn. Þetta tryggir áreiðanlega lýsigagnavernd og skort á „skrifgati“ annars vegar og skilvirkari notkun á plássi, sem er einkennandi fyrir RAID5/6, hins vegar. Þetta gerir kleift að forðast spillingu lýsigagna og leiðrétta spillingu gagna.

Það má líka taka fram að fyrir SSD í Btrfs í kjarna 6.2, verður ósamstillt framkvæmd „discard“ aðgerðarinnar sjálfkrafa virkjuð (merkir lausar blokkir sem ekki þarf lengur að geyma líkamlega). Kosturinn við þessa stillingu er mikil afköst vegna árangursríkrar flokkunar „fleygja“ aðgerða í biðröð og frekari vinnslu á biðröðinni af bakgrunnsörgjörva, sem er ástæðan fyrir því að venjulegar FS-aðgerðir hægja ekki á sér, eins og raunin er með samstillt „ fleygja“ þar sem blokkir eru losaðar og SSD getur tekið betri ákvarðanir. Á hinn bóginn þarftu ekki lengur að nota tól eins og fstrim, þar sem allar tiltækar blokkir verða hreinsaðar í FS án þess að þörf sé á frekari skönnun og án þess að hægja á aðgerðum.

Heimild: opennet.ru

Bæta við athugasemd