„Linux 6.2“ branduolys apims Btrfs RAID5/6 patobulinimus

Btrfs patobulinimai buvo pasiūlyti įtraukti į „Linux 6.2“ branduolį, siekiant išspręsti „rašymo skylės“ problemą RAID 5/6 diegime. Problemos esmė yra ta, kad jei įrašymo metu įvyksta gedimas, iš pradžių neįmanoma suprasti, kuriame bloke, kuriame RAID įrenginyje buvo įrašytas teisingai, o kuriame įrašymas nebuvo baigtas. Jei bandysite atkurti RAID šioje situacijoje, blokai, atitinkantys pasirašytus blokus, gali būti sunaikinti, nes RAID blokų būsena nėra sinchronizuota. Ši problema iškyla bet kuriuose RAID1/5/6 masyvuose, kur nebuvo imtasi specialių priemonių šiam poveikiui pašalinti.

RAID diegime, kaip RAID1 btrfs, ši problema išspręsta naudojant kontrolines sumas abiejose kopijose; jei yra neatitikimų, duomenys tiesiog atkuriami iš antrosios kopijos. Šis metodas taip pat veikia, jei kuris nors įrenginys pradeda siųsti neteisingus duomenis, o ne visišką gedimą.

Tačiau RAID5/6 atveju failų sistema nesaugo pariteto blokų kontrolinių sumų: įprastoje situacijoje blokų galiojimas patikrinamas tuo, kad jie visi turi kontrolinę sumą, o lyginumo blokas. galima atkurti iš duomenų. Tačiau dalinio įrašymo atveju šis metodas gali neveikti tam tikrose situacijose. Tokiu atveju, atkuriant masyvą, gali būti, kad blokai, patenkantys į neužbaigtą įrašą, bus atstatyti neteisingai.

Btrfs atveju ši problema aktualiausia, jei kuriamas įrašas yra mažesnis už juostelę. Tokiu atveju failų sistema turi atlikti skaitymo-keitimo-rašymo operaciją (skaityti-keisti-rašyti, RMW). Jei tai susiduria su blokais, kurių įrašymas neužbaigtas, RMW operacija gali sukelti gedimą, kuris nebus aptiktas, nepaisant kontrolinių sumų. Kūrėjai padarė pakeitimus, kuriuose RMW operacija prieš atlikdama šią operaciją patikrina blokų kontrolinę sumą, o prireikus atkurti duomenis, patikrina ir po įrašymo kontrolines sumas. Deja, jei rašoma nepilna juostelė (RMW), tai sukelia papildomų išlaidų skaičiuojant kontrolines sumas, tačiau žymiai padidina patikimumą. RAID6 atveju tokia logika dar nėra paruošta, tačiau tokiam RAID6 gedimui būtina, kad rašymas nepavyktų vienu metu 2 įrenginiuose, o tai mažiau tikėtina.

Be to, galime atkreipti dėmesį į kūrėjų rekomendacijas dėl RAID5/6 naudojimo, kurių esmė ta, kad Btrfs metaduomenys ir duomenų saugojimo profilis gali skirtis. Tokiu atveju metaduomenims galite naudoti profilį RAID1 (veidrodis) arba net RAID1C3 (3 kopijos), o duomenims – RAID5 arba RAID6. Tai užtikrina patikimą metaduomenų apsaugą ir „įrašymo angos“ nebuvimą, kita vertus, efektyvesnį vietos panaudojimą, būdingą RAID5/6. Tai leidžia išvengti metaduomenų sugadinimo ir ištaisyti duomenų sugadinimą.

Taip pat galima pastebėti, kad Btrfs SSD diskams 6.2 branduolyje pagal numatytuosius nustatymus bus įjungtas asinchroninis operacijos „išmetimas“ vykdymas (žymimas išlaisvintus blokus, kurių nebereikia fiziškai saugoti). Šio režimo pranašumas yra didelis našumas dėl efektyvaus „išmetimo“ operacijų grupavimo eilėje ir tolesnio eilės apdorojimo fono procesoriumi, todėl įprastos FS operacijos nesulėtėja, kaip yra sinchroninio „ išmesti“, nes blokai atlaisvinami, o SSD gali priimti geresnius sprendimus. Kita vertus, jums nebereikės naudoti tokių paslaugų kaip fstrim, nes visi galimi blokai bus išvalyti FS be papildomo nuskaitymo ir nesulėtinant operacijų.

Šaltinis: opennet.ru

Добавить комментарий