Btrfs 如何在不记录日志的情况下防止数据损坏?

rub*_*020 3 filesystems ext4 btrfs corruption

根据此页面,像ext4这样的文件系统具有块和元数据的日志记录,它用于防止数据损坏:

日志文件系统是一种文件系统,它通过在称为“日志”的数据结构(通常是循环日志)中记录此类更改的意图来跟踪尚未提交到文件系统主要部分的更改。如果发生系统崩溃或电源故障,此类文件系统可以更快地恢复在线状态,并且损坏的可能性更低。

根据此页面,Btrfs似乎没有日志功能。

然而,本页引用了ext4主要开发人员和维护者Theodore T'so 的话,表示btrfs比ext4更好:

尽管 Ext4 为文件系统添加了许多引人注目的功能,但 T'so 并不认为这是向前迈出的一大步。他认为这是对过时的“20 世纪 70 年代技术”的翻版,并将其描述为保守的短期解决方案。他认为,前进的方向是 Oracle 的开源 Btrfs 文件系统,该系统旨在显着提高可扩展性、可靠性和易管理性。

那么, btrfs如何在不记录日志的情况下防止数据损坏?

Voj*_*fny 5

Btrfs 使用写时复制(CoW),因此现有数据在修改时不会被覆盖,而是复制到新位置并更改副本。因此不需要日志,因为在断电或系统崩溃的情况下,您仍然拥有原始数据。Btrfs 还使用校验和来检测随机数据损坏,以便了解数据和元数据是有效还是已损坏。

有关写入时复制的更多信息可在此处或维基百科上找到更一般的描述。