分布式存储如何保证数据一致性?

作为一个面向大规模的分布式存储系统,故障处理是作为一个常态异常处理,在多副本机制下,数据的一致性是如何保证的,中间应用了什么机制?显示全部

作为一个面向大规模的分布式存储系统,故障处理是作为一个常态异常处理,在多副本机制下,数据的一致性是如何保证的,中间应用了什么机制?

收起
参与7

查看其它 1 个回答wangshuai_go的回答

wangshuai_gowangshuai_go存储工程师证券

这里以solidfire和fusionstorage block 作为典型的分布式块存储,2种在架构区别较大的存储来讲讲在2种主流协议架构下数据一致性的保障问题。

一、 solidfiire分布式块存储写入数据数据一致性保障:
solidfire 是全闪存架构双副本保护机制,主机端的写操作会被分片成多个4K的block 下发到存储集群,数据首先写到存储集群中该卷(类似传统存储分给主机的LUN)对应primary存储节点的NVRAM,之后再被复制到集群中该卷对应的secondary 存储节点NVRAM完成第二份副本复制,复制完成secondary 副本之后,集群直接acknowledge write to host 返回主机写入完成。
注意这里还没有完—返回主机写入完成后,集群中存储节点还有做将NVRAM中数据刷入后端SSD硬盘的数据落盘操作,最终完成数据存储过程。
djsupurmb8f

djsupurmb8f

二、 fusionstorage block分布式块存储数据一致性保障:

数据一致性意味着当应用成功写入一份数据到存储系统时, 存储系统的几个数据副本必
然是一致的,当应用再次读时,无论在哪个副本上读取,都是之前写入的数据。
FusionStorage Block 采取多种方式来保证系统中数据的一致性:

1、 副本同步写
当 VBS 模块将写操作发送给指定主 OSD 时, 该 OSD 在写入本节点硬盘时,同时将写
操作同步到备 OSD, 同步过程中严格按照 IO 编号进行,保证了主 OSD 接收到的 IO 顺
序和同步到备 OSD 的 IO 顺序一致。 当主备 OSD 同时完成写操作时,才向应用返回操
作成功。具体流程如下图所示:
67ihw0u5h8u

67ihw0u5h8u

2、 读修复(Read Repair)
Read Repair 机制是指在读数据失败时,系统会判断错误类型,如果是磁盘扇区读取错误,
系统会自动从其他节点保存的副本读取数据,然后重新写入该副本数据到硬盘扇区错误
的节点, 从而保证数据副本总数不减少和副本间的数据一致性

证券 · 2018-06-20
浏览3537

回答者

wangshuai_go
存储工程师证券
擅长领域: 存储灾备分布式架构

wangshuai_go 最近回答过的问题

回答状态

  • 发布时间:2018-06-20
  • 关注会员:2 人
  • 回答浏览:3537
  • X社区推广