1

当写入日志的许多事务之一被损坏时,我试图了解 jbd2 日志的行为。

根据我的理解,对于写入操作,首先进行写入以将数据持久化到磁盘位置,然后将相应的元数据事务写入日志。元数据更新的格式如下 - 1) 事务描述符块 2) 元数据块和 3) 事务提交块。这继续进行多个事务。最后在检查点期间,将与这些事务对应的元数据写入磁盘位置。

我也明白,如果文件系统在检查点发生之前崩溃,则需要在重放期间保持事务之间的顺序。即,如果我们有 3 个事务 T1、T2、T3,它们将按顺序重放。这是为了避免在两个连续事务中发生同一块的覆盖或同一块的删除和后续重新分配的情况。

我的问题是针对一个特殊情况:其中 T1、T2 和 T3 是三个连续的事务,如果 T1 和 T3 维护 M1 元数据块的元数据更改,并且 T2 存储 M2 块的元数据更改。并且 M1 和 M2 完全不重叠,在这种情况下,如果 T2 损坏,是否会丢弃 T3 和所有后续事务?

4

0 回答 0