jffs2文件系统一般应用于闪存设备,且存储空间不能太大(实际应用中很少用于超过128M的存储设备),且挂载时间长,因为在挂载的过程中会去扫描整个物理介质(flash),在最新的jffs2加入了摘要(summary)机制,这摘要写在擦出块的最后面(nor flash的话,擦除块可以理解成一个扇区),挂载的时候只读摘要信息,这样避免了大规模的扫描整个擦出块。
其大致原理是这样的:将flash节点化。因为flash擦除操作是整块擦除的,但是写入操作可以是任意位置的字节写入(这个linux中块设备的理念,所以jffs2的驱动设备是块驱动)。这样的话,就可以把整块数据管理起来,如果要写入新数据,就在擦除未写的区域("0xFF")的那些地方,写入新的数据,并且新写入的数据的版本比原来的高(当然实际的机制更复杂,还有红黑树啊,nlink,buflen之类的),这意味着原来的数据是过期了的。