BTRFS - A Forest,extent分配树,同步与并发

BTRFS文件系统采用森林状结构,包括子卷树、extent分配树、校验树等,用于跟踪文件、分配空间、校验数据。extent分配树记录已分配的磁盘区域,支持移动和恢复。文件系统更新涉及多层树结构,通过写时复制策略保证原子性和完整性。fsync操作通过日志树优化,提高性能。并发访问通过读写锁实现,确保多核系统下的数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、A Forest

文件系统由树木森林构造(a forest of trees),超级块定位在一个固定的磁盘位置。它指向一个树的根树节点,该节点索引构成文件系统的b树。The trees are:

Sub-volumns:存储用户可见文件和目录。每个子卷有一个单独的tree实现。子卷可以被快照和克隆,创建额外的b-trees。The roots of all sub-volumes are indexed by the tree of tree roots.

Extent allocation tree: 跟踪在extent items中已分配的extents,且为磁盘上的free-space映射服务。 所有的extent的back-reference被记录在extent item中。需要的话,这个允许移动一个extent,或者从一个损坏的磁盘块中恢复。back-reference将磁盘引用指针的数目乘以2。对每个向前的指针,就确信的有一个向后的指针。

Checksum tree: 对每个已分配的extent维护一个checksum。在extent的每个page中item包含一系列的checksums。

Chunk and device tree:处理物理设备的间接层。允许镜像/条带化和RAID。 

Reloc tree: 涉及移动extents的特殊的操作。

举个例子:下图展示了一个特殊文件系统的高级的结构。为了简单reloc和chunk trees被忽略。

下图展示了用户写文件系统之后发生的改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值