CurveFs 用户权限系统调研FUSE_CAP_POSIX_ACL; ... se->op.init(se->userdata, &se->conn); } // libfuse include/fuse_kernel.h // This is the first request sent by the kernel to the daemon. It is used to negotiate the protocol version and other filesystem does not specify a * limit, the maximum size of read requests will still be * limited by the kernel. * * NOTE: For the time being, the maximum size of read requests© XXX Page 11 of 33 * must max_read; /** * Maximum readahead */ unsigned max_readahead; /** * Capability flags that the kernel supports (read-only) */ unsigned capable; /** * Capability flags that the filesystem wants0 码力 | 33 页 | 732.13 KB | 6 月前3
Open Flags 调研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.6.33) #define FASYNC 00020000 #define O_DIRECT 00040000 #define O_NOFOLLOW 00400000 #define O_NOATIME 01000000 #define O_CLOEXEC 02000000 #define O_PATH 010000000(since linux 2.6.39) #define O_TMPFILE 020000000|O_DIRECTORY #define O_NDELAY O_NONBLOCK(O_NDELAY是在System V的早期 每次write都等到物理I/O完成,包括write引起的文件属性的更新。 O_SYNC O_DSYNC: 每次write都等待物理I/O完成,但是如果写操作不影响读取刚写入的数据,则不等待文件属性更新(在linux 2.6.33之前只有O_SYNC flag, 但是在绝大多数文件系统中对O_SYNC的实现都是O_DSYNC的含义,在2.6.33版本支持了O_DSYNC flag,且值使用原O_SYNC的值,0 码力 | 23 页 | 524.47 KB | 6 月前3
NJSD eBPF 技术文档 - 0924版本⽀持低延迟的⽂件数据访问Curve⽂件系统⾯临的问题 • ⽤户态实现 • 稳定性/可靠性⾼ • 容易更新及维护 • 基于FUSE提供POSIX兼容⽂件接⼝ • 问题 • 相对kernel⽂件系统的实现(ext4, xfs)性能 差异⼤,延迟⾼FUSE⽂件IO读写流程 • 场景1 pytorch example word_language_model • LOOKUP inode 基于FUSE的实现 • curve / ceph / gluster • LD_PRELOAD重载⽂件系统系统调⽤ • vpp / f-stack / DirectFUSE • Kernel版本实现 • BentoFS 基于rust的实现采⽤LD_Preload⽅式瓶颈分析 • 环境 • FUSE daemon使⽤ passthrough_ll 调⽤底层ext4 • CacheStatus, blocklist[ ] {fd, chunk, size, kernel file, ver} • ReadCache map BPF_MAP_TYPE_HASH • key inodeid • value CacheStatus, filemap[ ] {fd, chuk, size, kernel file, ver} • update list map BFP_M0 码力 | 20 页 | 7.40 MB | 6 月前3
curvefs client删除文件和目录功能设计这部分内容在fuse的相关接口中也有描述如下: /** * Forget about an inode * * This function is called when the kernel removes an inode * from its internal caches. * * The inode's lookup count increases by one should be decreased. * * Inodes with a non-zero lookup count may receive request from * the kernel even after calls to unlink, rmdir or (when * overwriting an existing file) rename. Filesystems will be followed closely by forget * unless the file or directory is open, in which case the * kernel issues forget only after the release or releasedir * calls. * * Note that if a file system0 码力 | 15 页 | 325.42 KB | 6 月前3
TGT服务器的优化TGT 服务器的优化块设备协议 • NBD • Linux专有块设备协议 • iSCSI • 广泛支持的外部设备协议(块,磁带等)Curve云原生存储支持块设备 • 通过NBD,只支持Linux • 通过SDK API,目前只支持Linux • PFS • 扩大使用范围 • 通过iSCSI支持更多系统,例如Windows, 类UNIX系统等,使用两项基础 技术 • TCP/IP 使用廉价硬件搭建。iSCSI软件 • Client端: iscsi initiator,系统自带 • Linux open-iscsi • Windows iSCSI 发起者 • 服务器端 • 必须是CurveBS原生支持的平台,因为需要curve原生接口,目前是LinuxiSCSI target服务器 • LINUX LILO • 一般用于输出内核本地块设备 • TCMU • 作为LILO支持用户态的接口 1 --lun 1 --params disksize=auto • Initiator 重新发送SCSI READ CAPACITY命令 • Windows 磁盘管理器refresh • Linux open-iscsi, iscsiadm --mode node -RDPO & FUA • DPO是disable page out的缩写,FUA是force unit access的缩写 •0 码力 | 15 页 | 637.11 KB | 6 月前3
CurveFS S3本地缓存盘方案loadAllCacheReadFile() {}; private: std::string CacheReadDir_;© XXX Page 8 of 9 }; 方案设计思考 本地硬盘如何管理 借用linux本地文件系统进行管理,存储进本地硬盘的内容以文件的形式来表现。 配置一个目录用于本地硬盘的文件管理,对作为缓存盘的本地硬盘进行格式化并挂载到该目录(如果没有缓存盘,那一般而言就是系统盘本身了)。0 码力 | 9 页 | 150.46 KB | 6 月前3
新一代云原生分布式存储所有副本写完成返回客户端 • 延迟取决于所有副本中最慢的那一个块存储场景 为云主机提供云盘,云盘提供随机读写、快照(数据备份,灾备使用)、镜像(模板,自定义)功能。块存储场景 为物理机提供块设备 Linux IO栈 应用程序 -> 文件系统 -> 块设备层 -> 不同协议/驱动使用中的问题 • io抖动(一致性协议): 异常场景(比如阵列卡一致性巡检,坏盘,慢盘,网络异常),服务升级 • 性能0 码力 | 29 页 | 2.46 MB | 6 月前3
共 7 条
- 1













