【论文笔记】Carving Perfect Layers out of Docker Images


D. Skourtis, L. Rupprecht, V. Tarasov, and N. Megiddo,
“Carving Perfect Layers Out of Docker Images,
in 11th USENIX Workshop on Hot Topics in Cloud Computing (Hot'Cloud ' 19 ), USENIX Association, 2019.

背景:

Docker的镜像由层组成,层又由文件组成。当前Docker Hub中已存储超千万个镜像,并使用层共享方式来减少冗余(即层级重复数据删除),但是由于Docker镜像开发规范的不完善,再加上开发人员常常自己创建docker镜像层而不是直接使用已经存在的层等原因,导致Docker中存在大量的几乎相同又不完全相同的层,在层级重复数据删除的背景下这些层都会被识别为unique层进行存储,因此产生了大量的冗余。

所以本文章提出了对docker数据中心中的所有镜像进行重组,即将所有的层打散为文件,再将这些文件重组为新的层,以减少冗余,降低存储开销。

方法:

考虑操作开销(镜像中层的数量)、存储开销(镜像大小)、网络开销(镜像中无用文件的大小)三个维度:

cost = αoperation+β storage+γ network.
给三个维度分配不同的权重来计算怎样让docker数据中心的开销最小化
上图演示了三种极端情况:
a. 每一个文件就作为一个layer——

优点:消除了存储冗余,降低了网络成本

缺点:增加了性能开销(操作成本)

b.每一个镜像只有一个层,即一个镜像的所有文件都放在一个layer里面——

优点:操作成本降低

缺点:存储开销大,网络成本高(没有层共享了)

c.整个数据中心中所有镜像的文件全部存储为一个layer——

优点:没有文件冗余,操作成本极低

缺点:网络开销极高

如上图所示,在对镜像的一个文件进行划分时,有以下五种情况

  1. 划分到已创建的层中,层中已存在该文件,层没有被该镜像使用

  2. 划分到已创建的层中,层中不存在该文件,层已经被该镜像使用

  3. 划分到已创建的层中,层中已存在该文件,层已经被该镜像使用

  4. 划分到已创建的层中,层中不存在该文件,层没有被该镜像使用

  5. 划分到新创建的空层中,层中不存在该文件,层没有被该镜像使用

这五种情况对应的开销变化如下表所示,

Addition:把文件(层)划入层(镜像)中

Oper.:操作开销增加量,每多一个层+1

Storage:存储开销增加量,每多一个文件+1(真正的开销增加量应该是文件大小)

Network:网络开销增加量,即镜像的整个文件集减去镜像真正需要的文件集

 实验评估:

 在对三个维度分配不同的权重下可以看到数据中心的开销都有很好地优化

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值