BlueStore 设计理念 与 指导原则#yyds干货盘点#

网友投稿 289 2022-10-08

BlueStore 设计理念 与 指导原则#yyds干货盘点#

1、存储系统读写操作

1.1 读操作

存储系统中,所有读操作都是同步,即除非在缓存中命中,否则必须要从磁盘中读到指定的内容后才能返回前端

1.2 写操作

存储系统中,一般而言,写操作处于效率考虑,所有写操作都会预先在内存中进行缓存,由文件系统进行合适的组织后,再批量写入磁盘

2、日志型存储系统

包含日志的存储系统 -- 日志型存储系统

2.1 写日志

理论上,数据写入缓存即可向前端返回写入完成应答,但是由于内存数据在掉电后会丢失,因此处于数据可靠性考虑,此操作不可采用;一种可行的替代方案是将数据先写入相较普通磁盘而言性能更好并且掉电后数据不会丢失的中间设备,等待数据写入普通磁盘后在释放中间设备上的相应空间 -- 这个写中间设备的过渡过程称为 写日志;

2.2 日志设备

日志写入的中间设备 -- 日志设备;一般可由NVRAM 或者 SSD 等高速固态存储设备充当

2.3 优缺点

数据在写入日志设备后即可向前端应答写入完成,如果此时掉电,即使数据尚未写入普通设备,系统重新上电后也可以通过日志重放进行数据恢复

2.3.1 优点

日志系统的引入,可以在不影响数据可靠性的基础上对写操作进行加速

2.3.2 缺点

日志型存储系统主要有 两个 缺点

额外资源消耗 -- 引入了日志设备,需要消耗额外的资源;日志空间可以重复使用,所以日志设备不需要配置很大的容量,很多普通磁盘也可以共享一个日志设备双写 -- 因为同一份数据要先写在日志设备,再写到普通磁盘上写两次,所以日志型存储系统还存在双写的问题

3、事物型存储系统

除了数据可靠性之外,存储系统还需要考虑一致性的问题,即涉及数据修改相关的操作,要么全部完成,要么没有任何变化,而不能介于此两者之间的某中间状态(All or nothing) -- 符合上述语义的存储系统被称为 事物型存储系统

3.1 特点

事物型存储系统最主要的特点就是所有的修改操作都符合事物的 ACID 语义 -- 事物正确执行的四个基本要素

原子性 Atomicity一致性 Consistency隔离性 Isolation持久性 Durability

4、基本概念

涉及的基本概念主要包括 三个

block-size(块大小)RMW(Read Modify Write)COW(Copy-On_write)

4.1 block-size

磁盘块大小指针对磁盘进行操作的最小粒度(也称为原子粒度);例如对普通机械盘而言,这个最小粒度为 512 字节,即一个扇区;现代SSD普遍使用更大的块大小,例如4KB

4.2 RMW

4.2.1 概念

指覆盖写(即改写已有内容)发生时,如果本次改写的内容不足一个磁盘块大小,那么就需要先将对应的块读上来,然后将待修改内容与原先的内容进行合并(从这个角度而言,也可以将RMW中M理解为Merge),最后将更新后的块重新写入原先的位置

4.2.2 缺点 或 问题

RMW引入两个问题

额外的读惩罚针对已有内容执行覆盖写,所以如果磁盘中途异常掉电,那么会导致潜在的数据损坏风险

4.3 COW

指当覆盖写发生时,不是直接更新磁盘对应位置的已有内容,而是重新在磁盘上分配一块新的空间,用于存放本次新写入的内容,这个过程也称为写时重定向;当新写完成、对应的地址指针更新后,即可释放原有数据对应的磁盘空间

4.3.1 优点

COW理论上可以解决RMW引入的两个问题

4.3.2 缺点

COW缺点主要分 XX 个

COW机制破坏了数据在磁盘分布的物理连续性,影响范围内的读性能增加元数据开销,导致系统系能大打折扣

5、BlueStore

BlueStore 定义为事物型的本地日志文件系统

5.1 设计对象

全闪存阵列

5.1.1 全闪存阵列 磁盘

全闪存阵列磁盘 主要分 数据盘 和 日志盘

数据盘 : 普通的SSD日志盘 : 性能更高的 NVRAM 或者 NVMe SSD等固态存储设备

5.1.2 全闪存阵列 性能

全闪存阵列性能开销 主要包括两个方面;当一次写入的数据量超过一定规模时,写入日志盘的时延 和 直接写入数据盘的时延不在具有明显优势,此时日志存在的必要性大大减弱

寻址时间 : 影响很小数据传输时间 : 主要性能影响

5.2 设计目标

在保证数据可靠性 和 一致性的前提下,尽可能减小由于日志存储系统引入的 "双写" 问题所带来的负面影响,提升写性能

5.3 设计方法

使用增量日志,即针对大范围的覆盖写,只在其前后非磁盘块大小对齐的部分使用日志,其他部分因为不需要执行RMW,则可以直接执行重定向写COW

6、BlueStore 读写

...待完善

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Tomcat简介
下一篇:Springboot中如何通过yml为实体类注入属性
相关文章

 发表评论

暂时没有评论,来抢沙发吧~