引言
过去几十年CPU速度的增长是巨大的,但是磁盘的访问速度却增长较慢。内存近些年发展也很快,可以提供较大的空间存储程序的工作集,因此磁盘传输主要是被写操作支配。因此如何提升写效率是有效利用磁盘的关键。
日志结构文件系统是用顺序写,因为省去了绝大部分seek操作,因此大大提升了写的性能。还有一个好处就是系统崩溃恢复,日志结构文件系统只需要检查最近的部分日志
日志结构文件系统实现
基本假设
- 大部分的读请求都从缓存中读取
- 大部分磁盘访问都是写请求
段概念
-
段定义:虽然磁盘顺序写效率高,考虑一下,如果有一个文件执行写操作就写,但是如果中间间隔一会儿写另一个文件,那么中间磁盘已经旋转。要想获得高效率,必须连续顺序写,因此需要在内存中缓存修改的块,直到达到一定数量的时候执行一次写操作,这个大块叫做段
-
段布局:段中不仅包含了数据块,也包括i-node块,段的开头还包括一个段summary块,包含了垃圾回收需要的关键信息,后边详细解释
-
缓存大小: T p o s i t i o n T_{position} Tposition代表写操作前旋转和寻道开销时间,磁盘传输速率 R p e a k R_{peak} RpeakMB/s,因此传输 D D DMB需要的时间 T w r i t e T_{write} Twrite
T w r i t e = T p o s i t i o n + D R p e a k T_{write} = T_{position} + \frac{D}{R_{peak}} Twrite=Tposition