docker storage driver compare

docker storage driver对比

aufs

分为多层镜像层,一个读写层.

  • 修改存在的文件,有写延迟,需要拷贝整个文件到读写层
  • 读文件性能差,需要在多层中搜索
  • 删除一个文件,只需要在读写层放一个空白文件,镜像层文件不删除

性能

  • 支持page cache,内存使用效率高
    The underlying mechanics of how AUFS shares files between image layers and containers uses the systems page cache very efficiently.
  • 大文件修改有延迟,需要拷贝整个文件到读写层然后修改

overlayfs

分为二层,upper层和lower层,lower层也就是所谓的images层,upper层就是所谓的读写层.

  • 修改存在的文件(在images层存在),对于小文件影响不大,对于大文件有写延迟(无论是小文件还是大文件,只要修改都会整个文件拷贝到读写层然后修改)
  • 读文件性能优于aufs,因为overlayfs只有两层,所有对于文件搜索来说性能好于aufs
  • 删除一个文件只需要在读写层放一个空白同名文件,镜像层文件并不删除

性能

  • 支持 page Caching 多个容器访问同一个文件可以共享
    single page cache entry efficient with memory and a good option for PaaS and other high density use cases.
  • 修改存在的文件的时候,需要从镜像层拷贝整个文件到读写层然后修改,对于大文件有写延迟,但是性能好于aufs,因为搜索文件性能优于aufs overlayfs只有二层
  • 对inode有大量消耗,可能会导致inode用完(可以在格式化文件系统的时候多分配一点inode来解决)

device mapper

一层就是一个快照,快照就是一个个指向底层真实数据的数据指针

  • 新增文件,导致分配一个block(64kb),然后在这个block上写入数据,因此在有大量小文件写的场合有性能问题
  • 修改文件,copy on write,只是拷贝修改的部分到快照层,不像aufs overlayfs那样会拷贝整个文件,这是一个优势
  • 删除文件就是简单的把快照层中指向真实数据的指针设置为NULL即可

性能

  • 小文件写性能有影响,每次写会导致分配一个block(64kb)其后写数据直接在这个block中写
  • copy on write性能平均情况下优于aufs和overlayfs,在大量小文件的情况下要* 相同文件访问多个容器需要拷贝多次到内存,在大密度paas场景不适用,内存使用效率不高.没有overlayfs和aufs那样支持page cache.
    devicemapper is not the most memory efficient Docker storage driver. Launching n copies of the same container loads n copies of its files into memory. This can have a memory impact on your Docker host. As a result, the devicemapper storage driver may not be the best choice for PaaS and other high density use cases.

官方对比图

这里写图片描述

参考文献

select storage driver
Docker and AUFS in practice
Docker and the Device Mapper storage driver
Docker and OverlayFS in practice

©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值