LFS即日志结构文件系统(log-structured file system)。日志结构文件系统是一种只允许顺序写的文件系统。原始的LFS叫做Sprite(精灵) LFS,是 Sprite 网络操作系统的一部分。
LFS的基本假设是IO 瓶颈在写不在读,因为文件在内存有 cache。
在写入许多小文件时,将许多同步小写转化成一个大的异步写,从而充分利用磁盘带宽。
日志型文件系统的 log 仅用作临时存储,在崩溃恢复时使用
日志结构文件系统将 log 作为主要存储区域,并且磁盘上没有其他的结构(这是原始的 LFS)
将文件的改动暂存在 file cache 中,并向磁盘一次将所有的数据顺序写到 log 中(包括数据及元数据)。
每一个文件有对应的 inode,inode 包含访问控制等信息以及指向起始 10 个数据块地址的指针、指向其他数据块地址或者其他 indirect block 的 indirect block。
将一些 segment 读入内存,识别有效数据,并将有效数据写回干净的 segment
每个 segment 都有一个或多个 segment summary block,包含一个块属于哪个文件(ino)以及 index(为了 GC 修改映射关系)。用于识别有效数据(trivial: 检查文件 index 处的指针是否指向这个块;sprite lfs:检查版本号)