OpenZFS 2.1.14 ja 2.2.2 värskendus, mis lahendab faili kahjustamise vea

Avatud on korrektsiooniväljaanded OpenZFS 2.1.14 ja 2.2.2, mis arendab ZFS failisüsteemi rakendust Linuxi ja FreeBSD jaoks. Se обновления исправляют probleemi dnode koha võrgu kokkuleppe kontrollimise koodis, mis viis andmete kahjustumiseni failides, millel olid tühjad alad, nende kopeerimisel muudatuste tegemise järel.

Alguses prooviti probleemi lahendada versioonis 2.2.1, kuid parandus osutus ebaefektiivseks. Viga jäi pikka aega märkamatuks ja hakkas ilmnema pärast muudatusi, mis tehti 'cp' utiliidi 9.x coreutils paketis. Eeldatakse, et Red Hat Enterprise Linuxis ja selle põhjal loodud distributsioonides probleem ei ilmne, kuna RHEL 9 kasutab coreutils 8.x paketti, millel on teistsugune 'cp' utiliidi tööloogika.

Probleem ilmneb failide koopiate loomise utiliitide kasutamisel, mis suudavad tuvastada ja optimeerida tühje alasid failides. Kahjustus võib tekkida koormatud failisüsteemides faili kopeerimisel, kui operatsioon toimub peaaegu kohe pärast muudatuse tegemist ja osa andmeid jääb ainult dirty-cache'i ning ei ole veel kettale kirjutatud.

Failide tühjade alade haldamise optimeerimiseks toetab OpenZFS alates versioonist 0.6.2 operatsioone SEEK_HOLE ja SEEK_DATA, mis võimaldavad failist ketta lugemisel tühja ala vahele jätta. Tühjade alade tuvastamine ja teabe säilitamine nende kohta toimub alles pärast kõigi failiga seotud vahemälus olevate andmete kirjutamist kettale. OpenZFS-is on olemas kontroll, mis hindab vahemälus olevate salvestamata andmete olemasolu ja sunnib andmete kettale kirjutamist, mis on vajalik SEEK_HOLE ja SEEK_DATA kasutamiseks.

Kahjuks osutus kontroll puudulikuks ja teatud asjaolude kokkulangemisel määrati lähtestamisprotsessi andmed valesti ning kettal oli vana teave faili sisu kohta, kui päring sattus kahe vahemälust lähtestamise operatsiooni vahele jäävale lühikesele ajavahemikule. Lugemisoperatsioonid, mis optimeerivad tühjade piirkondade laadimist, võisid sel hetkel osa andmetest lugedes mööda vaadata, arvestades neid tühjadena, samas kui failiga töötav programm võis varem tühjadesse piirkondadesse muudatusi teha. Selle tulemusena võis utiliidi „cp“ kasutamine viia seejuures koopia loomise, mis sisaldas tühje piirkondi seal, kus neid originaalfailis ei olnud.

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster