阿里云图片存储 阿里云盘资源共享站( 三 )


阿里云图片存储 阿里云盘资源共享站


DADI 镜像采用块存储+分层技术 , 每层只记录被增量修改的数据块 , 支持压缩以及实时的按需解压缩;支持按需传输 , 只传输用到的数据块下载使用;DADI 还可以采用 P2P 传输架构 , 一传十、十传百 , 在大规模集群内将网络流量均衡到所有多个节点上去 。
DADI 关键技术解读DADI 增量镜像可以通过基于块+分层技术来实现 , 其中每个层对应于一个 LBA 的变更 。DADI 的关键技术包括远程镜像的细粒度按需传输 , 高效的在线解压缩 , 基于 trace 读取 , 用于处理突发工作的 P2P 传输技术 。DADI 在提高部署应用的敏捷性和弹性方面非常有效 。
1、分层块设备 Overlay Block Device
每层记录被增量修改的变长数据块 LBA , 不涉及文件/文件系统的概念 , 以 512 字节为最小粒度 。快速索引 , 支持变长记录 , 以节省内存 , 各记录的 LBA 不重叠 , 支持高效的区间查询 。
2、原生支持可写层
提供追加写文件和随机写稀疏文件两种模式构建 DADI 镜像 。只读层 , 每个只读都可以按照不同类型的大小 , 每层查询区间 , 速度极快 。可写层由存储原始数据(Raw Data)和存储索引(Index)两部分组成 , 接受 append only 组织而成 。
阿里云图片存储 阿里云盘资源共享站


3、ZFile 压缩格式
标准压缩文件格式 , 例如 gz , bz2 , xz 等 , 无法高效的进行随机读写操作 , 无论读取压缩文件中的哪一部分 , 都需要从头部开始解压 , 为了支持 layer blob 的压缩并同时支持远程镜像的按需读取 , DADI 引入了 ZFile 压缩格式 。ZFile 的压缩格式如下图所示 , 按固定大小数据块压缩 , 只解压读到的数据块 , 支持多种有效的压缩算法 , 包括 lz4 , zstd , gzip 等 , 采用通用格式 , 不绑定于 DADI 。
阿里云图片存储 阿里云盘资源共享站


4、基于 Trace 预取
记录应用过程中的读取日志、只记位置、不记数据本身 。在应用冷启动时 , 若已有 trace 记录 , 则 DADI 将根据trace提前把数据预取回本地 , 采用高并发读取 , 更加高效 。Trace 作为一个特殊的 layer 存于 image , 专门用于加速 , 用户不可见 , 未来可容纳其他加速文件 。如下图绿色部分表示加速层、容纳 trace 文件以及其他文件 。
5、按需 P2P 传输
在我们的生产环境中 , 有几个关键应用程序已经部署在数千台服务器上 , 并且包含高达数 GB 的 Layer , 这些应用程序的部署给 Registry 和网络基础设施带来了巨大压力 。为了更好的处理此类大型应用 , DADI 将最近使用的数据块缓存在每个宿主机的本地磁盘上 , 采用 P2P 的方式在主机之间传输数据 。
阿里云图片存储 阿里云盘资源共享站


1、采用树形拓扑结构分发数据
  • 各个节点均缓存最近使用过的数据块
  • 跨节点请求大概率命中父节点自己的 cache
  • 未命中的请求会递归向上传递 , 直到 registry
2、拓扑结构由 root 节点动态维护
  • 每个 layer 单独一个传输拓扑
3、每个机房单独部署一组 root

推荐阅读