Curve文件系统元数据管理
© XXX Page 1 of 24 Curve文件系统元数据管理(已实现)© XXX Page 2 of 24 1. 2. 3. 4. Inode 1、设计一个分布式文件系统需要考虑的点: 2、其他文件系统的调研总结 3、各内存结构体 4、curve文件系统的元数据内存组织 4.1 inode定义: 4.2 dentry的定义: 4.3 内存组织 5 元数据分片 照parentid分片 5.1.1 场景分析 查找:查找/A/C。 创建:/A/C不在,创建/A/C 删除文件:删除/A/C 删除目录:删除/A rename:rename /A/C到/B/E symbolic link: hardlink:生成一个hardlink /B/E,指向文件/A/C list:遍历/A目录 5.1.2 好处 5.1.2 问题 5.2 分片方式二:Inode按照i hardlink:生成一个hardlink /B/E,指向文件/A/C 6、curve文件系统的多文件系统的设计 1、设计一个分布式文件系统需要考虑的点: 文件系统的元数据是否全缓存? 元数据持久化在单独的元数据服务器上?在磁盘上?在volume上? inode+dentry方式?当前curve块存储的kv方式? 是否有单独的元数据管理服务器? 2、其他文件系统的调研总结 fs 中心化元数据 内存namespace元数据0 码力 | 24 页 | 204.67 KB | 5 月前3Curve文件系统空间分配方案
11 Curve文件系统空间分配方案(基于块的方案,已实现)© XXX Page 2 of 11 背景 本地文件系统空间分配相关特性 局部性 延迟分配/Allocate-on-flush Inline file/data 空间分配 整体设计 空间分配流程 特殊情况 空间回收 小文件处理 并发问题 文件系统扩容 接口设计 RPC接口 空间分配器接口 背景 根据 ,文件系统基于当前的 ,文件系统基于当前的块进行实现,所以需要设计基于块的空间分配器,用于分配并存储文件数据。 CurveFS方案设计(总体设计,只实现了部分) 本地文件系统空间分配相关特性 局部性 尽量分配连续的磁盘空间,存储文件的数据。这一特性主要是针对HDD进行的优化,降低磁盘寻道时间。 延迟分配/Allocate-on-flush 在sync/flush之前,尽可能多的积累更多的文件数据块才进行空间分配,一方面可以提高局部性,另一方面可以降低磁盘碎片。 file/data 几百字节的小文件不单独分配磁盘空间,直接把数据存放到文件的元数据中。 针对上述的本地文件系统特性,Curve文件系统分配需要着重考虑 。 局部性 虽然Curve是一个分布式文件系统,但是单个文件系统的容量可能会比较大,如果在空间分配时,不考虑局部性,inode中记录的extent数量很多,导致文件系统元数据量很大。© XXX Page 3 of 11 假如文件系统大小为1PiB,0 码力 | 11 页 | 159.17 KB | 5 月前3curvefs client删除文件和目录功能设计
© XXX Page 1 of 15 curvefs client 删除文件和目录功能设计© XXX Page 2 of 15 背景 相关调研 moosefs chubaofs 方案设计思考 1.Trash机制是实现1个(类似chubaofs),还是2个(类似moosefs)? 2. Trash放在哪里? 3. 是否需要做session机制(在metaserver打开),来维护inode的打开情况? ret; } 存在两个问题: 一是删除时nlink字段未考虑: 文件的nlink用于实现hard link。 hard link使用nlink字段表示文件的link的引用计数,第一次创建文件是nlink字段为1。每创建一个新的指向该文件的hard link时,nlink字段+1, 每删除一个hard link或指向的原文件时,nlink字段-1。© XXX Page 4 of 15 当nl 删除inode。 目录的nlink字段与文件的nlink字段不同, , 并且在目录下, , 删除目录nlink相应的减1。 目录的nlink字段初始值为2 每创建一个新目录,nlink字段也会+1 目录不支持硬链接。 二是删除时lookup count未考虑: lookup count 指的是文件的访问计数。当文件/目录被打开时, ,该文件/目录仍然可以被打开的进程访问,不会造成崩溃或报错,我们的curvefs也需要实现0 码力 | 15 页 | 325.42 KB | 5 月前3Curve文件系统元数据Proto(接口定义)
XXX Page 1 of 15 curve文件系统元数据proto(代码接口定义,已实现)© XXX Page 2 of 15 1、代码结构和代码目录 curve文件系统是相对于curve块设备比较独立的一块,在当前curve项目的目录下,增加一个一级目录curvefs,curvefs下有自己独立的proto\src\test。 2、文件系统proto定义 2.1 mds.proto0 码力 | 15 页 | 80.33 KB | 5 月前3Curve文件系统元数据持久化方案设计
© XXX Page 1 of 12 元数据持久化© XXX Page 2 of 12 前言 Raft Log Raft Snapshot 持久化文件 key_value_pairs 其他说明 实现 1、inode、entry 的编码 2、KVStore Q&A 单靠 redis 的 AOF 机制能否保证数据不丢失? redis 的高可用、高可扩方案? redis + muliraft 根据之前讨论的结果,元数据节点的架构如下图所示,这里涉及到两部分需要持久化/编码的内容: Raft Log:记录 operator log Raft Snapshot:将内存中的数据结构以特定格式 dump 到文件进行持久化© XXX Page 3 of 12 Raft Log +------+------------+-----+----------------+---------+----------+ ---+----------------+---------+ 持久化文件 字段 字节数 说明 CURVEFS 7 magic number(常量字符 "CURVEFS"),用于标识该文件为 curvefs 元数据持久化文件 version 4 文件版本号(当文件格式变化时,可以 100% 向后兼容加载旧版持久化文件) size 8 键值对数量 key_value_pairs / 键值对(当0 码力 | 12 页 | 384.47 KB | 5 月前3Python 标准库参考指南 3.10.15
GNU readline 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 6.7.1 初始化文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 6.7.2 行缓冲区 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 6.7.3 历史文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 6.7.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 11 文件和目录访问 399 11.1 pathlib --- 面向对象的文件系统路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 11.1.1 基础使用0 码力 | 2207 页 | 10.45 MB | 9 月前3Python 标准库参考指南 3.8.20
标准运算符替代函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 11 文件和目录访问 367 11.1 pathlib --- 面向对象的文件系统路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 11.2 os.path . . . . . . . . . . . 391 11.5 filecmp --- 文件及目录的比较 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 11.6 tempfile --- 生成临时文件和目录 . . . . . . . . . . . . . . . . . . . . . 风格路径名模式扩展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 11.8 fnmatch --- Unix 文件名模式匹配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 11.9 linecache --- 随机读写文本行0 码力 | 2052 页 | 9.74 MB | 9 月前3Python 标准库参考指南 3.10.15
--- GNU readline 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 6.7.1 初始化文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 6.7.2 行缓冲区 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 6.7.3 历史文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 6.7.4 历史列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 11 文件和目录访问 373 11.1 pathlib --- 面向对象的文件系统路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 11.1.1 基础使用 .0 码力 | 2072 页 | 10.39 MB | 9 月前3Python 标准库参考指南 3.8.20
标准运算符替代函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 11 文件和目录访问 343 11.1 pathlib --- 面向对象的文件系统路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 11.2 os.path . . . . . . . . . . . . 365 11.5 filecmp --- 文件及目录的比较 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 11.6 tempfile --- 生成临时文件和目录 . . . . . . . . . . . . . . . . . . . . . . 风格路径名模式扩展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 11.8 fnmatch --- Unix 文件名模式匹配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 11.9 linecache --- 随机读写文本行0 码力 | 1927 页 | 9.69 MB | 9 月前3Python 标准库参考指南 3.8.20
标准运算符替代函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 11 文件和目录访问 343 11.1 pathlib --- 面向对象的文件系统路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 11.2 os.path . . . . . . . . . . . . 365 11.5 filecmp --- 文件及目录的比较 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 11.6 tempfile --- 生成临时文件和目录 . . . . . . . . . . . . . . . . . . . . . . 风格路径名模式扩展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 11.8 fnmatch --- Unix 文件名模式匹配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 11.9 linecache --- 随机读写文本行0 码力 | 1927 页 | 9.69 MB | 9 月前3
共 133 条
- 1
- 2
- 3
- 4
- 5
- 6
- 14