Open Flags 调研libfuse open open flags 在curvefs上的测试 open flags 实现方式 整体flags支持方案 具体flag的实现方案 O_TRUNC I/O模式类 O_DIRECT O_SYNC, O_DSYNC O_NONBLOCK(O_NDELAY ), FASYNC, O_TMPFILE 结论 参考文献 open接口原型 # man page open, openat, creat 00000400 #define O_TRUNC 00001000 #define O_APPEND 00002000 #define O_NONBLOCK 00004000 #define O_SYNC 00010000(before linux 2.6.33) 04010000(after linux 2.6.33) #define O_DSYNC 00010000(after linux 2 O_EXCL, O_NOCTTY, O_NOFOLLOW, O_TMPFILE, and O_TRUNC file status flags: O_APPEND, FASYNC, O_DIRECT, O_SYNC(O_DSYNC), O_LARGEFILE, O_NOATIME, O_NONBLOCK, O_PATH flags的含义 O_RDONLY: 只读 : 只写 O_WRONLY : 读写0 码力 | 23 页 | 524.47 KB | 6 月前3
CurveFS Client 概要设计如果同时指定了O_CREAT,而文件已存在,则会出错,用此测试文件是否存在,如果不存在则创建此文件。 O_TRUNC 如果文件存在,且为只写或只读打开,则将其文件长度截短为0 O_DSYNC sync数据和必要元数据(不影响读取刚写入的数据) O_SYNC sync数据和所有元数据 O_DIRECTORY 目录 O_DIRECT 直接IO open的主要逻辑: 根据inode id,从mds获取inode所在copyset,metaserver0 码力 | 11 页 | 487.92 KB | 6 月前3
Curve for CNCF Maincontainer-native storageDatabase • Database services orchestrated in the cloud • Curve can backup / sync data to slave cloud • When master cloud failure happens, Database service can move to the slave Node in PG SLOW STORAGE/DISK FAILURE INFLUENCE without I/O disruption I/O jitter occasionally CAN SYNC WITH REMOTE DISK SERVER Y NI/O Jitter (vs. Ceph) 3 replicas with 9 nodes cluster each node has0 码力 | 21 页 | 4.56 MB | 6 月前3
Curve核心组件之chunkserver1、追加写改为覆盖写 2、写入时4KB对齐 3、改为O_DIRECT模式 How? Why?新版本ChunkServer性能优化 1、模拟braft日志落盘方式的demo程序测试结果,latency为调用sync花费的时间(第一次新写,第二次覆盖写); 2、因为在请求4KB的情况下,写入的大小带上头部后是4120,是不对齐的,所以又测试了一下把写入大小改成4096的情况:新版本ChunkServer性能优化 追加写改为覆盖写(避免每次写的时候改变元数据,减少IO放大) 2. 写入时4KB对齐(4KB不对齐的情况下,每次写入都会有读请求,从而影响效率) 3. 改为O_DIRECT模式(改为Direct模式可以避免显式调用sync)欢 迎 大 家 参 与 C U R V E 项 目 ! • github主页: https://opencurve.github.io/ • github代码仓库: https://github0 码力 | 29 页 | 1.61 MB | 6 月前3
Curve文件系统空间分配方案) 本地文件系统空间分配相关特性 局部性 尽量分配连续的磁盘空间,存储文件的数据。这一特性主要是针对HDD进行的优化,降低磁盘寻道时间。 延迟分配/Allocate-on-flush 在sync/flush之前,尽可能多的积累更多的文件数据块才进行空间分配,一方面可以提高局部性,另一方面可以降低磁盘碎片。 Inline file/data 几百字节的小文件不单独分配磁盘空间,直接把数据存放到文件的元数据中。0 码力 | 11 页 | 159.17 KB | 6 月前3
Curve文件系统元数据持久化方案设计不能保证数据 100% 不丢失(RDB 持久化更不能),结论就是单靠 redis 无法保证数据 100% 不丢失(这主要是 redis 基于性能考量,毕竟纯内存数据库,如果利用 WAL 每次写文件再 sync,那么性能就会下降很多) 所以,单靠 redis 的方案是不行了. redis 的高可用、高可扩方案? 主要是 redis cluster + 主从复制 (或者第三方 codis + 哨兵)0 码力 | 12 页 | 384.47 KB | 6 月前3
CurveFS Copyset与FS对应关系19 一个fs的meta partition使用第一个叫做MetaWrapper的结构体组织起来© XXX Page 7 of 19 type MetaWrapper struct { sync.RWMutex cluster string localIP string volname string ……0 码力 | 19 页 | 383.29 KB | 6 月前3
共 7 条
- 1













