PFS SPDK: Storage Performance Development Kit●chunk不再被卷使用时,需要回归chunk pool,为了安全也需要填0。 ●使用nvme的时候,可以直接使用nvme write zero命令,不需要传递 大块数据(全是0),减少了nvme传输带宽,而且nvme在垃圾回收上 可以优化,例如只是标记某块为0, 而不用实际写,gc时不需要搬运。10/17/22 12 nvme读写的内存对齐要求 ●NVME读写传输描述分两种规格:PRP和SGL。 PRP是第一个版本,0 码力 | 23 页 | 4.21 MB | 6 月前3
Curve文件系统空间分配方案2 of 11 背景 本地文件系统空间分配相关特性 局部性 延迟分配/Allocate-on-flush Inline file/data 空间分配 整体设计 空间分配流程 特殊情况 空间回收 小文件处理 并发问题 文件系统扩容 接口设计 RPC接口 空间分配器接口 背景 根据 ,文件系统基于当前的块进行实现,所以需要设计基于块的空间分配器,用于分配并存储文件数据。 CurveFS方案设计(总体设计,只实现了部分) length),以offset为key进行排序(这里可以用map或者btree对所有的free extent进行管理)。 当前设计不考虑持久化问题,空间分配器只作为内存结构,负责空间的分配与回收。在初始化时,扫描文件系统所有inode中已使用的空间。 空间分配流程 在新文件进行空间分配时,随机选择level1中标记为0的块,先预分配给这个文件,但是并不表示这个块被该文件独占。© XXX 则,可以从level1中随机选择一个可用的块进行分配© XXX Page 5 of 11 3. 1. 2. 1. 2. 。尽可能合并多个块分配给同一个文件。 空间回收 空间回收主要是一个extent合并的过程,有以下几种情况: 文件释放了一个完整的块,则直接将level1中对应的bit置为0。 文件释放了一小段空间,则尝试与level2中的extent进行合并。0 码力 | 11 页 | 159.17 KB | 6 月前3
curvefs client删除文件和目录功能设计,则不会立即将该文件彻底删除,而是将其类型修改为TYPE_TRASH并且将该节点从文件树移除然后放到trash链表中表示该文件已经进入回收 若其trashtime大于0 站。 通过META文件系统来访问trash 通过trash机制,可实现文件的恢复UNDEL 回收站实现了一个timer,定期判断trashtime,执行定期清理回收站 清理时,当文件仍处于打开状态,则还需要进入下sustained/reserve中。 sustained机制/reserve机制 首先我们可以确定以下几个设计点: 删除的大致过程如下,首先移除dentry,然后移除inode,可以容忍只存在inode,也就是孤儿inode情况,这部分内容见下面遗留问题。 必须要实现(至少)一个trash机制,以作为回收站,不论是后续做UNDEL,还 。 是应对打开的文件被其他进程删除的情况 必须实现某种机制,可以查看清理trash中的inode。 孤儿节点只能在metaserver去定期清理,不会在client0 码力 | 15 页 | 325.42 KB | 6 月前3
Curve设计要点采用append的方式写入数据组织形式 • AppendFile • 地址空间到—>chunk: 1 : 1 • 采用append的方式写入 • 支撑多副本对象存储 通过文件/特殊目录隔离 挖洞即时回收 单独的元信息的存储方案数据组织形式 • AppendECFile • 地址空间到—>chunk: 1 : 1 • 数据chunk + 校验chunk数据组织形式 • AppendECFile 地址空间到—>chunk: 1 : 1 • 数据chunk + 校验chunk • 支撑EC存储场景 多个单副本的 chunk 形成 EC 组 一个对象作为 EC 组的一个满条带 挖洞即时空间回收拓扑 • 管理和组织机器 • 软件单元:chunkserver • 物理机:server • 故障域:zone • 物理池:poolIO流程 client MDS leader Chunk0 码力 | 35 页 | 2.03 MB | 6 月前3
CurveFS方案设计索引设计© XXX Page 11 of 14 1. 2. 3. 4. 文件空间管理 文件空间管要解决的问题是:一个文件的数据如何存储?物理空间如何分配给不同的文件,如何从不同的文件回收?从这两个角度出发,分别调研了以下系统的空间管理策略: bluestore: CurveFS空间分配调研#bluestore chubaofs: CurveFS空间分配调研#chubaofs moosefs: PolarFS 上述fs可以分为两类 chubaofs/moosefs 属于利用本地文件系统去构建分布式fs。一个文件的数据对应本地文件系统上的一个文件,通过本地文件系统的打洞功能实现部分空间的回收。 blustore/polarfs 直接在块设备上构建分布式fs。一个文件的数据对应块设备上某个空间,因此需要知道块设备的哪些空间是空闲的,哪些是已经分配出去的, 需要一个空间分配管理器。blus0 码力 | 14 页 | 619.32 KB | 6 月前3
Curve 分布式存储设计擎 2. 性能 1. 完善RDMA/SPDK方案,发布稳定版本 2. 更高性能硬件选型、适配及性能调优 3. 大文件读写性能优化,RAFT优化,降低写放大 3. 功能 1. 文件存储支持回收站/生命周期管理/配额/用户权限等 2. 支持NFS、CIFS/SMB、HDFS等协议 3. 块存储支持按存储池创建卷Curve 社区介绍 1. Curve的成长离不开社区贡献者的支持和参与。非常欢迎广大0 码力 | 20 页 | 4.13 MB | 6 月前3
CurveFS对接S3方案设计std::atomicchunkId_;© XXX Page 10 of 11 }; 关键流程 关键流程包括S3ClientAdaptor的init,write,read,delete和后台元数据整理以及数据回收流程 init流程 1.将conf中blockSize,chunkSize,metaServer和allocateServer ip保存在S3ClientAdaptor中 2.将conf中的S 0 码力 | 11 页 | 145.77 KB | 6 月前3
共 7 条
- 1













