docker存储系统aufs和overlay的区别

AUFS(Another Union File System)和Overlay是Docker中用于实现镜像和容器存储的两种联合文件系统,它们在设计和使用上有一些关键区别:

412f10de602ef14b365b9e68b9466485.png

设计理念

  • AUFS:AUFS是一个多层联合文件系统,允许多个目录(层)合并为一个统一的视图。它的设计较为复杂,代码量大,且未进入Linux内核主线,需要手动打补丁和编译
  • Overlay:OverlayFS的设计更简单,从Linux 3.18版本开始就进入了Linux内核主线。它被认为是AUFS的继承者,特别是在Docker社区中的关注度迅速提高。

性能特点

  • AUFS:由于多层结构,文件穿越多层较为耗时,写入性能较差。
  • Overlay:支持页缓存共享,copy_up操作更快,因为只有两层结构,写入性能更优。

集成程度

  • AUFS:未进入Linux内核,仅在部分Linux发行版中支持,需要额外配置。
  • Overlay:代码融入到Linux内核中,广泛支持各Linux发行版,配置更为简单。

Docker中的使用

  • AUFS:在早期的Docker版本中广泛使用,但随着OverlayFS的成熟,AUFS已基本被淘汰。
  • Overlay:从Docker 17.06.02版本开始,默认使用overlay2存储驱动,成为推荐的存储驱动。