题 什么是日记文件系统?


什么是日记文件系统?

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


5
2017-08-22 04:02






答案:


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

特征 维基百科对文件系统的比较给出了哪些是记录的。

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


12
2017-08-22 04:10



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


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

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

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

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

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

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

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

如果此进程因任何原因(例如系统崩溃)而中断,则文件系统现在知道正在进行的操作以及是否已完成。然后,它可以通过尝试从头开始完成事务,或者将文件系统恢复到之前的状态,从而快速,优雅地恢复。所有这些都无需借助于逐块检查文件系统来查找错误,考虑到现代硬盘的大小,这可能会非常费时。

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

由于日记不可避免地涉及比替代方案更多的步骤,除非你感觉自己崩溃了很多,否则不会有任何性能提升。然而,与优点相比,性能差异通常可以忽略不计。


5
2017-08-22 04:37



此外,还有不同形式的期刊:仅元数据,数据+元数据,有序(在ext3 / 4 fs的情况下)。经验法则是“更安全,更大的性能”。考虑到当你有TB甚至PB的数据时有一个日记的优点,并不是说性能达到了完全可以接受:) - coredump


关于维基百科的文章 日记文件系统 包含更多细节,包括它是什么,它是如何工作的,以及为什么。


1
2017-08-22 04:11





日记文件系统是一个广泛滥用的文件系统,毕竟不是日记。

“日志”在文件系统的上下文中意味着文件系统能够从崩溃和功率损耗恢复到一致状态。它并不意味着性能提升,它并不意味着文件系统在崩溃之前的某个时间恢复到完整的快照,它甚至不意味着没有“文件系统检查”样式操作在恢复之后恢复崩溃。


0
2017-08-22 08:48