备注:本文翻译自 IBM Research Report BTRFS - Linux Btree Filesystem
Linux 有设备映射(DMs)子系统去管理存储设备。举个例子,LVM和mdadm,这些时软件模型,主要功能是管理raw disks,合并他们到虚拟的连续的块地址空间,并且将其抽象话到更高级别的内核层。他们支持镜像,剥离和RAID5/6。无论如何,checksums是不支持的,这样会导致BTRFS有一个问题。举个例子,考虑一种情况,数据存储在磁盘上是RAID-1的格式,每个4KB块有一个额外的拷贝。 如果文件系统在一个拷贝上检测到一个checksum的错误,它需要从其他拷贝恢复。DMs隐藏了虚拟地址空间抽象化背后的信息,并且返回其中一份拷贝。为了规避这个问题,BTRFS做了自己的设备管理。它计算checksums,将他们存储在一个单独的树中,然后更好的确定当媒介错误发生的时候合适恢复数据。
一台机器可以被附加到多个存储设备上;BTRFS分离每个设备到large chunks,经验法则是chunk大约是一个设备尺寸的1%。
在写的时刻, 1GB chunks 被用于数据, 256Mchunks用于元数据。
一个chunk tree 包含一个从逻辑chunks到物理chunks的映射。 一个device tree包含反向映射,文件系统剩余部分可以看到有逻辑的chunks,所有的extent references 地址逻辑chunks。这个允许移动物理的chunks under the covers无需回溯和引用修复。 chunk/device trees 是很小的,并且典型的可以在内存中缓存。这个减少增加间接层的性能开销。
物理的chunks根据逻辑chunk的需要的RAID级别被分成组。对于镜像,chunks被分成对。表1呈现了一个三个硬盘,两个组的例子。举个例子,逻辑chunk L1由C11 和 C21组成。 表2展示了一个硬盘比另外两个大的情况。

BTRFS为解决Linux设备映射系统不支持checksums的问题,实现了自己的设备管理。它将设备划分为大型chunks,并根据RAID级别组织数据。在写入时支持RAID0, 1, 10,还有实验性的RAID5/6支持。通过chunk和device树,BTRFS能高效管理存储并允许设备的动态添加和移除,以实现数据均衡和故障恢复。默认元数据使用RAID1确保高可靠性。"
132519821,19694743,R语言:掌握包的下载、使用与管理,"['R语言', '信息可视化', '开发语言']
最低0.47元/天 解锁文章
692

被折叠的 条评论
为什么被折叠?



