0
正如我們所知道的那樣,文件寫入在Linux操作系統中是緩存的,只有在操作系統必須這樣做或者調用了fsync()時纔會被提交到磁盤。文件系統操作,如重命名/取消鏈接緩存?
但是, 文件系統操作,如重命名/取消鏈接緩存?並且從重命名/取消鏈接成功返回確保該操作被提交到磁盤並且即使操作系統崩潰也能夠存活?
正如我們所知道的那樣,文件寫入在Linux操作系統中是緩存的,只有在操作系統必須這樣做或者調用了fsync()時纔會被提交到磁盤。文件系統操作,如重命名/取消鏈接緩存?
但是, 文件系統操作,如重命名/取消鏈接緩存?並且從重命名/取消鏈接成功返回確保該操作被提交到磁盤並且即使操作系統崩潰也能夠存活?
如果這種東西被立即寫出來,性能將超越可怕。
有多種方法:日誌結構的文件系統,軟更新,日誌和可能更多。
我建議你閱讀http://www.nobius.org/~dbg/practical-file-system-design.pdf
但如果操作系統崩潰,例如。由於功率損失,在這些操作被寫入磁盤之前。操作將會丟失。更糟糕的是,如果這些操作是以無序的方式編寫的,那麼在崩潰並重新啓動後,我們將獲得一個非常量狀態。 – Leo
有沒有辦法強制這些操作寫入磁盤? – Leo
我看到我沒有明確指出:重命名/任何*不*保證一致性,您必須fsync dir fd。除此之外,您可能已經部分執行了FS將能夠完成或放棄的操作。我給了你3個一般方法的名字。 –