高性能存储 SIG 月度动态:DSMS 完成 Anolis 23 预览版发布,欢迎体验和反馈 原创

龙蜥社区OpenAnolis
发布于 2023-7-20 18:16
浏览
0收藏

高性能存储 SIG(Special Interest Group)目标:存储领域的发展历程,本质上是存储介质与软件栈相互促进发展的过程。高性能存储 SIG 致力于存储栈性能挖掘,当前主要聚焦内核 io_uring 技术优化异步 IO 性能,使用持久化内存提升业务单成本性能,容器场景存储技术优化等课题。高性能存储 SIG 期望通过社区合作,打造标准的高性能存储技术软件栈,推动软硬件协同发展。

01 SIG 整体进展

1.本月合入 Anolis 主线 PR 共计 30 个,包含多个重要组件的特性支持,性能优化和 bugfix 等。

2.增强 fuse 特性,如支持 close-to-open 缓存一致性,支持 daemon failover,增强统计和 debug 等,以更好地用于后端分布式文件系统的接入。

3.io_uring nvme passthrough 特性正式合入 ANCK 5.10 主线,将持续跟踪优化。

4.DSMS 完成 Anolis OS 23 构建打包并发布预览版,用户可在 Anolis OS 23 中通过 yum 安装体验。

02 项目具体进展

1)Anolis OS

CVE:CVE-2022-33742(PR1676),CVE-2023-2985(PR1776/PR1777),CVE-2023-26607(PR1778/PR1779)

erofs:支持 erofs + virtiofs + dax 模式(PR1747)

io_uring:支持 cqe32(PR1684),支持 nvme passthrough(PR1681), fio 配套支持 nvme passthrough(PR8/PR9),liburing 配套支持(PR10/PR11)

ext4:回退 ext4: fix bad checksum after online resize(PR1704),修复 ext4 bigalloc 多个问题(PR1669)

xfs:修复 xfs/512 失败问题(PR1822),修复 generic/571 失败问题(PR1824)

fuse:特性增强,如支持 cto 语义,支持 failover,增强统计和 debug 等(PR1570/PR1670),修复 fuse_update_stats() 引入的 array-index-out-of-bounds 问题(PR1788/PR1790)

overlayfs:修复 overlay/077 失败问题(PR1774),修复特定场景 copy up 报权限不足的问题(PR1801/PR1802),修复 generic/591 失败问题(PR1823)

block:优化 iops 限流特性(PR1696),支持细粒度的 PR 权限(PR1743),修复 virtio-blk discard 问题(PR1794/PR1798)

nfs:修复 nfs-server crash 问题(PR1591),修复 __nfs42_ssc_open() UAF 问题(PR1780)

2)fuse 增强

在 sysfs 下增加调试接口,输出打印特定 fuse 文件系统下所有已经发送给用户态 daemon 等待处理的请求。

在 sysfs 下增加数据统计接口,统计输出特定 fuse 文件系统下各类型请求的数量以及处理耗时。

增强 cache(cache=always|auto)模式下的缓存一致性,以适用于依赖强一致性的分布式文件系统后端,例如 nfs:

  • 用户态 daemon 可以通知 fuse client 使一个目录下的所有目录项无效(invalidate all direct dentry)。
  • 实现 cto (close-to-open)缓存一致性模型,包括数据和元数据的 flush-on-close 和 invalidate-on-open 语义。
  • 增强 fuse 故障恢复(failover)模式下的缓存一致性模型。

3)容器镜像

重构 erofs xattr 实现,以支持后续的增强特性,目前已经合入社区上游,计划在 Linux v6.5 中发布。

开发 erofs xattr name bloom filter 特性,以加速 negative xattr lookup 的性能,shared xattr 镜像执行“ls -lR”负载下可优化 ~20% 性能,目前仍在迭代中。

4)io_uring

通过 io_uring 支持 cqe32 和 generic per-namespace char device(ngXnY)的引入,ANCK 已合入 nvme passthrough 的支持。新增的 io_uring_cmd 包括:

  • NVME_URING_CMD_ADMIN
  • NVME_URING_CMD_ADMIN_VEC
  • NVME_URING_CMD_IO
  • NVME_URING_CMD_IO_VEC

对应的返回值存放在 cqe32 扩展的域中。该特性的优势在于,用户态可借助 ioctl 和 io_uring_cmd,直接与 nvme 驱动打交道,绕过 block 层的处理逻辑,从而提升性能。目前用户态 fio 工具和 liburing 库已同步配套支持。

在业务环境验证过程中,我们发现了几个问题:

  • 下发大于设备支持的最大 IO 时会返回失败,与上游社区沟通确认,由于是直接与设备驱动打交道,需要应用做好处理,属于设计约束。
  • iostat 统计不到相关数据,待进一步跟踪分析。

5)DSMS

截止目前,dsms 的一期开发工作全部完成,并完成 Anolis OS 23 的构建打包和包引入申请,已随 Anolis OS 23 发布预览版。

欢迎用户安装体验,相关问题可以通过 gitee 仓库(https://gitee.com/anolis/dsms)或 bugzilla 反馈。

dsms-storage 子仓库目前遗留一些社区提出的 cve 漏洞待修复。

03 下一步计划

1.erofs xattr name bloom filter 及 deflate 压缩特性合入社区主线,预计在 Linux v6.6 发布。

2.开发 erofs-utils 的 tarfs merge 功能,以支持 erofs 通过 tarfs 模式直接挂载 OCI 容器镜像。

3.跟踪解决 nvme passthrough 模式下 iostat 失效问题,以及引入 fixed buffer 等优化。

4.dsms-storage cve 漏洞修复和用户反馈问题跟踪。

相关链接:

高性能存储 SIG 主页:https://openanolis.cn/sig/high-perf-storage

注:更多龙蜥 SIG 月度动态可点击这里查看。

—— 完 ——

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏
回复
举报
回复
    相关推荐