Linuxové jadro 6.2 bude obsahovať vylepšenia RAID5/6 v Btrfs

Vylepšenia Btrfs boli navrhnuté na zahrnutie do jadra Linuxu 6.2, aby sa vyriešil problém s dierou pri zápise v implementácii RAID 5/6. Podstata problému spočíva v tom, že ak počas nahrávania dôjde k zlyhaniu, spočiatku nie je možné pochopiť, ktorý blok na ktorom zariadení RAID bol napísaný správne a v ktorom nahrávanie nebolo dokončené. Ak sa v tejto situácii pokúsite obnoviť RAID, bloky zodpovedajúce upísaným blokom môžu byť zničené, pretože stav blokov RAID nie je synchronizovaný. Tento problém sa vyskytuje vo všetkých poliach RAID1/5/6, kde neboli prijaté špeciálne opatrenia na boj proti tomuto efektu.

V implementácii RAID, ako je RAID1 v btrfs, je tento problém vyriešený použitím kontrolných súčtov v oboch kópiách; ak dôjde k nezhode, údaje sa jednoducho obnovia z druhej kópie. Tento prístup funguje aj vtedy, ak niektoré zariadenie namiesto úplného zlyhania začne odosielať nesprávne údaje.

V prípade RAID5/6 však súborový systém neukladá kontrolné súčty pre paritné bloky: v normálnej situácii je platnosť blokov overená tým, že sú všetky spočítané a paritný blok je možné rekonštruovať. z údajov. V prípade čiastočného nahrávania však tento prístup v určitých situáciách nemusí fungovať. V tomto prípade pri obnove poľa je možné, že bloky, ktoré spadajú pod neúplný záznam, budú obnovené nesprávne.

V prípade btrfs je tento problém najrelevantnejší, ak je produkovaný záznam menší ako prúžok. V tomto prípade musí súborový systém vykonať operáciu čítania-úpravy-zápisu (čítanie-úprava-zápis, RMW). Ak dôjde k blokom s neúplným zápisom, operácia RMW môže spôsobiť poškodenie, ktoré nebude zistené, bez ohľadu na kontrolné súčty. Vývojári urobili zmeny, pri ktorých operácia RMW pred vykonaním tejto operácie kontroluje kontrolný súčet blokov a ak je potrebné obnoviť dáta, kontroluje kontrolné súčty aj po zaznamenaní. Bohužiaľ, v situácii s písaním neúplného pruhu (RMW) to vedie k dodatočnej réžii na výpočet kontrolných súčtov, ale výrazne zvyšuje spoľahlivosť. Pre RAID6 takáto logika ešte nie je pripravená, avšak pre takúto poruchu v RAID6 je potrebné, aby zápis zlyhal na 2 zariadeniach naraz, čo je menej pravdepodobné.

Okrem toho môžeme zaznamenať odporúčania vývojárov na používanie RAID5/6, ktorých podstata spočíva v skutočnosti, že v Btrfs sa môžu metadáta a profil ukladania údajov líšiť. V tomto prípade môžete použiť profil RAID1 (zrkadlo) alebo dokonca RAID1C3 (3 kópie) pre metadáta a RAID5 alebo RAID6 pre dáta. To na jednej strane zaisťuje spoľahlivú ochranu metadát a absenciu „zápisovej diery“ a na druhej strane efektívnejšie využitie priestoru, charakteristické pre RAID5/6. To umožňuje vyhnúť sa poškodeniu metadát a opraviť poškodenie údajov.

Možno tiež poznamenať, že pre SSD v Btrfs v jadre 6.2 bude štandardne aktivované asynchrónne vykonávanie operácie „zahodiť“ (označenie uvoľnených blokov, ktoré už nie je potrebné fyzicky ukladať). Výhodou tohto režimu je vysoký výkon vďaka efektívnemu zoskupovaniu operácií „vyhadzovania“ vo fronte a ďalšiemu spracovaniu fronty procesorom na pozadí, preto sa bežné operácie FS nespomaľujú, ako je to v prípade synchrónnych „ zahodiť“, pretože bloky sa uvoľňujú a SSD môže robiť lepšie rozhodnutia. Na druhej strane už nebudete musieť používať nástroje ako fstrim, pretože všetky dostupné bloky budú vo FS vymazané bez potreby dodatočného skenovania a bez spomalenia operácií.

Zdroj: opennet.ru

Pridať komentár