简单来说,ext4 日志文件系统如何工作?

简单来说,ext4 日志文件系统如何工作?

日志文件系统如何工作以及为什么它不会像 NTFS 那样产生碎片?

为什么 Windows 还没有切换到日志文件系统?

有人能给我解释一下吗?谢谢。

答案1

我将尝试根据现有资料给出一个详细但简单的答案:

日志文件系统的简单定义来自电脑世界

具有故障时恢复功能的文件系统。在日志文件系统中,在更新文件索引之前,有关更改的信息会记录在单独的日志(日志)中。如果在重写索引时发生电源或其他系统故障而损坏索引,则操作系统可以在计算机重新启动时使用日志来修复它们。

更多细节来自维基百科

更新文件系统以反映文件和目录的更改通常需要多次单独的写入操作。这使得写入之间的中断(如电源故障或系统崩溃)可能导致数据结构处于无效的中间状态。

例如,删除 Unix 文件系统上的文件涉及三个步骤:

  1. 删除其目录条目。
  2. 将 inode 释放到空闲 inode 池中。
  3. 将所有磁盘块返回到空闲磁盘块池。

如果崩溃发生在步骤 1 之后和步骤 2 之前,则会出现孤立的 inode,从而导致存储泄漏;如果崩溃发生在步骤 2 和步骤 3 之间,则文件先前使用的块无法用于新文件,从而有效降低文件系统的存储容量。重新安排步骤也无济于事。(...)

(...)

为了防止这种情况,日志文件系统会分配一个特殊区域(日志),用于提前记录所做的更改。崩溃后,恢复只需从文件系统读取日志并重放此日志中的更改,直到文件系统再次一致。(...)

此外,ext4还使用了一些其他技术来减少碎片,即扩展延迟分配(再次来自维基百科):

范围

区段取代了 ext2 和 ext3 使用的传统块映射方案。区段是一系列连续的物理块,可提高大文件性能并减少碎片。ext4 中的单个区段可以映射最多 128 MiB 的连续空间,块大小为 4 KiB。inode 中可直接存储四个区段。当文件有四个以上的区段时,其余区段将编入树中的索引。

延迟分配

ext4 使用一种称为“刷新时分配”的性能技术,也称为延迟分配。也就是说,ext4 会延迟块分配,直到数据刷新到磁盘为止;相比之下,某些文件系统会立即分配块,即使数据进入写入缓存也是如此。延迟分配通过一次有效地分配大量数据来提高性能并减少碎片。

我希望这能提供日志文件系统操作的基本知识,特别是一些ext4细节。

答案2

引自 PC WorldUbuntu Linux,第 16 天:EXT4 与 NTFS

EXT4 可以支持最大 16 TB 的单个文件和最大 1 EB 的卷。但是,EXT4 的一个优点是可以处理更大的范围(一系列连续的物理数据块),这有助于提高性能。这使得它能够更好地处理大文件并减少驱动器碎片。

其他因素包括 EXT4 使用的“刷新时分配”技术。通过延迟数据块的分配,直到数据准备好写入磁盘,与较早分配块的文件系统相比,EXT4 提高了性能并减少了碎片。

使用校验和进行驱动器日志记录可提高可靠性,并通过避免在日志记录过程中等待磁盘来提高性能。在文件检查方面,EXT4 更快,因为未分配的数据块被标记为此类,并且在磁盘检查操作期间被直接跳过。

任何有关“为什么/为什么不”和“碎片整理”的讨论都需要包括 Diskeeper(以前称为 Executive Software)。向雷德蒙德提供产品许可,并让您的公司和/或产品在两年内仍然可行,充其量也是一种艰巨的冒险。

相关内容