Linux 6.2 -ydin sisältää parannuksia RAID5/6:een Btrfs:ssä

Btrfs-parannuksia ehdotetaan sisällytettäväksi Linux 6.2 -ytimeen "kirjoitusaukko"-ongelman korjaamiseksi RAID 5/6 -toteutuksessa. Ongelman ydin tiivistyy siihen tosiasiaan, että jos tallennuksen aikana tapahtui kaatuminen, on aluksi mahdotonta ymmärtää, mikä lohko mihin RAID-laitteista kirjoitettiin oikein ja missä tallennus ei päättynyt. Jos yrität rakentaa RAIDin uudelleen tässä tilanteessa, suojattuja lohkoja vastaavat lohkot voivat vioittua, koska RAID-lohkojen tila ei ole synkronoitu. Tämä ongelma ilmenee kaikissa RAID1/5/6-ryhmissä, joissa ei ryhdytä erityistoimenpiteisiin tämän vaikutuksen torjumiseksi.

RAID-toteutuksessa, kuten RAID1:ssä btrfs:ssä, tämä ongelma ratkaistaan ​​käyttämällä molemmissa kopioissa tarkistussummia, jos yhteensopimattomuus on, tiedot yksinkertaisesti palautetaan toisesta kopiosta. Tämä lähestymistapa toimii myös, jos jokin laite alkaa antaa vääriä tietoja täydellisen vian sijaan.

RAID5/6:n tapauksessa tiedostojärjestelmä ei kuitenkaan tallenna pariteettilohkojen tarkistussummia: normaalitilanteessa lohkojen oikeellisuus tarkistetaan sillä, että ne kaikki on varustettu tarkistussummalla, ja pariteettilohko voi luodaan tiedoista uudelleen. Osittaisen tallennuksen tapauksessa tämä lähestymistapa ei kuitenkaan välttämättä toimi tietyissä tilanteissa. Tässä tapauksessa taulukkoa palautettaessa on mahdollista, että epätäydellisen tietueen alle jääneet lohkot palautetaan väärin.

Btrfs:n tapauksessa tämä ongelma on olennaisin, jos tuotettava kirjoitus on pienempi kuin raita. Tässä tapauksessa tiedostojärjestelmän on suoritettava luku-muokkaus-kirjoitus (RMW) -toiminto. Jos se kohtaa kesken kirjoituslohkoja, RMW-toiminto saattaa aiheuttaa vikoja, joita ei havaita tarkistussummista riippumatta. Kehittäjät ovat tehneet muutoksia, joissa RMW-toiminto tarkistaa lohkojen tarkistussumman ennen tämän toimenpiteen suorittamista ja tarvittaessa tietojen palautus suorittaa myös tarkistussummatarkistuksen kirjoittamisen jälkeen. Valitettavasti tilanteessa, jossa kirjoitetaan epätäydellinen raita (RMW), tämä johtaa lisäkustannuksiin tarkistussummien laskemiseen, mutta lisää merkittävästi luotettavuutta. RAID6:lle tällainen logiikka ei ole vielä valmis, mutta tällaisen RAID6-vian vuoksi on välttämätöntä, että kirjoitus epäonnistuu kahdessa laitteessa kerralla, mikä on vähemmän todennäköistä.

Lisäksi voimme huomioida kehittäjien suositukset RAID5 / 6:n käytöstä, joiden ydin tiivistyy siihen tosiasiaan, että Btrfs:ssä metatietojen ja tietojen tallennusprofiili voi vaihdella. Tässä tapauksessa voit käyttää RAID1 (peili) tai jopa RAID1C3 (3 kopiota) profiilia metatiedoille ja RAID5 tai RAID6 datalle. Tämä varmistaa toisaalta metatietojen luotettavan suojan ja "kirjoitusaukon" puuttumisen ja toisaalta tehokkaamman tilankäytön, joka on tyypillistä RAID5/6:lle. Näin vältytään metatietojen korruptiolta ja tietojen korruptio voidaan korjata.

Voidaan myös huomata, että 6.2-ytimen Btrfs:n SSD-levyille "hylkää"-toiminnon asynkroninen suorittaminen (merkitsee vapautetut lohkot, joita ei voi enää fyysisesti tallentaa) aktivoidaan oletusarvoisesti. Tämän tilan etuna on korkea suorituskyky, joka johtuu "hylkäämistoimintojen" tehokkaasta ryhmittelystä jonoon ja jonon jatkokäsittelystä taustakäsittelijän toimesta, minkä ansiosta normaalit FS-toiminnot eivät hidastu, kuten synkronisten " hylkää", kun lohkot vapautuvat, ja SSD voi tehdä parempia päätöksiä. Toisaalta sinun ei enää tarvitse käyttää apuohjelmia, kuten fstrim, koska kaikki käytettävissä olevat lohkot tyhjennetään FS:stä ilman lisätarkistusta ja toimintoja hidastamatta.

Lähde: opennet.ru

Lisää kommentti