CurveBS IO Processing Flowvirtual block device in CurveBS1. CurveBS maps the virtual block device to a file. For example, block device /dev/sda corresponds to file /foo/bar in CurveBS 2. The address space of the block device capability to support 4KB aligned read/write on block devices.CurveBS file structure of virtual block device As mentioned above, CurveBS maps virtual block devices to files. Let's look at the metadata If the replication group membership is saved for each chunk, the number of metadata will be large. 2. Example Reduce the number of replication groups. The size of chunk is usually small, such as0 码力 | 13 页 | 2.03 MB | 6 月前3
 CurveFs 用户权限系统调研just the # presence of the option. user_allow_other # mount_max = n - this option sets the maximum number of mounts. # Currently (2014) it must be typed exactly as shown # (with a single space before and */ unsigned want; /** * Maximum number of pending "background" requests. A * background request is any type of request for which the * total number is not limited by other means. As of kernel max_background; /** * Kernel congestion threshold parameter. If the number of pending * background requests exceeds this number, the FUSE kernel module will * mark the filesystem as "congested". This0 码力 | 33 页 | 732.13 KB | 6 月前3
 Open Flags 调研0140000 socket S_IFLNK 0120000 (symbolic link) S_IFREG 0100000 S_IFBLK 0060000 (block device) S_IFDIR 0040000 S_IFCHR 0020000 (character device) S_IFIFO 0010000 (fifo)© process. Valid replies: fuse_reply_open fuse_reply_err Parameters req request handle ino the inode number fi file information© XXX Page 7 of 23 open flags 在curvefs上的测试 在现在的curvefs上进行open相关flag测试,发现已经支持部分open0 码力 | 23 页 | 524.47 KB | 6 月前3
 OID CND Asia Slide: CurveFScapacity expansion ○ capacity imbalance ○ apps bundled with data locations ● Requirements for elastic block storage ● Requirements for file systemopen-source storage ● Requirements ○ Cloud Native ○ Easy Community You can take awayDesign objectives App scenario & requires ● Database scenario ● Elastic block Storage for KVM / Kubernetes / iSCSI Design objectives ● Thin provisioning storage pools ● High Data availability of 6 nines can be achievedCloud native Support Currently we offer CSI Driver for block storage to provide PV/PVC resources on KubernetesAgenda Why develop storage Design objectives0 码力 | 24 页 | 3.47 MB | 6 月前3
 CurveFS对接S3方案设计metaserver.proto space相关数据结构和proto 关键流程 init流程 write流程 read流程 整体架构 S3ClientAdaptor模块:负责将文件数据进行chunk,以及block的拆分为s3的object,并写入/读取s3的object。 S3-allocator模块:负责分配s3-object唯一标识。© XXX Page 3 of 11 整体思路 s3不需要释放空间,可 直接删除对应s3 object) 文件首先会按照chunk进行拆分,每个chunk固定64M/1G(待定),chunk内部会划分为多个block,每个block最大4M,每个block对应s3上一个object。 s3上对象已chunkid_indexblock_version进行命名,元数据则已S3ChunkInfo(见数据结构)的方式存储 对于overlap的场景,会将inode中的versio+1,但是不会处理被overlap的相关数据,由后台进行处理。 2.如果是带了append flag则在writechunk的时候会调用s3的append接口追加写到同一个block object。 3.更新inode中s3元数据的时候,现在只会将可以直接合并的S3Info进行了合并,后面需要考虑如果S3Info太大,需要进行rewrite将元数据进行重新合并 4.inode0 码力 | 11 页 | 145.77 KB | 6 月前3
 Curve文件系统元数据管理存,元数据服务的扩展性受限于内存,而且在元数据服务启动的 时候,需要等待一段时间加载内存。 一种是元数据需要全部加载到内存,这种情况下,元数据只需要加载一小部分主要的元数据,比如说super block这种,剩下的比如inode,dentry这种,按需加载,而且使用淘汰机制,内存中不常用的元数据可以淘汰出去。这种方式,扩展性好,元数据服务的扩展性不受限于内存,服务上的内存只有几百GB,而硬盘空 间按照20块1 这里只需要增加一台dentry,然后inode中link++。同样这里的操作也分为两步,事务性也需要处理,留到下半年考虑。 6、curve文件系统的多文件系统的设计 curve文件系统设计上支持多文件系统。文件系统的super block元数据设计。 多文件系统相对于单文件系统,多了一个fsid,在上面的inode和dentry中,需要添加相应的fsId字段。并且在查询inode和dentry的过程中,也需要带上fsId字段进行查询。 password; }; // proto enum FSErrorNum { FS_OK = 0, // TODO FS_UNKNOWN = 1000, }; // S3super block class VolumeFs { public: // open VolumeFs(VolumeInfo volumeInfo, std::string name); uint64_t GetId();0 码力 | 24 页 | 204.67 KB | 6 月前3
 Curve Cloud NativeCloud native • Curve is composed of two parts • Curve Block Storage (CurveBS) • CurveBS: a high performance cloud native distributed block storage • Curve File System (CurveFS) • CurveFS: a high0 码力 | 9 页 | 2.85 MB | 6 月前3
 Curve for CNCF Mainis an distributed storage system • Components • Curve Block Storage (CurveBS) • CurveBS: a high performance cloud native distributed block storage • Curve File System (CurveFS) • CurveFS: a high0 码力 | 21 页 | 4.56 MB | 6 月前3
 Curve核心组件之Client - 网易数帆MDSClient:负责与MDS交互,挂卸载卷、获取元数据信息 CLIENT整体架构QEMU: 实现了QEMU block与Client的对接层 向cinder/glance提供了Python API https://github.com/opencurve/curve-qemu-block-driver NBD: 实现了Curve-NBD,与内核NBD模块进行交互 可以作为容器的数据存储0 码力 | 27 页 | 1.57 MB | 6 月前3
 Curve支持S3 数据缓存方案小io每次都要和s3交互,导致性能非常差。 因此需要通过Cache模块解决以上2个问题。 整体设计 整个dataCache的设计思路,在写场景下能将数据尽可能的合并后flush到s3上,在读场景上,能够预读1个block大小,减少顺序读对于底层s3的访问频次。从这个思路上该缓存方案主要针对的场景是顺序写和顺序 读,而对于随机写和随机读来说也会有一定性能提升,但效果可能不会太好。 元数据采用2层索引 由于chu ,这里就要求inodeId是永远不可重复。 读写缓存分离 读写缓存的设计采用的是读写缓存分离的方案。 写缓存一旦flush即释放,读缓存采用可设置的策略进行淘汰(默认LRU),对于小io进行block级别的预读。 即读写缓存相互没影响不相关, 缓存层级 缓存层级分为fs->file->chunk->datacache 4层,通过inodeId找到file,通过index找到chunk,然后0 码力 | 9 页 | 179.72 KB | 6 月前3
共 17 条
- 1
 - 2
 













