2019独角兽企业重金招聘Python工程师标准>>>

#背景 一直以来我的业务都是跑在aufs+ext4的存储驱动结构上,看上去没有什么问题,直到业务报告: 在高并发场景下,aufs因为锁争抢的原因,导致cpu高负载。我才不得不考虑更换docker驱动的事情

#关于外部资料的收集 看了一圈下来,docker的存储驱动目前可以说分为三个流派(可以用在生产环境为标准):

  1. aufs+ext4
  2. overlay2+xfs
  3. devicemapper

目前没有人大胆用第4个存储驱动,玩玩可以,可要是到生产环境,指不定要修多少内核bug,这对于哪些没有内核和文件系统人才的公司简直是噩梦。 其中aufs的使用门槛最低,内核版本和底层文件系统要求比较少,也经过生产验证,稳定,但是如上所说,高并发场景不合适。aufs在控制到镜像层数的情况下,16M以下的文件读写性能不会太差。

overlay2是为了解决overlay耗尽inode问题的演化版本,overlay要求的Linux内核至少3.18版本之后,Docker1.11前只能使用overlay, 而Overlay2要求内核版本在4.0以上。另外我要声明一下,docker的存储driver都有不同程度的坑,目前比较能接受的是overlayfs+xfs ,我就遇到个bug:

#overlay2+ext4
bash-4.1# mv index.php  kks.php
mv: cannot move `index.php' to a subdirectory of itself, `kks.php'

另外如果你确定你的低版本内核已经支持了overlay,可以用下面的配置跳过内核版本检查

vim /etc/docker/daemon.json
{"storage-driver": "overlay2","storage-opts": ["overlay2.override_kernel_check=true"]
}

制作xfs时要加上ftype的参数

mkfs.xfs -f -n ftype=1 /dev/sda4

devicemapper因为和上面两个技术原理上发生了质的变化,从配置上就复杂了一些,还要给docker数据单独分区,相当的麻烦,要求的内核版本(4.0以上)和docker版本(17.06)就更高了。我最后是放弃测试了。

附上测试数据

我认为之所以overlay2比裸硬盘ext4还叼,主要还是因为xfs比ext4要叼,当然overlay从速度上还是和aufs一样都比较接近裸硬盘,(我这不是高并发测试,aufs仅有三层) aufs从原理上讲镜像层数越多性能越差,如果层数越少,性能就越接近裸硬盘。

测试方法
./iozone -a -n 4k -g 1g -i 0 -i 1 -i 2 -f /root/test.rar -Rb ./iozone.xls

相关的资料 https://docs.docker.com/storage/storagedriver/select-storage-driver/

http://dockone.io/article/1513

转载于:https://my.oschina.net/xueyi28/blog/1787353

关于docker的存储驱动相关推荐

  1. Docker 文件存储驱动:AUFS 文件系统原理及生产环境的最佳配置

    我们知道,Docker 主要是基于 Namespace.cgroups 和联合文件系统这三大核心技术实现的.那么你知道联合文件系统是什么吗?它的原理又是什么呢?首先我们来了解一下什么是联合文件系统. ...

  2. Docker aufs存储驱动layer、diff、mnt目录的区别

    2019独角兽企业重金招聘Python工程师标准>>> Docker基础信息 首先,先查询Docker使用的后端存储.使用命令docker info,主要关注Storage Driv ...

  3. Docker存储驱动之OverlayFS简介

    简介 OverlayFS是一种和AUFS很类似的文件系统,与AUFS相比,OverlayFS有以下特性: 1) 更简单地设计: 2) 从3.18开始,就进入了Linux内核主线: 3) 可能更快一些. ...

  4. DOCKER存储驱动之DEVICE MAPPER简介

    Device Mapper是一个基于kernel的框架,它增强了很多Linux上的高级卷管理技术.Docker的devicemapper驱动在镜像和容器管理上,利用了该框架的超配和快照功能.为了区别, ...

  5. Docker 容器文件存储驱动 Overlay2

    码字不易,转载请注明出处!! 写在前面 Docker 文件存储驱动有很多种,比如 overlay2.aufs等,可以通过命令 docker info 查看: > # docker info &g ...

  6. Docker存储驱动

    Docker Storage Driver 每个 Docker 容器都有一个本地存储空间,用于保存层叠的镜像层(Image Layer)以及挂载的容器文件系统. 默认情况下,容器的所有读写操作都发生在 ...

  7. Docker——docker存储驱动原理

    摘要 Docker 主要是基于 Namespace.cgroups 和联合文件系统这三大核心技术实现的.联合文件系统(Union File System,Unionfs)是一种分层的轻量级文件系统,它 ...

  8. 理解镜像、容器和存储驱动

    理解镜像.容器和存储驱动 为了更有效地使用存储驱动,你必须理解Docker如何创建和存储镜像.接下来,需要理解容器是如何使用这些镜像的.最后,你需要一个对镜像和容器操作者都需要的技术简介. 镜像和图层 ...

  9. nvidia-docker(GPU)和存储驱动(storage_driver)

    一.docker使用nvidia  GPU 1.nvidia-docker2 安装使用NVIDIA-Docker--使用GPU的Docker容器 https://blog.csdn.net/qq_31 ...

最新文章

  1. 系统延时任务和定时任务
  2. 算法专题 二分法 普及组【2015】四2 C++版
  3. jQuery Object 和 HTML Element间的转换
  4. 【转】如何用好SVN的Branch
  5. 电子计算机哪几部分组成的,电子计算机由哪几部分构成?
  6. apache的php扩展名解析漏洞
  7. 电脑打开任务管理器的方法有哪几种
  8. python技术文档的阅读理解
  9. linux xia复制命令,Linux常用命令整理
  10. 一道搜狗机试题的解答
  11. 无线网服务器亮红灯什么情况,无线网猫光信号闪红灯是什么原因
  12. Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译
  13. 微信文章抓取:微信临时链接转永久链接方法,一招摆脱链接过期烦恼
  14. AMBA协议笔记(APB)
  15. 软考之路--小桥流水人家
  16. 易语言多线程大漠多线程脚本主副线程
  17. 训练千亿参数大模型,离不开四种GPU并行策略
  18. 搭建Python自带静态Web服务器
  19. 友盟统计的一次详细分析,记录自己深入阅读统计的过程
  20. 企业微信私域电商运营转化SOP计划流程方案

热门文章

  1. cJsonFiles数据结构
  2. UA MATH523A 实分析3 积分理论例题 Fubini定理计算简单二重积分的一个例题
  3. 序列号明码比较的反汇编代码以及注册机的初步使用
  4. QJson生成文件和解析文件
  5. DevExpress控件之GridControl、GridView
  6. sklearn中的交叉验证(Cross-Validation)
  7. Spring常用注解总结
  8. 使用office生成PDF文件
  9. clang 搭建和编译boost 和zero ICE库 (Ubuntu10 64)
  10. [projectEuler.net]12