设计思路

  1. 以block文件的形式存放数据文件(一般64M一个block),以下简称为“块”,每个块都有唯一的一个整数编号,块在使用之前所用到的存储空间都会预先分配和初始化。

  2. 每一个块由一个索引文件、一个主块文件和若干个扩展块组成,“小文件”主要存放在主块中,扩展块主要用来存放溢出的数据。

  3. 每个索引文件存放对应的块信息和“小文件”索引信息,索引文件会在服务启动是映射(mmap)到内存,以便极大的提高文件检索速度。“小文件”索引信息采用在索引文件中的数据结构哈希链表来实现。

  4. 每个文件有对应的文件编号,文件编号从1开始编号,依次递增,同时作为哈希查找算法的Key 来定位“小文件”在主块和扩展块中的偏移量。文件编号+块编号按某种算法可得到“小文件”对应的文件名。

哈希链表

文件系统核心存储引擎_淘宝文件系统大文件结构

大文件存储结构图

文件系统核心存储引擎_淘宝文件系统大文件结构

文件哈希链表实现图

文件系统核心存储引擎_淘宝文件系统大文件结构

关键数据结构

文件系统核心存储引擎_淘宝文件系统大文件结构

关键数据结构

文件系统核心存储引擎_淘宝文件系统大文件结构

时间:

2020-06-14

相关文章: