ext3日志掠影

草草浏了一遍JBD源代码分析,对日志机制的原理和实现有了些粗略的印象,一些细节问题不想深究了,只有在动手实践之后才能有更深入的理解,这是不可取代的途径。

为了是这一上午和一个晚上的工作留下些许印象,记录一些片段士的理解。

1.日志的实现是加在在文件系统的各种操作流程中的,比如

ext3_fill_super() 读入文件系统的超级

ext3_load_journal() 读入对应日志的inode信息

ext3_get_journal() 根据日志inode信息构建一个journal_t结构

journal_load() 进行日志的恢复操作

load_superblock() 读入日志的超级块

journal_recover() 进行实际的日志恢复操作。

2.日志系统在磁盘中开辟了一块区域,想文件系统一样有超级块,但是是以事务(transaction)的形式存在的,transaction包含若干原子操作(handle)。

3.日志系统有三种模式:journal ;ordered;writeback。常用的是ordered,只对元数据块的操作进行日志

4.日志系统包含描述符块和数据块,分别存储操作描述和被操作的数据块。

5在内存中有日志系统的缓冲区,通常每隔5秒,将内存中缓存commit到磁盘上(对这个时间,我颇有疑问:日志存在的意义在于当意外宕机时候,内存的数据没有写到磁盘,但是日志系统却有记录,也就是说日志的块已经回刷到磁盘。若一次写更新已经到了内存缓冲,但是还没写入日志的磁盘空间,日志的恢复功能就不能实现。而5秒的间隔,应该很可能出现这中情况吧?不就结了,动手做完demo再来研究)

基本就这些吧,具体的内容还是要参照<JBD源代码分析>


           

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值