BTRFS - COW B-trees

简介: 介绍btrfs的COW特性。

转载:https://blog.csdn.net/PANGHAIFEI/article/details/99642210


文章来自于 IBM Research Report  (BTRFS - B-Tree filesystem)

b-tree不变量是一个节点在被拆分或合并之前可以维护2到5个元素。假设树节点只占用一页。 未修改的page被标记成yellow, COWed页被标记成绿色。

 图1(a) 显示了两级的初始树。图1(b)显示了在最右边叶子插入一个新的key 19。路径沿树向下遍历,并且所有修改的页面都将写入新的位置,不会更改旧的页面。

image.png

为了移除一个key,copy-on-wrire 被使用。移除操作不会修改页面,举个例子,图2展示了 key 6是怎样从树中移除的。 修改被写到一边,创建一个新版本的树。

image.png

为了克隆一棵树,它的根节点被复制,并且所有的子指针被复制。 举个例子, 图3 展示了 tree  Tp 被克隆到 Tq。 树节点用符号表示。因为修改将被用于Tq,共享将会在trees之间丢失,并且每棵树都将有自己的数据。

image.png

由于可以从多个roots到达tree  nodes,垃圾回收对于空间回收来说是需要的。实践中,文件系统是有向无环图。 多个tree共享节点,但是没有回环。 因此 参考计数(ref-counts)可以被用于追踪有多少指针指向tree nodes。一旦计数为0,这个块可以被重复使用。为了追踪ref-counts,写时复制被修改了。 当一个节点COWed, original 的ref-counts 减一,子节点的计数加一。

举例子,图4表示带有ref-counts的克隆示例。粉红色的节点除了ref-counts之外都不会改变。

image.png

图5展示了往tree Q 的H节点插入一个key,从Q到H路径的节点是{Q,C,H},他们全部被修改并且COWed。节点C和H的共享被打断。节点C的ref-count减一。

 

image.png

图6展示删除一棵树的过程。使用的算法就是递归树遍历,从根节点开始。对于每个节点N:

1. ref-count (N)>1 : 递减ref-count 并且停止往下遍历。该节点被其他树共享。

2.ref-count(N)==1 : 该节点仅属于tree q, 继续往下遍历并且重新分配节点N.

image.png


 

————————————————

                           版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

                     

原文链接:https://blog.csdn.net/PANGHAIFEI/article/details/99642210

目录
相关文章
|
存储 算法 数据库
BTRFS - A Forest,extent分配树,同步与并发
介绍Btrfs如何由树木森林构成。
224 3
|
设计模式 Java uml
C++设计模式之 依赖注入模式探索
C++设计模式之 依赖注入模式探索
569 0
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】CoordAttention: 用于移动端的高效坐标注意力机制 (论文笔记+引入代码)
该专栏聚焦YOLO目标检测的创新改进与实战,介绍了一种新的移动网络注意力机制——坐标注意力。它将位置信息融入通道注意力,通过1D特征编码处理,捕获长距离依赖并保持位置精度。生成的注意力图能增强目标表示,适用于MobileNetV2、MobileNeXt和EfficientNet等网络,提高性能,且几乎不增加计算成本。在ImageNet分类和下游任务(目标检测、语义分割)中表现出色。YOLOv8中引入了CoordAtt模块,实现位置敏感的注意力。更多详情及配置见相关链接。
|
11月前
|
人工智能 C++ iOS开发
ollama + qwen2.5-coder + VS Code + Continue 实现本地AI 辅助写代码
本文介绍在Apple M4 MacOS环境下搭建Ollama和qwen2.5-coder模型的过程。首先通过官网或Brew安装Ollama,然后下载qwen2.5-coder模型,可通过终端命令`ollama run qwen2.5-coder`启动模型进行测试。最后,在VS Code中安装Continue插件,并配置qwen2.5-coder模型用于代码开发辅助。
18390 7
|
9月前
|
人工智能 自然语言处理 程序员
通义灵码2.0全新升级,AI程序员全面开放使用
通义灵码2.0来了,成为全球首个同时上线JetBrains和VSCode的AI 程序员产品!立即下载更新最新插件使用。
3597 85
通义灵码2.0全新升级,AI程序员全面开放使用
|
XML JSON 供应链
解锁电商运营新高度:亚马逊商品详情数据接口详解
亚马逊商品详情数据接口是电商运营的关键桥梁,连接商家与消费者,确保商品信息精准传递与高效管理。它具备数据准确性、实时性、安全性和丰富性等特点,能提升流量、增加转化率,并优化搜索排名。适用于商品展示、营销推广及库存管理等多种场景,且接口稳定、可扩展,有助于商家在竞争激烈的市场中占据优势,实现可持续发展。
|
Java 关系型数据库 MySQL
create connection error, url: jdbc:mysql://localhost:3306/ssm, errorCode 1045, state 28000 java.sql.
create connection error, url: jdbc:mysql://localhost:3306/ssm, errorCode 1045, state 28000 java.sql.
365 0
|
关系型数据库 MySQL 测试技术
如何进行数据库的升级?
【7月更文挑战第21天】如何进行数据库的升级?
824 1
|
Linux
Linux上传下载百度网盘文件
Linux上传下载百度网盘文件
1981 1
|
存储 缓存 负载均衡
图解一致性哈希算法,看这一篇就够了!
近段时间一直在总结分布式系统架构常见的算法。前面我们介绍过布隆过滤器算法。接下来介绍一个非常重要、也非常实用的算法:一致性哈希算法。通过介绍一致性哈希算法的原理并给出了一种实现和实际运用的案例,带大家真正理解一致性哈希算法。
24676 64
图解一致性哈希算法,看这一篇就够了!