2017-04-09 67 views
0

正如我们所知道的那样,文件写入在Linux操作系统中是缓存的,只有在操作系统必须这样做或者调用了fsync()时才会被提交到磁盘。文件系统操作,如重命名/取消链接缓存?

但是, 文件系统操作,如重命名/取消链接缓存?并且从重命名/取消链接成功返回确保该操作被提交到磁盘并且即使操作系统崩溃也能够存活?

回答

2

如果这种东西被立即写出来,性能将超越可怕。

有多种方法:日志结构的文件系统,软更新,日志和可能更多。

我建议你阅读http://www.nobius.org/~dbg/practical-file-system-design.pdf

+0

但如果操作系统崩溃,例如。由于功率损失,在这些操作被写入磁盘之前。操作将会丢失。更糟糕的是,如果这些操作是以无序的方式编写的,那么在崩溃并重新启动后,我们将获得一个非常量状态。 – Leo

+0

有没有办法强制这些操作写入磁盘? – Leo

+0

我看到我没有明确指出:重命名/任何*不*保证一致性,您必须fsync dir fd。除此之外,您可能已经部分执行了FS将能够完成或放弃的操作。我给了你3个一般方法的名字。 –