Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia Tuesday TopDrive KupDnes Navrcholu Bomba NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Vlákno názorů ke zprávičce Ext4 pomohlo odhalit „špatně“ napsané aplikace

uživatel si přál zůstat v anonymitě
13. 3. 2009 7:08

RE: Ext4 pomohlo odhalit „špatně“ napsané aplikace

No jak to tak ctu, tak jeste ze pouzivam ZFS
c3
c3 (neregistrovaný)
13. 3. 2009 8:33

RE: Ext4 pomohlo odhalit „špatně“ napsané aplikace

no tak si to radsi prectete jeste jednou, toto neni problem EXT4 ale spatne napsanych aplikaci, to same se Vam muze stat na vsech modernich FS s asynchronnim zapisem, staci se jen s vypadkem trefit do spravneho okamziku. "problem" EXT4 je, ze to okno pro "trefeni se" je velmi velke takze je narozdil od jinych FS vetsi pravdepodobnost, ze se to podari...
uživatel si přál zůstat v anonymitě
16. 3. 2009 12:20

RE: Ext4 pomohlo odhalit „špatně“ napsané aplikace

Spravne slovo neni "asynchronni zapis", ale hlavne "odlozena alokace". A ano, ZFS se tohle tyka taky.

-Yenya, http://www.fi.muni.cz/~kas/blog/
Lael Ophir
Lael Ophir (neregistrovaný)
16. 3. 2009 15:57

RE: Ext4 pomohlo odhalit „špatně“ napsané aplikace

Bohužel při používání konfiguráků problém zřejmě nemá řešení. Může to být jen špatné, nebo ještě horší.
Yenya
Yenya (neregistrovaný)
17. 3. 2009 10:25

RE: Ext4 pomohlo odhalit „špatně“ napsané aplikace

V pripade konfiguraku je reseni jednoduche - fsync(2). Dokonce tim ziskame lepsi stav nez predtim (uzivatel vzdy uvidi "novy" stav i po havarii, zatimco takhle nekdy videl az 5 vterin stary v pripade ext3). Problem je co s "malymi datovymi soubory" (typu cache browseru a podobne) - tam fsync(2) nechci delat, protoze me nezajima jestli uvidim stary nebo novy soubor, ale potrebuju jen garanci, ze kdyz uvidim nejaky, bude mit spravny obsah. Na coz je fsync() prilis silne.

-Yenya
Lael Ophir
Lael Ophir (neregistrovaný)
17. 3. 2009 12:30

RE: Ext4 pomohlo odhalit „špatně“ napsané aplikace

Bohužel fsync() v řadě případů provede flush veškerých souborů otevřených na daném FS, což může trvat velmi dlouho. Navíc race condition nezmizí. Pořád se může stát, že smáznete starý konfigurák, ale už nestačíte přejmenovat ten dočasný na nový. Konfiguráky byly původně navrženy pro servery, které běžely měsíce bez zastavení, konfigurace se zapisovala prakticky výhradně ručně, a admin v bílém plášti a galoších znal všechny konfiguráky i jejich obsah. Podmínky se změnily, ale unixy bohužel ne.
Sten
Sten (neregistrovaný)
20. 3. 2009 9:19

RE: Ext4 pomohlo odhalit „špatně“ napsané aplikace

fsync - synchronize a file’s in-core state with storage device

a file = jednoho souboru. Nevím o tom, že by to někdy dělal pro víc souborů (snad kromě sparse files, ale ty opravdu nejsou velké). Jediný možný problém je v tom, že fsync neflushne drive cache, tam je opravdu nutné flushnout všechno a zavolat sync.

Pořád se může stát, že smáznete starý konfigurák, ale už nestačíte přejmenovat ten dočasný na nový.

Houby, funkce rename je atomická.

Lael Ophir
Lael Ophir (neregistrovaný)
20. 3. 2009 16:45

RE: Ext4 pomohlo odhalit „špatně“ napsané aplikace

fsync sice provede flush jednoho souboru, jenže řada FS (by default ext3) se snaží zapisovat data na disk v pořadí, ve kterém proběhly zápisy. Jinými slovy pokud vytvoříte A, přejmenujete B, a modifikujete C, tak fsync(C) vede k zapsání akcí provedených nad objekty A a B. A protože write cache může být plná různých věcí, a fsync je synchronní volání, tak vaše aplikace bude celkem dlouho čekat, než se dostane znovu k lizu.

Funkce rename je atomická, ale bohužel unlink(a);rename(b) atomické není. Ve Windows být může, ovšem to jsme vývojově o 10+ let jinde. U konfigurační DB, která tenhle problém nepotřebuje řešit, pak o 20+ let jinde.
Sten
Sten (neregistrovaný)
21. 3. 2009 1:42

RE: Ext4 pomohlo odhalit „špatně“ napsané aplikace

Proč ten unlink? rename cíl přejmenování odstraní, pokud existuje, a to atomicky. A to uměl Unix už o 10+ let dříve, než Microsoft začal vyvíjet první Windows, tedy o 30+ let dříve, než tohle uměly i Windows.
Lael Ophir
Lael Ophir (neregistrovaný)
1. 4. 2009 18:10

RE: Ext4 pomohlo odhalit „špatně“ napsané aplikace

Bohužel nejlepší možný stav je pořád mizený. fsync() trvá na některých FS velmi dlouho, přepisování konfiguráků kvůli změně jedné hodnoty je zbytečně dlouhé. Oni 10+ let před příchodem Windows měli implementovat konfigurační DB (a GUI, a tisk, a rozumné high level knihovny), a ne se prát o koryto a začínat unix wars ;)
Zasílat nově přidané příspěvky e-mailem