写点什么

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

  • 2023-07-20
    北京
  • 本文字数:1949 字

    阅读完需:约 6 分钟

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

高性能存储 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 月度动态可点击这里查看。


—— 完 ——

发布于: 刚刚阅读数: 5
用户头像

还未添加个人签名 2021-07-20 加入

OpenAnolis龙蜥社区 由国内外头部企业联合建立的操作系统开源社区。加入我们,一起打造面向未来的开源操作系统。 社区官网:openanolis.cn|微信公众号:OpenAnolis龙蜥

评论

发布
暂无评论
高性能存储 SIG 月度动态:DSMS 完成 Anolis 23 预览版发布,欢迎体验和反馈_高性能存储_OpenAnolis小助手_InfoQ写作社区