Linux 6.2 kernel će uključiti poboljšanja RAID5/6 u Btrfs-u

Btrfs poboljšanja su predložena za uključivanje u jezgro Linuxa 6.2 kako bi se riješio problem rupe u pisanju u implementaciji RAID 5/6. Suština problema se svodi na to da ako dođe do pada tokom snimanja, u početku je nemoguće razumjeti koji blok na kojem RAID uređaju je ispravno upisan, a u kojem nije završeno snimanje. Ako pokušate da vratite RAID u ovoj situaciji, blokovi koji odgovaraju prepisanim blokovima mogu biti uništeni jer stanje RAID blokova nije sinhronizovano. Ovaj problem se javlja u svim RAID1/5/6 nizovima gdje nisu poduzete posebne mjere za suzbijanje ovog efekta.

U implementaciji RAID-a, kao što je RAID1 u btrfs-u, ovaj problem se rješava korištenjem kontrolnih suma u obje kopije; ako postoji nepodudarnost, podaci se jednostavno vraćaju iz druge kopije. Ovaj pristup također funkcionira ako neki uređaj počne slati netačne podatke umjesto potpunog kvara.

Međutim, u slučaju RAID5/6, sistem datoteka ne pohranjuje kontrolne sume za blokove parnosti: u normalnoj situaciji, valjanost blokova se provjerava činjenicom da su svi zbrojeni, a blok parnosti se može rekonstruirati iz podataka. Međutim, u slučaju djelomičnog snimanja, ovaj pristup možda neće raditi u određenim situacijama. U ovom slučaju, prilikom vraćanja niza, moguće je da će blokovi koji potpadaju pod nekompletan zapis biti vraćeni pogrešno.

U slučaju btrfs-a, ovaj problem je najrelevantniji ako je snimljeni zapis manji od trake. U ovom slučaju, sistem datoteka mora izvršiti operaciju čitanja-izmjena-pisanja (čitanje-izmjena-pisanje, RMW). Ako ovo naiđe na blokove s nepotpunim pisanjem, tada operacija RMW može uzrokovati oštećenje koje neće biti otkriveno, bez obzira na kontrolne sume. Programeri su napravili izmjene u kojima RMW operacija provjerava kontrolnu sumu blokova prije izvođenja ove operacije, a ako je potrebno vratiti podatke, provjerava i kontrolne sume nakon snimanja. Nažalost, u situaciji sa pisanjem nepotpune trake (RMW), to dovodi do dodatnih troškova za izračunavanje kontrolnih suma, ali značajno povećava pouzdanost. Za RAID6 takva logika još nije spremna, međutim, za takav kvar u RAID6 potrebno je da upis ne uspije na 2 uređaja odjednom, što je manje vjerovatno.

Osim toga, možemo primijetiti preporuke za korištenje RAID5/6 od programera, čija je suština da se u Btrfs-u metapodaci i profil pohrane podataka mogu razlikovati. U ovom slučaju, možete koristiti profil RAID1 (mirror) ili čak RAID1C3 (3 kopije) za metapodatke, a RAID5 ili RAID6 za podatke. Ovo osigurava pouzdanu zaštitu metapodataka i odsustvo „rupe za upis“, s jedne strane, i efikasnije korištenje prostora, karakteristično za RAID5/6, s druge strane. Ovo omogućava da se izbjegne oštećenje metapodataka i ispravi oštećenje podataka.

Također se može primijetiti da će za SSD-ove u Btrfs-u u kernelu 6.2, asinhrono izvršavanje operacije “odbaci” biti aktivirano prema zadanim postavkama (označavanje oslobođenih blokova koji više ne moraju biti fizički pohranjeni). Prednost ovog režima su visoke performanse zbog efikasnog grupisanja „odbacivanja“ operacija u redu i dalje obrade reda od strane pozadinskog procesora, zbog čega se normalne FS operacije ne usporavaju, kao što je slučaj sa sinkronim „ odbaci” kako se blokovi oslobađaju, a SSD može donijeti bolje odluke. S druge strane, više nećete morati koristiti uslužne programe kao što je fstrim, budući da će svi dostupni blokovi biti obrisani u FS-u bez potrebe za dodatnim skeniranjem i bez usporavanja operacija.

izvor: opennet.ru

Dodajte komentar