gpt4 book ai didi

unix - 了解影子分页及其与日志文件系统的区别

转载 作者:行者123 更新时间:2023-12-04 15:47:09 24 4
gpt4 key购买 nike

我正在尝试很好地掌握类 unix 文件系统中的影子分页;您可能会在 ZFS 中看到的内容或 WAFL .似乎在影子分页中,当想要更改页面时,将写入不同的页面或“影子页面”。在操作完成后,即当所有内容都已提交时,影子页面被写出,替换旧页面。这是对影子分页的正确(尽管是高层次的)理解吗?

影子分页与日志文件系统有何不同?他们看起来很相似。

感谢您的宝贵时间!

最佳答案

这两个系统都允许您通过不同的机制提供原子性/一致性:

  • 影子分页总是在您修改某些内容时分配一个新 block ,并且当一个 block 被覆盖时,它的旧副本将变为空闲,因为不会有任何其他事件文件系统 block 对它的引用。崩溃一致性来自树上的递归元数据更新——您更新叶 block 所在的位置(在修改期间复制到其他地方),并且必须更新其父 block (在修改期间复制到其他地方),等等。文件系统的新版本当直到树的根的整个链被更新时,所有修改都变得可见。

  • 日志允许您就地修改 block ,但您仍然必须将它们写入两次:一次写入标记您的意图的日志(并在需要时提供多更新原子性,例如实现从一个文件移动一个文件目录到另一个),然后在日志本身中一次。由于您是就地修改,对于同一 block 的覆盖,除了您覆盖的特定 block 之外,您通常不需要更新许多其他文件系统树 block ,因为当您编写新版本时,这些 block 没有改变位置。

最大的区别是影子分页/写时复制使得在文件系统中实现快照变得非常容易——您需要做的就是跟踪文件系统树根的旧版本,以及它引用的任何内容当时。在日志中,这要困难得多,因为任何 block 都可以随时被覆盖,而且日志不是无限的——通常它会很快被覆盖,否则它会占用大量磁盘空间。

写时复制的最大缺点可能是,尤其是对于旋转磁盘而言,它倾向于对您的数据进行瑞士奶酪处理,导致数据变得非常碎片化,因此在大量顺序读取文件时需要更多的磁盘寻道经常更新。 ZFS 有这个问题,我认为一些后来的写时复制系统通过一些中间层将逻辑 block 地址映射到物理地址来解决这个问题,以允许对数据进行碎片整理。

关于unix - 了解影子分页及其与日志文件系统的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55223741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com