Curve核心组件之snapshotclone
Serivce层面区分上层请求为同步接口调用,还是异步接口调用, 同步接口调用直接调用Core层接口实现功能,异步接口创建Task, 并交由TaskManager调度。 SnapshotService & CloneService: • 任务管理层负责调度SnapshotTask和CloneTask,并向上提供如 cancel task等功能。 SnapshotTaskManager & CloneTaskManager: chunkserver meta object data object data object S3 Snap Task etcd mds client 3.获取快照元数据 datastore metastore http service clone Task user 快照元数据 2.创建内部快照 5.删除内部快照 快照数据 1.发起快照 SnapshotCloneServer chunkserver meta object data object data object S3 Snap Task etcd MDS client 2.创建克隆卷 3.分配卷空间 7.拷贝数据 datastore metastore http service clone Task user 快照、克隆元数据 SnapshotCloneServer 1.发起克隆 5.8.9.更新元数据克隆卷状态变化0 码力 | 23 页 | 1.32 MB | 5 月前3CurveBS IO Processing Flow
user request arrives at the ChunkServer, the CopysetNode will encapsulate the request into a task (the task is mainly the user's data) and submit it to the BRaft node.3. The BRaft node persists the log0 码力 | 13 页 | 2.03 MB | 5 月前3Raft在Curve存储中的工程实践
braft本身不提供server功能,需要业务自己实现状态机。 Node(一个raft实例) int init(const NodeOptions& options); void apply(const Task& task); void add_peer(const PeerId& peer, Closure* done); void remove_peer(const PeerId& peer, Closure*0 码力 | 29 页 | 2.20 MB | 5 月前3Curve核心组件之Client - 网易数帆
从Chunkserver获取复制组leader信息 4. 将请求发往leader节点CLIENT IO线程模型 用户线程 1. 用户调用接口,发起IO请求 2. AioWrite将请求封装成io task并放入任务队列 3. 放入任务队列后,异步请求发起成功,返回用户 IO拆分线程 4. 从任务队列取出任务后进行拆分 5. 拆分过程依赖元数据,可能会通过MDSClient向 MDS获取0 码力 | 27 页 | 1.57 MB | 5 月前3Open Flags 调研
用(read(2)、write(2)、lseek(2)、fcntl(2) etc.)中指向这个打开的文件。打开的文件描述符记录中保存着文件的offset 和 文件status。 每个进程都有个 task_struct 描述符用来描述进程相关的信息,其中有个 files_struct 类型的 files 字段,里面有个保存了当前进程所有已打开文件 描述符的数组,而通过 fd 就可以找到具体的文件描述符:©0 码力 | 23 页 | 524.47 KB | 5 月前3
共 5 条
- 1