什么是日志文件系统?

Pra*_*rav 10 filesystems

什么是日志文件系统?

甚至维基百科也没有提供太多信息。除了 NTFS 之外,哪些其他文件系统(在 Windows / Linux 上)支持日志记录以及它如何提高性能?

Ign*_*ams 14

日志文件系统在实际执行之前记录对文件系统的更改。通过这种方式,它能够在发生故障(例如电源故障)后以最小的数据丢失进行恢复。

维基百科文件系统比较的特性部分给出了日志记录。

日记不会提高性能。实际上,日志操作稍微降低了速度,以换取上述可靠性。

  • 虽然日志确实会减慢正常的 IO 操作,但它确实会加快从不安全关机或卸载中恢复的速度。必须在没有日志记录的文件系统的多 TB 卷上运行磁盘检查将需要数天时间。日志文件系统可以在几秒钟或几分钟内完成。此外,Linux 上的大多数日志文件系统都允许您为日志指定不同的设备以避免性能下降。不幸的是,这个问题是关于不支持的 NTFS。 (6认同)

gol*_*udo 7

本质上,日志文件系统所做的是在硬盘驱动器和操作系统之间添加一个额外的抽象级别。它不是直接在磁盘上执行操作,而是跟踪它首先尝试做的事情,然后是它是否成功。

例如,如果您想将文件从一个驱动器移动到另一个驱动器,该过程将类似于以下内容:

  • 将旧文件物理复制到新位置
  • 更新新驱动器上的目录条目
  • 从旧驱动器中删除目录条目
  • 旧驱动器上的可用空间

确切的过程取决于文件系统,但您明白了。这通常可以正常工作,但在系统崩溃的可能性很小的情况下,事情可能会中途中断。您最终可能会物理复制文件,但没有目录条目指向它。您最终可能会删除旧驱动器上的目录引用,但未释放空间。在某些情况下,您可能最终会得到一个损坏的文件系统,该文件系统甚至无法再工作,因为目录条目只是部分写入。

换句话说,很多事情都可能出错。

日志文件系统将使用相同的基本过程,但有一些额外的步骤。就像是:

  • 日志条目:将文件从 A 移动到 B
    • 将旧文件物理复制到新位置
    • 更新新驱动器上的目录条目
    • 从旧驱动器中删除目录条目
    • 旧驱动器上的可用空间
  • 日志条目:完成将文件从 A 移动到 B

如果此过程因任何原因而中断,例如系统崩溃,文件系统现在知道正在进行什么,以及它是否完成。然后它可以通过尝试从头开始完成事务或将文件系统恢复到之前的状态来快速而优雅地恢复。所有这些都不需要通过逐块检查文件系统来查找错误,鉴于现代硬盘驱动器的大小,这可能非常耗时。

这可以显着提高文件系统的健壮性,并加快发生故障时的恢复时间。通过改变日志条目的粒度可以获得不同级别的可靠性——这又是依赖于文件系统的。

由于日记不可避免地涉及比替代方法更多的步骤,除非您想崩溃很多,否则不会有任何性能提升。但是,与优势相比,性能上的差异通常可以忽略不计。