知识卡片
extent取代block管理磁盘的动机
内容
ext2用固定大小的block管理磁盘,inode里要为文件占用的每一个block都保存一个指针,一个1GB、4KB block大小的文件就需要26万多个指针,这些指针在创建和删除文件时都要逐个初始化和回收,开销很大。extent把连续的多个block打包成一个”起始位置+长度”的区间描述,索引节点只需要记录指向extent的指针而不是每个block的指针,指针数量和层级都大幅减少。发散:这是”批量描述连续资源”这一通用优化模式的具体案例,和后面会看到的Ceph把大文件切成固定大小Object、bio把连续磁盘位置合并成一个request,本质上都是同一个思路——只要资源在物理上是连续的,就没必要逐个单位去索引它。
参考来源
《Linux开源存储全栈详解从Ceph到容器存储》第3章《Linux存储栈》