Btrfs 架构
微信截图_20180424165837.png 微信截图_20180424165852.png和许多其他 fs 一样,Btrfs 的第一部分是一块 header,存储一些 metadata。
Btrfs 的整个架构是一个 B-tree,其中非叶子节点只包含 [ key,block pointer ] 的数据对。叶子节点储存着固定长度的 items 和这些 items 对应的数据的储存位置信息。
Btrfs 中仍然有 inode 和 extent 的概念。
Btrfs 特性
-
可扩展性(scalability)
Btrfs 中所有元数据都以 B-Tree 的结构组织。相比 ex2/ex3 中的线性表格,B-Tree 的好处查找、插入、删除的操作都比较高效。
Btrfs 和 ex4 一样,以 extent 的形式储存文件,对于夸多个 block 的大文件是很好的优化。
Btrfs 支持动态 inode 分配。 ext2 中对于最大文件数量是有限制的(磁盘总空间/8192),但在 Btrfs 中每个 inode 是 B-Tree 中的一个节点,用户可以无限制地插入新的 inode,无个数限制。
-
数据一致性
Btrfs 支持事务粒度地 COW。
Btrfs 采用单独地 checksum tree 来做数据校验。读写数据和 check 工作分别用不同地内核线程并行执行,不会拖慢性能。
-
多设备管理特性
Btrfs 引入了 subvolume 的概念,把文件系统分为多个相对完整的子系统。所以 Btrfs 可以支持动态添加设备。
Btrfs 的劣势
- 由于结构是 B-Tree,当一个非叶子节点出现错误之后就会影响到其所有的子树,会丧失大量数据。
- 因为 COW、快照、checksum 等功能的支持,总体性能偏慢。
网友评论