龙蜥社区高性能存储技术 SIG 11 月运营回顾 | 龙蜥 SIG 原创
高性能存储技术 SIG 目标:高性能存储技术兴趣组致力于存储栈性能挖掘,当前主要聚焦内核 io_uring 技术优化异步 IO 性能,使用持久化内存提升业务单成本性能,容器场景存储技术优化等课题。期望通过社区平台,打造标准的高性能存储技术软件栈,推动软硬件协同发展。
01 本月 SIG 整体进展
本月共合入 Anolis 主线 PR 23 个,包含多个主要组件的性能优化、CVE 修复,以及 bugfix 等。
erofs over fscache 回合上游新特性 shared domain 和 failover。这两个特性是由火山引擎内核与虚拟化团队同学贡献,Jeffle Xu 和 gaoxiang 参与 review。shared domain 特性支持多镜像间共享相同内容的 blob 存储空间;failover 特性支持 daemon 崩溃后恢复。这两个特性的合入,进一步促进了 erofs over fscache 镜像加速方案的生产可用。
xfs 社区长期存在一个 inode extent-to-btree 转换失败,最终导致 fs shutdown 的问题。gaoxiang 通过构造相关场景,并成功抓取到问题发生时的 dump,最终将解决方案发到社区,并提前在 ANCK 中修复。同时,该修复合入后发现 xfstests 用例需要同步更新,正在推社区的过程中。
回合社区主线 fsdax-rmap 相关基础补丁,用于支持 fsdax 场景 tracking shared page。后续将基于该方案进一步支持 xfs fsdax reflink。
凝思软件贡献 DSMS 项目到高性能存储 SIG。当前项目仓库已经构建,并发布整体工作计划,预计 2023.6 发布第一个版本。
02 项目具体进展
1、Anolis OS
cve:CVE-2022-3649(PR813),CVE-2022-2503(PR856),CVE-2022-26365(PR859),CVE-2022-3621(PR858),CVE-2022-3646(PR878)。
erofs:misc fixes for fscache mode(PR881/PR884),use kill_anon_super() to kill super in fscache mode(PR883),支持 fscache shared domain 特性(PR893),支持 fscache failover 特性(PR894/PR915)。
xfs:修复 syscalls/quotactl07 case 失败(PR877),修复 inode extent-to-btree 转换失败导致的 fs shutdown(PR891),fsck 支持恢复日志(PR14)。
fuse:修复 getattr 优化的问题(PR854)。
crypto:SM4 XTS symmetric algorithm support(PR895)。
dax:支持 dax cow(PR905)。
io_uring:sqthread park/unpark race fixes(PR857),don't convert to jiffies for waiting on timeouts(PR868/PR869),移除异步 ioctl 支持(PR923),解决 IORING_ENTER_SQ_SUBMIT_ON_IDLE 与上游特性的冲突(PR924),anolis23 liburing(PR6)
2、容器镜像加速
针对之前回合到龙蜥社区的容器镜像加速方案 (erofs over fscache),从主线社区回合一系列修复补丁。
share domain 特性回合到 ANCK 5.10 内核,支持镜像之间层 (image layer) 粒度的共享,从而节省镜像在磁盘上的存储空间。该特性于 v6.1 合入主线内核。
failover 特性回合到 ANCK 5.10 内核,支持 user daemon 异常退出并恢复之后,容器内对容器镜像的访问可以自动恢复,整体过程对容器无感透明。该特性目前仍在主线社区讨论中,但是该方案已经在字节内部生产环境上部署。
share domain 与 failover 特性回合 ANCK 4.19 内核仍在进行中。
3、用户态存储
ublk 已经开始在分布式存储场景 POC,代码适配中。
目前我们正在为 ublk 开发零拷贝特性,方案设计已初步完成,预计12月下旬完成编码和测试工作。
4、io_uring
Anolis 23 的 liburing 打包中,选型 2.3 上游版本 + 自研特性。
io_uring + async_simple 协程优化目前正在进行初步性能分析,预计 12 月底完成评估。后续计划使能 io_uring 新的高级特性,进一步性能优化。
async_simple git repo:https://github.com/alibaba/async_simple
5、dsms
凝思软件的同学 yxpeng 介绍了 dsms 项目背景,整体架构和工作计划,相关仓库已经创建,预计 2023.6 发布第一个版本。
03 SIG 下一步计划
1、share domain 与 failover 特性回合到 ANCK 4.19 内核。
2、chunk 级别 page cache 共享,以节省内存占用,实现资源超卖,计划合入上游主线 v6.3,然后再回合到 ANCK 5.10/4.19。
3、完成基于 io_uring + ebpf 的 ublk 零拷贝特性开发。
4、io_uring + async_simple 性能调优。
5、dsms 完成分布式存储的选修以及在 Anolis 上的移植与开发测试。
附录:SIG 项目一览
- io_uring
- virtiofs
- 容器镜像加速
- 数据库优化
- 用户态存储
- DSMS
详情内容见高性能存储技术 SIG(链接见文末),欢迎各位感兴趣的开发者加入共建。
SIG 主页链接地址:
高性能存储技术SIG :https://openanolis.cn/sig/high-perf-storage
—— 完 ——
加入龙蜥社群
加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:13600003427或 SIG群:34264214。