Ext2块结构:保留GDT块的大小

Ext2块结构:保留GDT块的大小

在我发现的关于 ext2 的每一篇出版物中,块组的结构定义如下:

  • 超级块:1块
  • 组描述符:N 个块
  • 数据位图:1块
  • 索引节点位图:1 块
  • 索引节点表:N 个块
  • 数据块:剩余块

然而在ext2 内核文档据说版本 >0 可能不会在每个块组中存储超级块和组描述符的副本。

当我fsstat使用 ext2 分区时,我得到以下输出:

Group: 1:
  Inode Range: 1977 - 3952
  Block Range: 8193 - 16384
  Layout:
    Super Block: 8193 - 8193
    Group Descriptor Table: 8194 - 8194
    Data bitmap: 8451 - 8451
    Inode bitmap: 8452 - 8452
    Inode Table: 8453 - 8699
    Data Blocks: 8700 - 16384
  Free Inodes: 1976 (100%)
  Free Blocks: 0 (0%)
  Total Directories: 0

Group: 2:
  Inode Range: 3953 - 5928
  Block Range: 16385 - 24576
  Layout:
    Data bitmap: 16385 - 16385
    Inode bitmap: 16386 - 16386
    Inode Table: 16387 - 16633
    Data Blocks: 16387 - 16386, 16634 - 24576
  Free Inodes: 1976 (100%)
  Free Blocks: 0 (0%)

这个输出有两件事让我感到困惑:

  1. 在 SB 和组描述的组中。存储时,组 desc 之间有 256 个块的间隙。和数据位图。 编辑:使用dumpe2fs我刚刚发现这些是保留的 GDT 块,用于在线调整大小 那么新的问题是,这些保留的GDT块的大小是如何确定的呢?

  2. Data Blocks: 16387 - 16386第 2 组是什么意思?

答案1

resize_inode 功能创建一个隐藏的 inode(编号 7,您可以使用 查看它debugfsstat <7>来保留这些块,以便 GDT 可以增长。默认情况下,它保留足够的空间来将文件系统增长到原始大小的 1024 倍。您可以mke2fs在格式化时禁用该功能或​​使用选项调整大小。

第 2 组中的数据块:16387 - 16386 是什么意思?

这看起来只是程序中的一个错误,因为您不能有负大小(在开始之前结束)范围。

相关内容