CurveBS IO Processing Flow
architecture, data organization and topology structure of CURVE. CurveBS uses the central node Metadata Server (MDS) to manage virtual disk mapping and data replicas distribution. Decentralization two-level mapping and introduced segment. 2. Segment is also the granularity of space allocation. Multiple chunks are aggregated into one segment. The default segment size can be 1GB. it only requires in CurveBS This section mainly describes how data nodes manage chunk. Each node in the figure represents a data node (ChunkServer). A CopySet is the basic unit of data replication in CurveBS. A0 码力 | 13 页 | 2.03 MB | 5 月前3Raft在Curve存储中的工程实践
aft的一致性协议和复制状态机,而且提供了一种通用的基础库。基 于braft,可以基于自己的业务逻辑构建自己的分布式系统。 • braft本身不提供server功能,需要业务自己实现状态机。 Node(一个raft实例) int init(const NodeOptions& options); void apply(const Task& task); void add_peer(const unkserver是多对多的关系 • 每个copyset由3个chunkserver组成 • 每个chunkserver可以服务多个copyset raft复制组 • disk -> segment -> chunk • chunk -> copyset -> chunk in 3 chunkserverCurve块存储RAFT应用 请求处理流程 以写请求为例: 1. Client0 码力 | 29 页 | 2.20 MB | 5 月前3Curve文件系统元数据管理
curve 有元数据服务器 lru cache缓存 kv → hashtable(key parent inode + name) segment kv → hashtable(key inode + offset) etcd 差 块设备,最小10GB segment + chunk raft 块设备的元数据管理 cephfs 3、各内存结构体 用多台元数据服务器需要对元数据进行合理的分片。 当前的一个可行方案是按照inodeid进行分片。分片算法如何设计,热点如何解决下半年细化,当前简单按照算法为 serverid = (inodeid / inode_per_segment) mod metaserver_num 进行分片。分片算法的具体实现不影响下面的讨论。 比如说分片规则按照每个分片管100个inodeid,如果有3个metaserver,那么分片信息就变成了这样。©0 码力 | 24 页 | 204.67 KB | 5 月前3Curve核心组件之mds – 网易数帆
proto/nameserver2.proto): • FileInfo: 文件的信息。 • PageFileSegment: segment是给文件分配空间的最小单位 。 • PageFileChunkInfo: chunk是数据分片的最小单元。 segment 和 chunk的关系如下图:NAMESERVER Namespace的文件的目录层次关系如右图。 文件的元数据以KV的方式存储。0 码力 | 23 页 | 1.74 MB | 5 月前3Curve设计要点
• Application 块/对象/EC等 感知具体格式 提供不同文件类型支撑不同上层应用数据组织形式 • PageFile/AppendFile/AppendECFile • Segment • 逻辑概念,空间分配的基本单元 (减少元数据数量) • 多个连续地址空间chunk(物理文件)的聚合数据组织形式 • CopySet • 逻辑概念 • 减少元数据数量 • 数据放置的基本单元0 码力 | 35 页 | 2.03 MB | 5 月前3新一代云原生分布式存储
块存储场景 | 使用中的问题 Curve 架构简介 | 主要亮点 | 应用情况 FAQ 答疑架构简介 — 总体架构 支持块存储、文件存储(多种存储后端)架构简介 — 概念介绍 Segment: 空间分配的基本单元 Chunk: 数据分片 Copyset: 复制组 ChunkServer: 管理一个磁盘进程架构简介 — 数据放置 Copyset的放置 Chunk的分配 •0 码力 | 29 页 | 2.46 MB | 5 月前3Curve核心组件之snapshotclone
snapshotName string 快照名 seqNum uint64_t 快照版本号 chunkSize uint32_t chunk的size segmentSize uint64_t segment的size fileLength uint64_t 卷的大小 time uint64_t 快照创建时间 status enum 快照的创建状态 Etcd中的快照元数据:快照的元数据和数据组织0 码力 | 23 页 | 1.32 MB | 5 月前3CurveFS方案设计
开源部分有空间映射关系,但空间分配器没有公布。 当前curve已经实现了块设备。curve的数据节点采用了chunkfilepool实现性能优化,同时也绕过了文件系统的空间管理,通过mds的segment/chunk实现了简单的空间管理。 利用本地文件系统去构建curvefs,采用分布式文件和本地文件系统相对应的方式,curve当前数据节点需要变更。因为chunk16MB的定长不适用于文件系统。另外快照逻辑无法复用。0 码力 | 14 页 | 619.32 KB | 5 月前3Curve for CNCF Main
(RAFT) CEPH WRITE SUCCESS majority write successful all write successful READ Leader of copyset Node in PG SLOW STORAGE/DISK FAILURE INFLUENCE without I/O disruption I/O jitter occasionally CAN SYNC SYNC WITH REMOTE DISK SERVER Y NI/O Jitter (vs. Ceph) 3 replicas with 9 nodes cluster each node has 20 x SSD, 2xE5-2660 v4 and 256GB mem FAULTS CASE CURVE I/O JITTER CEPH I/O JITTER COMMENT ONE DISK0 码力 | 21 页 | 4.56 MB | 5 月前3Curve核心组件之chunkserver
作 • RaftService。Braft内置的service, 完成raft成员之间的选举,日志复制, 安装快照等操作。 ChunkServer架构CopysetNode封装了braft的Node,并 实现了braft的状态机,完成与raft的交 互。详细交互流程后面展开。 CopysetNodeManager负责管理 CopysetNode的创建、初始化、删除等 ChunkServer架构心跳模块有两方面的职责: 心跳上报时携带这些信息。ChunkServer核心模块-CopysetNode 写请求: 1. Client发送写请求给Leader ChunkServer 2. 请求封装,提交给Raft node 3. 本地持久化entry的同时发送给其他peer 4. 本地持久化log entry成功,并且有一个peer也落 盘成功,则commit 5. Commit后apply,此时把写请求写0 码力 | 29 页 | 1.61 MB | 5 月前3
共 15 条
- 1
- 2