当前位置: 代码迷 >> 综合 >> What is the difference between log-structured filesystems and copy-on-write filesystem?
  详细解决方案

What is the difference between log-structured filesystems and copy-on-write filesystem?

热度:69   发布时间:2023-12-15 06:59:50.0

What is the difference between log structured filesystems and copy on write filesystems?

(Quora是个好网站,科学上网很有必要)

https://www.quora.com/What-is-the-difference-between-log-structured-filesystems-and-copy-on-write-filesystems

以下是简要的个人理解,欢迎各位指正。

相同点:

  1. 整体上都是异地更新的。
  2. 都是顺序写入(不准确,后面会具体解释)

不同点:

  1. 更新方式:LFS中的全部数据都是以追加的方式写入的,LFS中没有什么数据是通过in place write或者复制更新,CoWFS中只有文件内容是异地更新的,但是比如inode,dentry等metadata还是通过复制或者in place write方式更新的。

易造成混淆的地方:

  1. 我们发现实际上LFS和CoWFS的异地更新方式基本是一致的,都有一定的垃圾回收机制,但是更新的数据种类有差别;
  2. CoWFS中的绝大多数写入都是新数据或者是可以写入任何位置的copies,所以主要访问顺序大多数是顺序的,但是需要注意的是,CoWFS的顺序写入只是恰好,而LFS中的顺序写入是在设计机制上保证的(追加写入),二者虽然很像,但是不能混为一谈。个人感觉上来说,LFS的约束更严格。

总而言之,LFS和CoWFS是完全不同的两种文件系统,但是二者在异地更新上的设计思路是相似的,不同点在于更新的数据不同,从某种意义上说,可以说CoWFS借鉴了LFS中追加更新的思路;而且二者的写入好像都是顺序写,但是LFS的是严格意义上的顺序写,而CoWFS的是凑巧的顺序写,理论上也有随机写的可能。

目前的对比是一个比较粗略的对比,至于垃圾回收、一致性保证上的设计,二者肯定还是不尽相同的,更深入的对比不在本文中阐述。

而且一个需要注意的点是,linux中的进程管理仅仅是CoW的一个非常成功的应用,CoW应该是一个计算机领域非常经典的优化思想,与“懒加载”有相似的思想,CoW在非常多的地方都有应用,感兴趣的可以搜索CoW的相关文章。

  相关解决方案