Jedro Linuxa 6.2 bo vključevalo izboljšave RAID5/6 v Btrfs

Izboljšave Btrfs so bile predlagane za vključitev v jedro Linuxa 6.2 za odpravo težave s pisalno luknjo v izvedbi RAID 5/6. Bistvo problema je v tem, da če med snemanjem pride do zrušitve, je sprva nemogoče razumeti, kateri blok na kateri napravi RAID je bil pravilno zapisan in v katerem snemanje ni bilo dokončano. Če poskušate obnoviti RAID v tej situaciji, se lahko bloki, ki ustrezajo podpisanim blokom, uničijo, ker stanje blokov RAID ni sinhronizirano. Ta težava se pojavi v vseh nizih RAID1/5/6, kjer niso bili sprejeti posebni ukrepi za boj proti temu učinku.

V izvedbi RAID, kot je RAID1 v btrfs, se ta težava reši z uporabo kontrolnih vsot v obeh kopijah; če pride do neujemanja, se podatki preprosto obnovijo iz druge kopije. Ta pristop deluje tudi, če neka naprava namesto popolne okvare začne pošiljati napačne podatke.

Vendar pa v primeru RAID5/6 datotečni sistem ne shranjuje kontrolnih vsot za bloke paritete: v normalnih razmerah se veljavnost blokov preveri z dejstvom, da so vsi sešteti, in blok paritete je mogoče rekonstruirati. iz podatkov. Vendar pa v primeru delnega snemanja ta pristop morda ne bo deloval v določenih situacijah. V tem primeru je pri obnavljanju matrike možno, da bodo bloki, ki spadajo pod nepopoln zapis, nepravilno obnovljeni.

V primeru btrfs je ta težava najpomembnejša, če je zapis, ki se proizvaja, manjši od črte. V tem primeru mora datotečni sistem izvesti operacijo branja-spreminjanja-pisanja (read-modify-write, RMW). Če to naleti na bloke z nepopolnim pisanjem, lahko operacija RMW povzroči poškodbo, ki ne bo zaznana, ne glede na kontrolne vsote. Razvijalci so naredili spremembe, v katerih operacija RMW preveri kontrolno vsoto blokov, preden izvede to operacijo, in če je treba obnoviti podatke, preveri tudi kontrolne vsote po snemanju. Na žalost v primeru pisanja nepopolnega traku (RMW) to povzroči dodatne stroške za izračun kontrolnih vsot, vendar znatno poveča zanesljivost. Za RAID6 takšna logika še ni pripravljena, vendar je za takšno napako v RAID6 potrebno, da pisanje ne uspe na 2 napravah hkrati, kar je manj verjetno.

Poleg tega lahko opazimo priporočila razvijalcev za uporabo RAID5/6, katerih bistvo je, da se lahko v Btrfs metapodatki in profil shranjevanja podatkov razlikujejo. V tem primeru lahko za metapodatke uporabite profil RAID1 (zrcaljenje) ali celo RAID1C3 (3 kopije), za podatke pa RAID5 ali RAID6. To zagotavlja zanesljivo zaščito metapodatkov in odsotnost “write hole” na eni strani ter učinkovitejšo rabo prostora, značilno za RAID5/6, na drugi strani. To omogoča, da se izognete poškodbam metapodatkov in popravite poškodbe podatkov.

Prav tako je mogoče opaziti, da bo za SSD v Btrfs v jedru 6.2 privzeto aktivirana asinhrona izvedba operacije »zavrzi« (označevanje sproščenih blokov, ki jih ni več treba fizično shranjevati). Prednost tega načina je visoka zmogljivost zaradi učinkovitega združevanja operacij »zavrzi« v čakalno vrsto in nadaljnje obdelave čakalne vrste s procesorjem v ozadju, zaradi česar se običajne operacije FS ne upočasnjujejo, kot je to v primeru sinhronih » zavrzi«, ko se bloki sprostijo, SSD pa lahko sprejema boljše odločitve. Po drugi strani pa vam ne bo treba več uporabljati pripomočkov, kot je fstrim, saj bodo vsi razpoložljivi bloki izbrisani v FS brez potrebe po dodatnem skeniranju in brez upočasnjevanja operacij.

Vir: opennet.ru

Dodaj komentar