Nemrég kiderült, hogy A Btrfs fejlesztéseit javasolták a Linux 6.2-es kernelbe való felvételéhez a RAID 5/6 implementáció írási lyuk problémájának kijavításához.
A probléma lényege abban rejlik, hogy ha rögzítés közben összeomlik, akkor kezdetben nem lehet megérteni, hogy a RAID eszközök közül melyik blokkra íródott helyesen, és melyikre nem fejeződött be a rögzítés.
Ha ebben a helyzetben megpróbál egy RAID-et újraépíteni, akkor az előfizetett blokkoknak megfelelő blokkok megsérülhetnek, mivel a RAID blokkok állapota nincs szinkronban. Ez a probléma bármely RAID1/5/6 tömbben előfordul, ahol nem tesznek különleges intézkedéseket a hatás leküzdésére.
Egy olyan RAID megvalósításban, mint a RAID1 a btrfs-ben, ez a probléma megoldódott ellenőrző összegek használatával mindkét másolaton, ha eltérés van, az adatokat egyszerűen visszaállítja a második másolatból. Ez a megközelítés akkor is működik, ha bármely eszköz rossz adatokat ad a teljes meghibásodás helyett.
Azonban, RAID5/6 esetén a fájlrendszer nem tárol ellenőrző összegeket paritásblokkoknál - normál helyzetben a blokkok helyességét az ellenőrzi, hogy mindegyik ellenőrzőösszeggel van ellátva, és az adatokból a paritásblokk újra létrehozható. Részleges rögzítés esetén azonban előfordulhat, hogy ez a megközelítés bizonyos helyzetekben nem működik. Ebben az esetben, a tömb visszaállításakor lehetséges, hogy a hiányos rekordban maradt blokkokat helytelenül vannak helyreállítva.
A btrfs esetében ez a probléma relevánsabb, ha az előforduló írás kisebb, mint a csík. Ebben az esetben a fájlrendszernek olvasás-módosítás-írás (RMW) műveletet kell végrehajtania.
Ha folyamatban lévő írási blokkokkal találkozik, az RMW művelet olyan sérülést okozhat, amely az ellenőrző összegektől függetlenül észrevétlen marad. A fejlesztők olyan változtatásokat vezettek be, amelyekben az RMW művelet e művelet végrehajtása előtt ellenőrzi a blokkok ellenőrző összegét, és ha szükséges, az adat-helyreállítás az írás után ellenőrző összeg ellenőrzést is végez.
Sajnos olyan helyzetben, amikor egy hiányos fringe (RMW) van írva, ez további többletköltséget jelent az ellenőrző összegek kiszámításához, de jelentősen növeli a megbízhatóságot. A RAID6 esetében ez a logika még nincs készen,
Emellett megjegyezhetjük a fejlesztők RAID5/6 használatára vonatkozó ajánlásait, amelyek lényege, hogy a Btrfs-ben a metaadatok és adatok tárolására szolgáló profil eltérhet. Ebben az esetben a RAID1 (tükör) vagy akár a RAID1C3 (3 másolat) profilt használhatja a metaadatokhoz, és a RAID5 vagy RAID6 profilt az adatokhoz.
Ez biztosítja egyrészt a megbízható metaadatvédelmet és az "írási lyuk" hiányát, másrészt a RAID5/6-ra jellemző hatékonyabb helykihasználást. Ez megakadályozza a metaadatok sérülését, és az adatsérülések javíthatók.
is Megjegyzendő, hogy a 6.2-es kernel Btrf-jén lévő SSD-k esetében la az "eldobás" művelet aszinkron végrehajtása (jelölje meg a felszabadult blokkokat, amelyeket már nem lehet fizikailag tárolni) alapértelmezés szerint be lesz kapcsolva.
Ennek az az előnye mód nagy teljesítményű az eldobási műveletek hatékony csoportosítása a sorban és a sor háttérkezelő általi utófeldolgozása miatt, így a normál FS-műveletek nem lassulnak le, mint a szinkron "eldobás" esetén, ahogy a blokkok felszabadulnak, és az SSD jobbá teheti döntéseket. Másrészt, többé nem kell olyan segédprogramokat használnia, mint az fstrim, mivel az összes elérhető blokk törlődik az FS-ben anélkül, hogy további vizsgálatra lenne szükség, és a műveletek lelassítása nélkül.
Végül, ha érdekli, hogy többet tudjon meg róla, olvassa el a részleteket a következő link.