容器和 Kubernetes 的发展成熟为应用的云原生化提供最基础的支撑,从而使企业最大化利用云上的资源。存储作为应用运行的基石,也在服务云原生化的过程中不断演进。
01
容器化应用 I/O 性能优化挑战
Aliware
目前在云上的容器化应用场景选择存储方案时,通常会使用块存储(EBS),文件存储(NAS,CPFS,DBFS)和对象存储(OSS)三种,POSIX 语义的文件系统是面向容器存储使用场景最直观和最友好的方式,通常也是容器场景下使用最多的存储访问方式。另一方面,为了实现集群级别的存储编排能力,K8s 在维护容器组(Pod)的生命周期中会将依赖的存储卷以文件系统的形式挂载到容器内,从而从应用角度可以无差别地读写块存储、文件存储和对象存储的外置存储。
现在,云原生应用的规模化趋势日益明显,在大数据分析、AI 等数据密集型场景也得到越来越广泛地应用,这些场景对 I/O 性能的要求很高。而现实情况是,云上的文件存储和对象存储一般都是以 TCP 和 HTTP(s)协议提供存储服务,是典型的客户端服务器(CS)模式,传统的服务端监控是通过发起者的 IP/连接来区分不同的应用,但在容器形式的部署中一个虚拟机/物理机节点可以部署数十个到数百个容器,一个应用可以跨多个主机。因此,传统的服务端监控在现代的容器化部署中不能提供足够的观测粒度和维度来分析不同应用的 I/O 特性。
02
基于 ACK CNFS 存储卷的 I/O 可观测性框架
Aliware
为了帮助企业快速定位引发容器化应用 I/O 瓶颈的问题,保证业务持续稳定运行,阿里云容器文件存储 ACK CNFS 提供了面向应用和集群维度的 I/O 可观测性框架, 包括 POSIX 细粒度操作可观测性、容器组粒度的可观测性、跨机多副本的应用级可观测性,以及集群维度针对文件系统和对象存储的聚合访问特性等,帮助用户构建统一的客户端 I/O 性能问题监测和分析能力
01
什么是 CNFS?
容器文件存储(CNFS)是对文件存储和对象存储的生命周期管理逻辑抽象对象,通过提供 CNFS-OSSFS,CNFS-NAS,CNFS-CPFS,CPFS-DBFS 等存储类(StorageClass)来实现对云上 OSS Bucket,NAS FileSystem,CPFS,DBFS 的全生命周期管理和动态卷(PV)的增删查改(CRUD):
- CNFS-OSSFS 今天已经被广泛地使用在大数据,自动驾驶,生物计算领域,作为访问 OSS 的主要手段。
- CNFS-NAS 已经与弹性加速客户端(Elastic Acceleration Client)深度整合,在 NFS 客户端基础上优化了多连接传输、支持了本地缓存/分布式缓存,预读预写功能加速文件读写,目前已经在 CICD,机器学习,生物计算等领域广泛使用。
- CNFS-CPFSv2 作为低延迟,百万级文件访问的高性能存储,也已经在高性能计算,自动驾驶,生物计算等领域广泛使用。
- CPFS-DBFS 已经作为数据库服务提供共享数据库文件存储,有效降低了数据库系统的多副本成本,目前已经在云上数据库领域 DBaaS 使用。
02
容器存储卷 I/O 问题类型
本文会以对象存储 OSS 访问为例&#x