实际场景中,云原生存储面临的 7 个挑战
作者 | Eric Li (壮怀) 阿里巴巴云原生存储负责人
引言
随着云原生应用对可迁移性、扩展性和动态特性的需求,对云原生存储也带来了相应的密度、速度、混合度的要求,所以对云存储基本能力之上又提出了在效率、弹性、自治、稳定、应用低耦合、GuestOS 优化和安全等方面的诉求。参考《云原生存储和云存储有什么区别?》
新的企业负载/智能工作负载容器化、迁云、存储方面遇到的性能、弹性、高可用、加密、隔离、可观测性及生命周期等方面的问题,不但需要存储产品层次的改进,还需要在云原生的控制/数据平面的改进,推进云原生存储和云存储的演进。下文将分别介绍一下问题场景及问题,探讨可行的解决方案,最终可以得出云原生存储、云存储目前可以做什么和未来还需要做什么。
存储性能
长时延增加
场景
高性能计算场景中,集中处理批量数据,通过容器集群,同时启动数千 Pod,弹出数百 ECS 对共享性文件系统读写。
问题
重负载终负载下时延增加,高延迟毛刺增多,读写稳定性不足。
解决方案
- 分散负载到多文件系统,通过容器编排分散 IO 到多文件系统
- 存储产品的盘古 2.0 改造
集中式高吞吐写对共享存储池冲击
场景
高性能计算场景中,集中处理批量数据,10Gbps 读写请求进入同一存储集群。
问题
同一存储集群中的带宽挤占,造成访问质量下降。
解决方案
- 分散负载到多文件系统和多个存储集群/多个可用区,通过容器编排分散 IO 到多文件系统;
- 使用独占高性能并行文件系统。
峰值吞吐不足
场景
大规模生物数据处理, 文件数目少,峰值吞吐高 10Gbps-30Gbps,请求密集 1W/s。
问题
接近独占集群的极限带宽。
解决方案
- 读写分流,分流读请求到 OSS,写请求负载分流到独占文件系统和本地/远程块存储,通过容器编排分散 IO 到多文件系统;
- 使用应用层分布式缓存降低网络读 IO;
- 存储产品的盘古 2.0 改造。
时延增加导致 GPU 等待
场景
多机多卡 GPU 训练,直接读取 OSS 数据,读密集型。
问题
时延增加导致 IOwait 和 GPU 等待。
解决方案
- 应用层透明 POSIX 读访问 OSS;
- 使用应用层分布式缓存降低网络读 IO。
存储弹性
场景
- 数据库扩容, MySQL and etc;
- 元数据管理应用在线扩容 Zookeeper/etcd;
- 本地盘存储容量无法扩容。
解决方案
- 云盘在线扩容,应用控制面文件系统/逻辑卷离线,在线扩容能力;
- 单机云盘挂载密度;
- 存储产品 ESSD 的替换使用。
存储高可用
场景
- 应用运维,系统运维;
- 块存储随容器迁移的稳定性和可发现性。
解决方案
- 控制平面声明式存储快照,备份,定时快照备份,本地快照加速备份和恢复;
- 控制平面云盘 SerialNum 的可发现性改造。
存储的加密
场景
- 用户应用的全链路数据加密需求;
- 操作系统盘加密。
解决方案
- 产品存储的 CMK,BYOK 支持
- 控制平面的加密声明支持
- RAM 权限的最小化控制
存储的隔离性
场景
- 单盘多应用共享,单机日志盘块存储切分
- 单块本地盘/云盘吞吐能力不足
- 文件系统多租户环境的容量配额
- 集群级文件系统共享访问的权限控制
解决方案
- 控制面 LVM 切分,控制面块存储 blkio buffer IO 应用级限速
- 控制面 LVM 多盘聚合和条带
- 存储产品共享文件系统的目录级 Quota
- 控制面文件系统的目录级 ACL
存储的可观测性
场景
多租户 Zookeeper/etcd,租户/应用级的 IO 指标监控和预警。
解决方案
- 控制面应用级 IO Metrics 采集能力
- 控制面设备级 IO Metrics 采集能力
- 控制面挂载点级 IO Metrics 采集能力
存储的生命周期
场景
共享文件系统/缓存系统的声明式创建和删除。
解决方案
- Operator: 云盘/本地盘 (TiDB)
- Operator: 文件系统,CPFS
- Operator: 对象存储
云原生存储 v2
针对以上在新的计算模式下,存储方面遇到的性能,弹性,高可用,加密,隔离,可观测性,生命周期等方面的问题,不但是需要存储产品层次的改进,更需要在云原生的控制/数据平面的改进,在不久的将来实现稳定,安全,自治,和效率并举的云原生存储 v2。
- 稳定:阿里云存储的全品类支持可观测性, Flexvolume and CSI plugins/IO metrics (CSI for 1.14);
- 安全:全连路数据存储的可靠/可信存储支持,CSI 快照加密,系统盘加密;
- 自治:云盘快照 /本地快照 ,离线在线的存储扩容能力, 元数据自动发现;
- 效率:I/O 隔离 、可伸缩性/云盘再次分割提升密度/分布式存储缓存。
需要在云原生应用层、存储云产品层、底层存储适配和存储核心层都需要做相应的改进和提升才有可能提供更加稳定,安全,自治和高效的面向应用的云原生存储。
总结
- 云原生存储是云存储 UI 和效率等能力的集合;
- 分层存储,不重新发明轮子;
- 新的工作负载推进云原生存储和云存储的演进,云原生控制平面实现效率,自治方面能力,从数据面提升存储稳定和减小安全隐患,云存储继续夯实性能,容量,弹性,密度等基础能力,共建云原生环境下的存储生态。
在云原生存储 v2 的演进过程中,仍然需要容器团队和存储团队,通力合作,共同提升的云原生时代的存储能力。
“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的公众号。”