NJSD eBPF 技术文档 - 0924版本ceph / gluster • LD_PRELOAD重载⽂件系统系统调⽤ • vpp / f-stack / DirectFUSE • Kernel版本实现 • BentoFS 基于rust的实现采⽤LD_Preload⽅式瓶颈分析 • 环境 • FUSE daemon使⽤ passthrough_ll 调⽤底层ext4 • 进程共享内存通信延迟10us+ • others0 码力 | 20 页 | 7.40 MB | 6 月前3
CurveFs 用户权限系统调研buffered) userspace read/write requests (limited to one per * thread), asynchronous read requests (Linux's io_submit(2) * call actually blocks, so these are also limited to one per * thread). */ unsigned 未实现任何权限检查的文件系统通常 应在内部添加此选项,可与参数‘allow_other’一起达到共享文件访问控制。© XXX Page 15 of 33 # LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.1 ./bazel-bin/curvefs/src/client/fuse_client -f -o volume=/fs -o allow_other -o ;或者可以在用户态文件系统中自由的实现访问控制策略。 可以达到共享文件系统下的基于内核权限检查的文件访问控制 二、文件系统权限管理© XXX Page 16 of 33 // example in linux // --------- drwxr-xr-x 3 wanghai01 neteaseusers 4096 Jul 16 10:41 . drwx------ 17 wanghai01 neteaseusers0 码力 | 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
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
共 6 条
- 1













