理论基础

分布式一致性含义

强一致性

回话一致性

分布式一致性协议

paxos

raft

块存储

内核中的块存储

通用块层

IO调度层

high SCSI 层

middle/low SCSI 层

驱动层

硬件设备

传统块存储服务

SAN

iSCSI

Fibre Channel

分布式块存储

典型应用场景

前端模块

基于tgt

基于virtual IO

后端模块

主要考虑下面几个问题:

数据拓扑

数据如何映射到不同节点

负载均衡

不同节点之间如何进行数据负载均衡:

容量均衡; ioutil 均衡; 吞吐均衡;

磁盘满的保护;

### 副本同步 站在用户的角度看(而非内部设计者、架构师的角度):

  • 复制组如何创建
  • 如何补副本
  • 如何同步副本
  • 如何删副本
  • 主控节点和数据节点如何保证副本信息一致
  • IO路径

    (以基于Raft的路径为例,主要解决这几个问题:)

    逻辑地址到『物理地址』的映射

    (这里的逻辑地址,指的是吧用户卷的地址(或者切分到复制组内部对应数据块的地址),物理地址指数据在磁盘(裸盘或文件系统中等位置))

    元数据的管理

传统存储中可以通过额外的元数据文件或者磁盘进行管理,在分布式系统中可以通过分布式一致性协议做周期snapshot 的时候落盘元数据。

#### 写路径 遵循分布式一致性协议,先找主,然后append 到多数节点后,apply log后给用户响应。

  • 找主
  • append 写日志
  • apply 日志

写写冲突、读写冲突

#### 读路径

  • 找主
  • 读数据 *

    优化:如果applied index 主从都一样,从任何一样多从节点去读

    数据服务

    快照

    对可读可写的卷做快照。

    MVCC 原理

    COW 和 COR

    版本的提升

    对在飞的写请求的处理

    分布式环境中的快照 (日志持久化)

    即时快照

    克隆

    基于快照克隆出一个可读可写的卷。

镜像

远程拷贝