← Natrag
AI

NVMe atomske audicijske upisivanja bez fsync-a

Damir Radulić· 9. rujna 2026.· 2 min čitanja· 10 pregleda
NVMe atomske audicijske upisivanja bez fsync-a
🎧 Poslušaj članak

Audicijski zapisi (audit logs) su ključni za sigurnost i usklađenost, ali njihova trajnost često dolazi po cijenu performansi. Tradicionalni pristup poziva fsync nakon svakog upisa kako bi se osiguralo da su podaci fizički zapisani na disk. Međutim, na NVMe uređajima, to može drastično smanjiti propusnost, osobito u sustavima s visokim opterećenjem. Srećom, postoji način da se postigne atomska upisivanja bez žrtvovanja brzine.

Problem s fsync-om

Svaki poziv fsync prisiljava kontroler da isprazni sve međuspremnike i osigura da su podaci trajno pohranjeni. To je skupo jer uključuje čekanje na fizički zapis, što na NVMe-u može uključivati i interne operacije poput garbage collection-a. U sustavima gdje se audicijski zapisi pišu često, to može postati usko grlo.

NVMe atomska upisivanja

NVMe specifikacija podržava atomske upisivanja (atomic writes) koja osiguravaju da se određeni blok podataka upisuje u cijelosti ili se uopće ne upisuje. To znači da čak i ako dođe do iznenadnog gubitka struje, neće biti djelomično zapisanih podataka. Ključ je u tome da se audicijski zapisi strukturiraju tako da svaki unos bude u zasebnom bloku ili da se koristi tehnika write-ahead logging (WAL) s atomicnim upisima.

Strukturiranje upisa

Umjesto pozivanja fsync-a nakon svakog upisa, možete grupirati više unosa u jedan veći upis koji će biti atomski. Na primjer, možete koristiti append-only datoteku gdje se novi zapisi dodaju na kraj, a svaki zapis ima kontrolni zbroj (checksum). Ako dođe do prekida, možete provjeriti zadnji valjani zapis i nastaviti od tamo. Ovo eliminira potrebu za fsync-om po unosu, jer atomski upis osigurava da se cijeli blok (koji sadrži više unosa) upisuje odjednom.

Implementacija u praksi

Kada koristite NVMe uređaje, možete iskoristiti atomic write značajku putem upravljačkih programa ili API-ja koji podržavaju ovu funkciju. Na primjer, u Linux okruženju možete koristiti io_uring s oznakom RWF_ATOMIC koja omogućava atomske upise. Također, možete koristiti direct I/O s poravnanjem na veličinu sektora kako biste osigurali da upisi budu atomski.

Prednosti i izazovi

Glavna prednost je značajno povećanje propusnosti jer se izbjegava čekanje na fsync. Također, smanjuje se opterećenje CPU-a i smanjuje latencija. Međutim, postoji izazov: morate osigurati da su upisi dovoljno veliki da budu atomski (obično 4KB ili više) i da su poravnati na granice sektora. Također, morate implementirati mehanizam za provjeru valjanosti zapisa nakon ponovnog pokretanja, koristeći kontrolne zbrojeve ili sekvencijske brojeve.

Zaključak

Korištenje atomskih upisa na NVMe uređajima bez fsync-a po unosu je izvedivo i donosi velike dobitke u performansama. Ključ je u pravilnom strukturiranju upisa i korištenju naprednih značajki NVMe-a. Ovaj pristup omogućava trajnost audicijskih zapisa bez žrtvovanja brzine, što je idealno za moderne sustave s visokim zahtjevima.

atomske upisivanjaNVMefsyncaudicijski zapisitrajnost podataka

Zanima vas ovakva AI tehnologija?

RiNET gradi sovereign AI rjesenja za javni sektor i poduzeca - od civic intelligence do automatizacije nabave.

Kontaktirajte nas →
0 komentara

Komentari