 Curve支持S3 数据缓存方案Page 2 of 9 版本 时间 修改者 修改内容 1.0 2021/8/18 胡遥 初稿 背景 整体设计 元数据采用2层索引 对象名设计 读写缓存分离 缓存层级 对外接口 后台刷数据线程 本地磁盘缓存 关键数据结构 详细设计 Write流程 Read流程 ReleaseCache流程 Flush流程 FsSync流程 后台流程 poc测试验证 背景 基于s3的dae runcate接口,可以由client直接修改inode的len,由metaserver的碎片整 理(马杰负责)模块进行truncate的无效数据清理 后台刷数据线程© XXX Page 4 of 9 启动后台线程,将写Cache定时刷到S3上,同时通过inodeManager更新inode缓存中的s3InfoList。具体细节见 本地磁盘缓存 如果有配置writeBack dev,则会调0 码力 | 9 页 | 179.72 KB | 6 月前3 Curve支持S3 数据缓存方案Page 2 of 9 版本 时间 修改者 修改内容 1.0 2021/8/18 胡遥 初稿 背景 整体设计 元数据采用2层索引 对象名设计 读写缓存分离 缓存层级 对外接口 后台刷数据线程 本地磁盘缓存 关键数据结构 详细设计 Write流程 Read流程 ReleaseCache流程 Flush流程 FsSync流程 后台流程 poc测试验证 背景 基于s3的dae runcate接口,可以由client直接修改inode的len,由metaserver的碎片整 理(马杰负责)模块进行truncate的无效数据清理 后台刷数据线程© XXX Page 4 of 9 启动后台线程,将写Cache定时刷到S3上,同时通过inodeManager更新inode缓存中的s3InfoList。具体细节见 本地磁盘缓存 如果有配置writeBack dev,则会调0 码力 | 9 页 | 179.72 KB | 6 月前3
 Curve文件系统元数据持久化方案设计curvefs.dump) }; Q&A© XXX Page 9 of 12 单靠 redis 的 AOF 机制能否保证数据不丢失? 不能,因为 AOF 与 SET/DEL 这些操作不是同步进行的,即使刷入文件配置项 开启最高级别的 always 选项,也有可能丢失一个事件循环的数据,实现如下: appendfsync // : call(...) // propagate(...)0 码力 | 12 页 | 384.47 KB | 6 月前3 Curve文件系统元数据持久化方案设计curvefs.dump) }; Q&A© XXX Page 9 of 12 单靠 redis 的 AOF 机制能否保证数据不丢失? 不能,因为 AOF 与 SET/DEL 这些操作不是同步进行的,即使刷入文件配置项 开启最高级别的 always 选项,也有可能丢失一个事件循环的数据,实现如下: appendfsync // : call(...) // propagate(...)0 码力 | 12 页 | 384.47 KB | 6 月前3
 Open Flags 调研XXX Page 21 of 23 对chubaofs和cephfs代码调研中发现在write中判断如果是直接IO则调用flush操作,但是对具体flush内容主要是对文件系统自己缓存的内容进行刷盘,没有发现对应内核缓冲区flush的相关设置或调用等。© XXX Page 22 of 23 // chubaofs writeflush func cfs_write(id C.int64_t0 码力 | 23 页 | 524.47 KB | 6 月前3 Open Flags 调研XXX Page 21 of 23 对chubaofs和cephfs代码调研中发现在write中判断如果是直接IO则调用flush操作,但是对具体flush内容主要是对文件系统自己缓存的内容进行刷盘,没有发现对应内核缓冲区flush的相关设置或调用等。© XXX Page 22 of 23 // chubaofs writeflush func cfs_write(id C.int64_t0 码力 | 23 页 | 524.47 KB | 6 月前3
共 3 条
- 1













