Linux 6.2 kernel će uključivati ​​poboljšanja RAID5/6 u Btrfs

Btrfs poboljšanja predložena su za uključivanje u jezgru Linuxa 6.2 kako bi se riješio problem rupa za pisanje u implementaciji RAID 5/6. Suština problema se svodi na to da ako dođe do pada tijekom snimanja, u početku je nemoguće razumjeti koji je blok na koji RAID uređaj ispravno zapisan, a u kojem snimanje nije dovršeno. Ako pokušate vratiti RAID u ovoj situaciji, blokovi koji odgovaraju potpisanim blokovima mogu biti uništeni jer stanje RAID blokova nije sinkronizirano. Ovaj se problem pojavljuje u svim RAID1/5/6 nizovima gdje nisu poduzete posebne mjere za borbu protiv ovog učinka.

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

Međutim, u slučaju RAID5/6, datotečni sustav ne pohranjuje kontrolne zbrojeve za blokove pariteta: u normalnoj situaciji, valjanost blokova se provjerava činjenicom da su svi kontrolni zbrojevi, a blok pariteta 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 tom slučaju, prilikom vraćanja niza, moguće je da će blokovi koji potpadaju pod nepotpuni zapis biti pogrešno vraćeni.

U slučaju btrfs, ovaj problem je najvažniji ako je zapis koji se proizvodi manji od pruge. U tom slučaju datotečni sustav mora izvršiti operaciju čitanja-mijenjanja-pisanja (read-modify-write, 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 zbrojeve. Programeri su napravili izmjene u kojima RMW operacija provjerava kontrolni zbroj blokova prije izvođenja ove operacije, a ako je potrebno vratiti podatke, provjerava i kontrolni zbroj nakon snimanja. Nažalost, u situaciji s pisanjem nepotpune trake (RMW), to dovodi do dodatnog opterećenja za izračun kontrolnih zbrojeva, ali značajno povećava pouzdanost. Za RAID6 takva logika još nije spremna, međutim za takav kvar u RAID6 potrebno je da pisanje ne uspije na 2 uređaja odjednom, što je manje vjerojatno.

Dodatno, možemo primijetiti preporuke za korištenje RAID5/6 od programera, čija je bit da se u Btrfs 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. Time se s jedne strane osigurava pouzdana zaštita metapodataka i nepostojanje “rupe za pisanje”, a s druge učinkovitije korištenje prostora, karakteristično za RAID5/6. To omogućuje da se izbjegne oštećenje metapodataka i da se oštećenje podataka može ispraviti.

Također se može primijetiti da će za SSD-ove u Btrfs-u u kernelu 6.2 biti aktivirano asinkrono izvršavanje operacije "odbaci" prema zadanim postavkama (označavanje oslobođenih blokova koje više nije potrebno fizički pohranjivati). Prednost ovog načina rada je visoka izvedba zbog učinkovitog grupiranja operacija “odbacivanja” u redu čekanja i daljnje obrade reda čekanja od strane pozadinskog procesora, zbog čega se normalne FS operacije ne usporavaju, kao što je slučaj sa sinkronim “ odbaci” jer se blokovi oslobađaju, a SSD može donositi bolje odluke. S druge strane, više nećete morati koristiti uslužne programe poput fstrima, jer će svi dostupni blokovi biti izbrisani u FS-u bez potrebe za dodatnim skeniranjem i bez usporavanja operacija.

Izvor: opennet.ru

Dodajte komentar