BTRFS- Multiple Device Support(多重设备支持)

简介: BTRFS- Multiple Device Support(多重设备支持)

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


备注:本文翻译自 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展示了一个硬盘比另外两个大的情况。

image.png

表 1: 为了支持RAID1逻辑chunks,物理chunks被分为对。 三个磁盘,每个有两个物理chunks,提供三个逻辑chunks. 逻辑chunk L1由物理chunks C11和C21组建。

image.png

表2: 一个大的磁盘,两个小的磁盘,在一个RAID1配置。

对于条带化,n chunks 的组被使用, 每个物理chunk在不同的磁盘上。举个例子,表3展示了条带宽度位4(n=4),四个磁盘,三个逻辑chunks的情况。

image.png

表3: n=4 每个逻辑chunks 由四个物理chunks组成。

 

在写的时候,RAID 级别0,1和10是支持的。 额外的,有一些实验的代码来自于Intel支持RAID5/6。更高级的RAID的核心思想是去使用Reed-Solomon parity relationship的chunks group。举个例子,表4展示了一个RAID6配置,逻辑chunks L1,2,3由双重物理chunks组建。举个例子,L1由{C11,C21,C31,C41},Chunks{C11,C12}保持数据清晰, C31=C21+C11,C41=Q(C21,C11),函数Q通过Reed-Solomon代码定义这样任何双重的chunk失败组合将可以被恢复。

image.png

表4: 一个RAID6的例子, 有四个磁盘{D1,D2,P,1}。每个逻辑chunk在每个硬盘上有一个物理chunk。举个例子,L1的原始数据被条带化在磁盘D1和D2中。C31是C11和C21的奇偶校验。C41是C11和C12chunks的Q计算。

复制数据和存储奇偶校验数据对存储系统来说是很消耗成本的。无论如何,它允许从许多媒介错误场景中恢复。最简单的情况是RAID1, 每个块都有一个镜像的拷贝。当文件系统尝试去读取一个拷贝时,发现IO或者checksum错误,他会尝试第二份拷贝。 如果第二份拷贝是有效的,然后他会返回给调用者。 额外的,第一份拷贝可以被有效的数据重写。一个主动的方法,一个低强度的擦洗操作被持续性的运行在数据中,也是支持的。

逻辑chunks的RAID 配置是灵活的。一个单个的BTRFS存储池可以有多种逻辑chunks在不同的RAID 级别中。这个会从低级别的可以来的和条带化的机制中解耦高级的逻辑结构。这些对下面的操作很有用:

 1. 在飞速的,增长或者减少可靠性中改变RAID 级别

 2. 改变条带宽度:更宽带来更好的带宽

 3. 给不同的子卷不同的RAID级别。也许一些子卷需要更高的可靠性,而其他在更小少可靠性的开销下需要更多的性能

默认的行为时使用RAID1给元数据,即使只有一个磁盘。这个给文件系统一个更好的机会在介质失败的时候恢复。

在文件系统的周期中普通的操作发生是设备的添加和移除。 这个是支持的,通过一个常规的平衡算法尝试去传播分配均衡的在所有的磁盘上,即使当设备总体改变的时候。

举个例子,表5(a) 系统有两个磁盘在RAID1配置;每个磁盘有1/2的原始数据。然后一个新磁盘添加进来,看表5(b),均衡代码的目标是达到在表5(c)中的状态,数据均衡的分布在所有硬盘上,每个硬盘拥有1/3的数据。

image.png

表5:设备添加。 初始(a) 有两块盘。 状态(b),另一个磁盘被添加,初始化位空。状态c展示了目标:数据均衡分布在所有磁盘上。物理chunks C12和C23被移动到硬盘3。

当一个设备被移除时,情况是相反的。从一个1/3比例(表5的c),系统移动回到1/2.如果有未使用的chunks在剩余磁盘,然后再次平衡可以自动完成这个任务。无论如何,我们不会总是这么幸运。如果数据在所有chunks之间传播,然后尝试去驱逐一个chunk需要遍历整个文件系统,移动extents,修复references。这个域碎片整理是类似的。


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

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

                     

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

目录
相关文章
|
开发者 物联网 物联网安全
透视盒马:新零售操作系统的秘密
盒马是一个端到端,线上线下一体化的零售业务。在阿里CIO学院攻“疫”技术公益大咖说的第十六场直播中,盒马技术负责人何崚详细介绍了盒马产品技术在构建供给网络、销售网络、物流网络这三个核心命题时遇到的挑战和技术难点。
4966 2
|
网络安全 数据安全/隐私保护 网络虚拟化
刷完OpenWrt在浏览器无法访问的解决办法
其实问题很明显、 是因为刷了trunk版固件、 并没有集成luci、 那接下来就是装luci、但是装luci需要联网(不过其实不联网其实也是可以安装的、) 我说的联网是让路有联网、而不是网线接路由,路由接电脑、然后电脑拨号上网、这种联网、 如何让路由联网呢? 1、最简单的方法、如果你有两个路由、或者...
13569 0
|
3月前
|
存储 缓存 固态存储
系统分区完全指南:多种方法实现专业磁盘管理
合理磁盘分区可提升搜索效率、增强容错性、优化性能并便于管理。建议分为系统盘与数据盘,Windows推荐GPT格式,支持更大容量与UEFI启动。可通过系统自带工具或DiskGenius进行分区操作,注意备份、4K对齐及电源稳定。
867 3
|
6月前
|
Ubuntu 安全 Linux
Linux发行版深度对比:Ubuntu、CentOS与Fedora
Ubuntu、CentOS和Fedora分别在用户体验、企业级稳定性和技术创新方面展现了各自的优势,适合不同类型的用户和场景。选择合适的Linux发行版应基于个人或组织的需求、技术背景以及对稳定性和最新技术的偏好。无论是追求直观易用的桌面环境,还是寻求企业级的稳定性与安全性,亦或是渴望体验最新技术的前沿,这三大发行版都提供了丰富的选项和强大的支持,满足了Linux用户在各种场景下的需求。在选择发行版时,深入理解其特点和优势,结合自身需求进行考量,将有助于做出最适合自己的决策,从而在Linux世界中获得最佳的使用体验。
|
7月前
|
机器学习/深度学习
简述:Transformer机制的瓶颈及未来几种可能出现的机制迭代
下一代大模型将从“Transformer 的二维 attention 平面”,进化到“结构化驱动的多维任务空间”。也就是说:不是“改进 Transformer”,而是让 Transformer 成为一部分机制,预测将是“因果框架 + 动态路径 + 局部任务图谱 + 长期记忆”,“结构即智能”的范式会压倒“规模即智能”的思维。
265 1
|
缓存 负载均衡 安全
Swift中的网络代理设置与数据传输
Swift中的网络代理设置与数据传输
|
机器学习/深度学习 计算机视觉 iOS开发
YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
783 12
|
大数据 BI 数据采集
推荐 | AllData开源数据中台项目
AllData是一个可定义的数据中台,采用Wujie微前端架构和可插拔后端设计,提供全链路数字化解决方案。它包括数据平台、数据中台、机器学习平台和大模型应用,旨在连接和优化数据处理流程。项目已在GitHub上开源(https://github.com/alldatacenter/alldata),并提供了详细的官方文档和安装指南。AllData 2.0版本针对商业版和开源版的功能进行了区分,商业版在稳定性方面表现更优,同时增加了数据平台等功能。项目团队积极参与开源社区,致力于提供稳定的架构和不断改进的用户体验。
推荐 | AllData开源数据中台项目
|
JavaScript Java 测试技术
基于微信小程序的课堂点名系统springboot+vue.js附带文章和源代码设计说明文档ppt
基于微信小程序的课堂点名系统springboot+vue.js附带文章和源代码设计说明文档ppt
343 3
|
缓存 网络协议 Ubuntu
netperf网卡测速ubuntu linux 环境下测硬件网卡速度
netperf网卡测速ubuntu linux 环境下测硬件网卡速度
583 1