ext3添加了日志功能,下面是研究通过日志恢复文件时的一点心得,工作需要,未作深入研究。
只言片语,不成体系,个人理解,可能不对!
jbd日志过程:(ordered为例)
1. 对元数据的修改(以块为单位)先记录到日志中(这时的数据应该还在内存)
2. 对文件内容进行相应操作
3. 进行commit操作,表示此次操作完成,日志中的元数据可以生效
4. jbd守护进程定时把日志中的元数据flush到磁盘
删除操作为例:
1. 在内存中将inode的数据修改,修改后的inode写入日志
2. 文件数据清空(实际上只是清除指针,可能在上一步已经做完)
3. 日志中append一个commit操作,表示删除操作完成
4. 修改后的inode被jbd守护进程flush到磁盘
故被删除的文件想要恢复,只能祈祷inode所在块,在之前的日志记录中,被写到了日志中
参考:
http://bbs.chinaunix.net/thread-1922346-1-1.html