Ext2文件系统的磁盘空间管理与操作详解
1. Ext2文件系统的空间管理需求
Ext2文件系统的空间管理面临着一些挑战和需求。一方面,要避免文件在不同块组中碎片化,这类似于内存的外部碎片化问题。另一方面,空间管理必须高效,内核需要快速根据文件偏移量得出Ext2分区中对应的逻辑块号,同时要尽量减少对磁盘上地址表的访问次数,因为每次中间访问都会显著增加文件的平均访问时间。
2. 创建inode
ext2_new_inode() 函数用于创建Ext2磁盘inode,它接收两个参数:指向要插入新inode的目录的inode对象地址 dir 和表示要创建的inode类型的 mode 。该函数的具体操作步骤如下:
1. 调用 new_inode() 分配一个新的VFS inode对象,将其 i_sb 字段初始化为 dir->i_sb 中存储的超级块地址,并将其添加到使用中的inode列表和超级块列表中。
2. 如果新inode是目录 :
- 调用 find_group_orlov() 寻找合适的块组,其启发式规则如下:
- 对于父目录为文件系统根的目录,应分散在所有块组中。函数会搜索块组,寻找空闲inode和空闲块数量高于平均水平的组。若不存在这样的组,则跳至步骤2c。
- 对于非文件系统根的嵌套目录,若父目录所在块组满足以下规则,则放入该组:
- 该组不包含过多目录。
超级会员免费看
订阅专栏 解锁全文
1760

被折叠的 条评论
为什么被折叠?



