Linuxové jádro 6.2 bude obsahovat vylepšení RAID5/6 v Btrfs

Pro zahrnutí do jádra Linuxu 6.2 byla navržena vylepšení Btrfs, aby se vyřešil problém s dírami při zápisu v implementaci RAID 5/6. Podstata problému spočívá v tom, že pokud během nahrávání dojde k havárii, není zpočátku možné pochopit, který blok na kterém zařízení RAID byl správně zapsán a ve kterém nahrávání nebylo dokončeno. Pokud se v této situaci pokusíte obnovit RAID, bloky odpovídající upsaným blokům mohou být zničeny, protože stav bloků RAID není synchronizován. K tomuto problému dochází ve všech polích RAID1/5/6, kde nebyla přijata speciální opatření k potlačení tohoto efektu.

V implementaci RAID, jako je RAID1 v btrfs, je tento problém vyřešen použitím kontrolních součtů v obou kopiích; pokud dojde k neshodě, data se jednoduše obnoví z druhé kopie. Tento přístup funguje i v případě, že některé zařízení místo úplného selhání začne odesílat nesprávná data.

V případě RAID5/6 však systém souborů neukládá kontrolní součty pro paritní bloky: v normální situaci je platnost bloků ověřena tím, že jsou všechny kontrolní součty a paritní blok lze rekonstruovat. z dat. V případě částečného záznamu však tento přístup nemusí v určitých situacích fungovat. V tomto případě je při obnově pole možné, že bloky, které spadají pod neúplný záznam, budou obnoveny nesprávně.

V případě btrfs je tento problém nejrelevantnější, pokud je produkovaný záznam menší než proužek. V tomto případě musí souborový systém provést operaci čtení-upravování-zápis (čtení-upravování-zápis, RMW). Pokud dojde k blokům s neúplným zápisem, může operace RMW způsobit poškození, které nebude detekováno bez ohledu na kontrolní součty. Vývojáři provedli změny, ve kterých operace RMW před provedením této operace kontroluje kontrolní součet bloků a v případě nutnosti obnovy dat kontroluje kontrolní součty i po záznamu. Bohužel v situaci se zápisem neúplného pruhu (RMW) to vede k další režii pro výpočet kontrolních součtů, ale výrazně zvyšuje spolehlivost. Pro RAID6 taková logika ještě není připravena, nicméně pro takovou poruchu v RAID6 je nutné, aby selhal zápis na 2 zařízeních najednou, což je méně pravděpodobné.

Dodatečně můžeme zaznamenat doporučení pro použití RAID5/6 od vývojářů, jejichž podstatou je, že v Btrfs se mohou metadata a profil ukládání dat lišit. V tomto případě můžete pro metadata použít profil RAID1 (zrcadlení) nebo dokonce RAID1C3 (3 kopie) a pro data RAID5 nebo RAID6. To zajišťuje spolehlivou ochranu metadat a absenci „zápisové díry“ na jedné straně a efektivnější využití prostoru, charakteristické pro RAID5/6, na straně druhé. To umožňuje zabránit poškození metadat a poškození dat lze opravit.

Lze také poznamenat, že pro SSD v Btrfs v jádře 6.2 bude standardně aktivováno asynchronní provádění operace „discard“ (označení uvolněných bloků, které již není třeba fyzicky ukládat). Výhodou tohoto režimu je vysoký výkon díky efektivnímu seskupování operací „discard“ ve frontě a dalšímu zpracování fronty procesorem na pozadí, proto se běžné operace FS nezpomalují, jako je tomu u synchronních „ zahodit“, protože bloky se uvolňují a SSD může dělat lepší rozhodnutí. Na druhou stranu již nebudete muset používat nástroje jako fstrim, protože všechny dostupné bloky budou ve FS vymazány bez nutnosti dalšího skenování a bez zpomalování operací.

Zdroj: opennet.ru

Přidat komentář