已释放的块是否记录在 ext4 的日志中?

已释放的块是否记录在 ext4 的日志中?

假设我们有一个简单的情况:

  • ext4带日志功能的文件系统
  • 名为 的单个文件file,其中没有其他硬链接
  • forinodefile关联了 1 个数据block

我对这个具体案例的删除流程的理解如下:

  1. 我们将删除的日志file
    1. 记录我们将把inode's减ref_cnt1
    2. 犯罪
    3. 记录因为ref_cnt是 0,所以释放inode回池
    4. 犯罪
    5. 记录因为inode已释放,所以释放关联block回池
  2. 提交删除file

其中,如何获取步骤1.5中释放的区块号?它存储在日志中吗?如果是这样,我将如何访问它?

我一直在寻找提供此信息的文件系统接口。我已经达到了最好的水平debugfs -R "logdump -a",但我不知道如何从那里继续前进。

注意:我知道有类似的工具ext3grep可以帮助我恢复file。我的目标是出于教育目的,通过从日志中获取块号来手动尝试此操作。我还了解,在获取此信息之前,inode和可能会被重复使用。block出于本问题的目的,假设文件系统在删除完成后是只读的。

相关内容