Opdatering af OpenZFS 2.1.14 og 2.2.2 med en løsning på en fejl, der førte til filkorruption.

Korrigerende udgivelser af projektet OpenZFS 2.1.14 og 2.2.2 er blevet dannet, som udvikler implementeringen af filsystemet ZFS til Linux og FreeBSD. Opdateringerne løser et problem i koden til konsistenskontrol af dnode-cache, der fører til datakorruption i filer, der indeholdt tomme områder, når de kopieres efter ændringer er foretaget.

Problemet forsøgte man oprindeligt at løse i version 2.2.1, men rettelsen viste sig at være ineffektiv. Fejlen forblev længe ubemærket og begyndte at manifestere sig efter ændringer i værktøjet „cp“ i coreutils-pakken 9.x. Det antages, at problemet ikke opstår i Red Hat Enterprise Linux og distributioner baseret på det, da RHEL 9 bruger coreutils-pakken 8.x med en anden logik for værktøjet „cp.“

Problemet viser sig ved brug af filkopieringsværktøjer, der kan identificere og optimere tomme områder i filer. Korruption kan opstå i belastede filsystemer ved kopiering af en fil, hvis operationen udføres næsten straks efter ændringen, og dele af data forbliver kun i dirty-cache og endnu ikke er blevet skrevet til disk.

For at optimere arbejdet med tomme områder i filer, understøtter OpenZFS, siden udgivelsen 0.6.2, operationer som SEEK_HOLE og SEEK_DATA, der giver mulighed for at springe over tomme områder i filen ved læsning fra disken. Genkendelse af tomme områder og opbevaring af information om dem sker kun efter alt cachede data, der er relateret til filen, er blevet skrevet til disk. For at initiere skrivning i OpenZFS findes der en kontrol, der vurderer tilstedeværelsen af uskreven data i cache og udfører en tvungen skrivning af informationen til disk, som er nødvendig for brugen af SEEK_HOLE og SEEK_DATA.

Desværre var kontrolen ufuldstændig, og under visse omstændigheder blev oplysningerne om nulstillingsstatus bestemt forkert, og der var gamle oplysninger om filens indhold på drevet, hvis anmodningen ramte et lille tidsvindue mellem to nulstillingsoperationer fra cachen. Læseoperationer, der optimerer indlæsningen af tomme områder, kunne i dette øjeblik have undladt at læse dele af dataene, idet de blev anset for tomme, mens programmet, der arbejdede med filen, før dette kunne have foretaget ændringer i de tomme områder. Som et resultat kunne anvendelsen af værktøjet «cp» have ført til oprettelsen af en kopi, der indeholdt tomme områder, hvor der ikke var nogen i den originale fil.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster