自从Linux系统引入了Ext4文件系统了,就有一个JBD2为之服务,其实JBD2也可以为其它的文件系统服务,但是目前来说只有Ext4和OCFS2文件系统用它。JBD2作用的原理是在Ext4文件系统把数据提交到驱动前先调用它,JBD2根据系统的不同设置来完成数据或是操作的备份后,再让Ext4系统提交数据,当文件系统把数据写入了设备后,就通过JBD2把刚才数据或是操作备份删除,这样来保证数据的一致性。作用的流程如下:

如果没有JBD2,Ext4的流程是红线;如果有则是绿线。下面对图的1-5阶段做介绍。
1、 在数据准备提交的时候,先由JBD2根据系统设置的不同(writeback, ordered, journal)把对数据的操作写入备份,如果在这之前或是还没写完的时候系统发生了故障(如断电),那么在系统下次完整性检查时就把这些日志数据删除,而不对文件系统做任何改变。
2、 如果到这一步,说明备份数据已经写完,在以后的任何一步发生故障,系统都能根据日志把完整的备份数据写到相应的文件系统里去。当然这些完整情只能保证一个原子操作不完整性。假如你在拷贝一个600M的电影,一个原子操作是10M,那么JBD2系统只能保证下在提交的10M的数据的完成性,页不能保证这个电影的完整性。