Vlákno názorů k článku
Ext4 pomohlo odhalit „špatně“ napsané aplikace od Milan Keršláger. - Odložená alokace znamená, že datové bloky jsou na...

  • Článek je starý, nové názory již nelze přidávat.
  • 13. 3. 2009 9:14

    Milan Keršláger. (neregistrovaný)
    Odložená alokace znamená, že datové bloky jsou na disku alokovány až ve chvíli, kdy jsou připravena data k zápisu. Dosáhne se tím toho, že lze alokovat více bloků najednou (a ty mohou být souvisle za sebou), takže je pak nižší fragmentace a snižuje se počet nutných I/O, kvůli čemuž ext4, Reiser4, XFS, ZFS používají větší buffery. Data v bufferu (cache) jsou na disk zapsána, když je flush démon na disk vysype, což je standardně tuším 5 vteřin. Tato doba se v nových distribucích (jádrech) prodlužuje, aby se dosáhlo úspory (třeba notebooky). Popsaný jev tak může být v ext4 zvýrazněn (chybí celý soubor a ne jen jeho část), ale bude se vyskytovat i v jiných systémech souborů. Chyba je jednoznačně na straně aplikace, která by měla nejprve zapsat nový konfigurační soubor a teprve pak starý smazat a nový přejmenovat (a akci si na konci třeba pojistit pomocí flush).
  • 20. 3. 2009 9:23

    Sten (neregistrovaný)
    Správný postup je:
    zapsat nový konfig
    fsync(config.new)
    rename(conifg.new, config)
    fsync(adresář s konfigurací)

    Mimochodem, proč je mažou, když rename umí nahrazovat soubory a je atomické?