软件|阿里云徐立:面向容器和 Serverless Computing 的存储创新( 二 )


镜像加速的技术创新 阿里巴巴容器规模化部署的挑战

阿里巴巴容器规模化部署主要面临的挑战体现在以下几个方面:
1、业务体量大 。 集群规模大 , 高达十万量级;所有应用全部容器化 , 并且应用镜像大 , 通常以数十 GB 大小为主 。
2、更快的部署速度 。 业务规模持续增长 , 要求云平台可以快速的部署应用 , 才能够处理业务增长 , 尤其双十一大促时紧急扩容 , 难以事前对各服务准确预估容量 。
3、然而大规模的创建或者更新容器集群依然很慢 , 主要原因是容器部署镜像的下载和解压很慢 , 主要的技术挑战如下:
时间开销大:时间开销 ∝ 镜像大小 * 节点数;一千节点就需要存一千份镜像; CPU 时间开销大:gzip解压慢 , 且只能串行解压; I/O 压力大:下载、解压两轮写盘 , 包括众多节点同时写盘 , 对云盘产生“共振”; 内存占用扰动:对宿主机 page cache 产生严重扰动; 但是有效数据占比少:启动时平均仅需镜像数据的6.4% 。应对以上技术挑战 , 大规模容器部署的关键需求抽象总结为三点:
1、按需:下载解压速度足够快、数据按需访问和按需传输 。
2、增量分层:数据解耦 , 通过 OCI-Artifacts 标准 overlayfs 把层次做划分 , 增量数据 , 时间资源使用更有效 。
3、Remote Image :采用远程镜像技术 , 改变镜像格式 , 同时减少本地资源的消耗 。
Remote Image 技术方案对比
Remote Image 主要有两种技术实现的方式 , 一种是基于文件系统 , 第二种是基于块设备 。 Remote Image 技术方案对比如下图所示:

基于文件系统的 Remote Image 技术的主要特点是直接提供文件系统接口 , 是容器 Image 的自然扩展 。 复杂度高 , 稳定性、优化和高级功能的实现难度大 。 在通用性上 , 和操作系统绑定 , 能力固定 , 不一定匹配所有应用 。 同时攻击面较大 。 行业代表主要是 Google CRFS , Microsoft Azure Project Teleport , AWS SparseFS 。
基于块设备实现的 Remote Image 技术的主要特点是可配合常规文件系统一起使用 , 如 ext4;普通容器、安全容器、虚拟机均可直接使用 。 复杂度、稳定性、优化和高级功能更容易实现 。 在通用性上 , 与操作系统和文件系统解绑 , 应用可自由选择最合适的文件系统 , 如 NTFS , 作为依赖打包进 Image 。 并且攻击面较小 。
阿里巴巴选择了 Date Accelerator for Disaggregated Infrastructure (简称为 DADI) , 同时进行了规模性验证 。
阿里巴巴自研容器镜像加速技术 DADI DADI 是阿里巴巴的独创性的技术方案 。 DADI 镜像服务是一种可以做到敏捷又弹性部署应用的分层块级镜像服务 。 DADI 彻底摒弃了传统容器启动的瀑布类型(即下载、解包、启动) , 实现了远程镜像的细粒度按需加载 , 容器启动前不在需要部署镜像 , 容器在创建后可以立即启动 。
DADI 的数据路径如下图所示 , 虚线之下是内核态 , 虚线之上是用户态 。 DADI 将镜像抽象为虚拟块设备 , 并在其上容器应用挂载常规文件系统如 ext4 。 当用户应用读取数据时候 , 读取请求先通过常规的文件系统处理 , 文件系统将请求转换为虚拟块设备的一次或者多次读取 。 对块设备的读取请求被转发到用户态的 DADI 模块 , 最后转换为一个或者多个 Layer 的随机读取 。

DADI 镜像采用块存储+分层技术 , 每层只记录被增量修改的数据块 , 支持压缩以及实时的按需解压缩;支持按需传输 , 只传输用到的数据块下载使用;DADI 还可以采用 P2P 传输架构 , 一传十、十传百 , 在大规模集群内将网络流量均衡到所有多个节点上去 。