What is the difference between a journaling vs a log structured file system?

What is the difference between a journaling vs a log structured file system?

来源:Quora同名问题——Ravi的回答

journaling File system

请添加图片描述

简单来说,文件系统先把一系列的写操作写到一个循环日志(circular log)里面,这个循环日志与磁盘数据分开。

文件系统中的journaling分成以下两部分:

metadata journaling

只有metadata(例如inode信息等)会存在log中,metadata journaling包括以下步骤:

  1. 修改文件数据(内存->磁盘)
  2. 在log中更新文件对应的inode
  3. 复制inode信息(log->磁盘)

好处是保证metadata的一致性,缺点是未保证数据的一致性,同时带来了两次inode的写(log和磁盘)。

physical journaling

与metadata非常类似,就是把文件的内容写到log中,好处很直观,保证了文件数据的一致性,缺点是带来了大量的写开销。

Log-structured File System

请添加图片描述

虽然在journaling中也有一个log,但是这两个文件系统是不一样的,log-structured文件系统把整个磁盘看做一个append only log,永远都是顺序追加到log的最后。所以这样我们会发现对于写操作永远都是顺序的。

对于那些修改后的文件以及删除的文件,我们自然不希望它们继续占着位置,所以一个高效的垃圾回收和空间管理机制是必须的。

如果不幸文件系统崩溃了,那么不同于fsck命令,LFS对整个硬盘存储了checkpoint,checkpoint中存储了第一个segment和最后一个segment的地址,segments之间通过指针连起来。segment是空闲空间的管理单位。

这里需要提到一个写时复制(copy-on-write)的技术。COW运用在很多地方,比如linux中fork子进程,以及我们要说到的文件系统。我们这里的COW特指在对文件数据进行修改的时候不会在原位置上直接操作。同时需要保证原子写。

关于LFS的详细信息,可以看:历史与概述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值