Hlavní navigace

Názor ke článku Jak zakázat explicitní fsync (v Ubuntu) od Ondřej Novák - [22] software se těžko něco bez proudu dozví....

  • 14. 6. 2012 22:01

    Ondřej Novák (neregistrovaný)

    [22] software se těžko něco bez proudu dozví. Jediný, na co lze "možná" spolehnout je pořadí. Tedy při obnovení lze podle množství zapsaných dat a známého pořadí rozhodnout, co bylo a nebylo zapsáno. fsync se používá pro oddělení dvou zápisů, zápisy před fsync a zápisy po fsync, nestane se pak, že by data po fsync byly zapsána před těmy, které byly zapsána před fsync. Díky cache to možné je, protože ty se nevyprazdňují v tom pořadí, v jakém byly plněny, ale tak jak se operačnímu systému hodi.

    Proto jsem říkal, že kdyby fsync fungoval jako seřazovací funkce, pak bych jeho použití nezakazoval. Seřazovací funkce nemusí nutně čekat na dokončení, musí jen aplikaci dát jistotu, že některá data se zapíší až po zapsání jiných dat.

    Jinak výpadky proudu řeší žurnály, a to ať již na straně filesystému, nebo si aplikace sama musí vést žurnály pro data. Tam chápu, že uzavření transakce v žurnálu může vyžadovat fsync, jenže opět, není potřeba, aby se na něj čekalo. Jen by operační systém měl zaručit, že data zapsaná po fsync nebudou na disk přepsána před daty,které byly zapsané před fsync.