关于docker的存储驱动
2019独角兽企业重金招聘Python工程师标准>>>
#背景 一直以来我的业务都是跑在aufs+ext4的存储驱动结构上,看上去没有什么问题,直到业务报告: 在高并发场景下,aufs因为锁争抢的原因,导致cpu高负载。我才不得不考虑更换docker驱动的事情
#关于外部资料的收集 看了一圈下来,docker的存储驱动目前可以说分为三个流派(可以用在生产环境为标准):
- aufs+ext4
- overlay2+xfs
- 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的存储驱动相关推荐
- Docker 文件存储驱动:AUFS 文件系统原理及生产环境的最佳配置
我们知道,Docker 主要是基于 Namespace.cgroups 和联合文件系统这三大核心技术实现的.那么你知道联合文件系统是什么吗?它的原理又是什么呢?首先我们来了解一下什么是联合文件系统. ...
- Docker aufs存储驱动layer、diff、mnt目录的区别
2019独角兽企业重金招聘Python工程师标准>>> Docker基础信息 首先,先查询Docker使用的后端存储.使用命令docker info,主要关注Storage Driv ...
- Docker存储驱动之OverlayFS简介
简介 OverlayFS是一种和AUFS很类似的文件系统,与AUFS相比,OverlayFS有以下特性: 1) 更简单地设计: 2) 从3.18开始,就进入了Linux内核主线: 3) 可能更快一些. ...
- DOCKER存储驱动之DEVICE MAPPER简介
Device Mapper是一个基于kernel的框架,它增强了很多Linux上的高级卷管理技术.Docker的devicemapper驱动在镜像和容器管理上,利用了该框架的超配和快照功能.为了区别, ...
- Docker 容器文件存储驱动 Overlay2
码字不易,转载请注明出处!! 写在前面 Docker 文件存储驱动有很多种,比如 overlay2.aufs等,可以通过命令 docker info 查看: > # docker info &g ...
- Docker存储驱动
Docker Storage Driver 每个 Docker 容器都有一个本地存储空间,用于保存层叠的镜像层(Image Layer)以及挂载的容器文件系统. 默认情况下,容器的所有读写操作都发生在 ...
- Docker——docker存储驱动原理
摘要 Docker 主要是基于 Namespace.cgroups 和联合文件系统这三大核心技术实现的.联合文件系统(Union File System,Unionfs)是一种分层的轻量级文件系统,它 ...
- 理解镜像、容器和存储驱动
理解镜像.容器和存储驱动 为了更有效地使用存储驱动,你必须理解Docker如何创建和存储镜像.接下来,需要理解容器是如何使用这些镜像的.最后,你需要一个对镜像和容器操作者都需要的技术简介. 镜像和图层 ...
- nvidia-docker(GPU)和存储驱动(storage_driver)
一.docker使用nvidia GPU 1.nvidia-docker2 安装使用NVIDIA-Docker--使用GPU的Docker容器 https://blog.csdn.net/qq_31 ...
最新文章
- 系统延时任务和定时任务
- 算法专题 二分法 普及组【2015】四2 C++版
- jQuery Object 和 HTML Element间的转换
- 【转】如何用好SVN的Branch
- 电子计算机哪几部分组成的,电子计算机由哪几部分构成?
- apache的php扩展名解析漏洞
- 电脑打开任务管理器的方法有哪几种
- python技术文档的阅读理解
- linux xia复制命令,Linux常用命令整理
- 一道搜狗机试题的解答
- 无线网服务器亮红灯什么情况,无线网猫光信号闪红灯是什么原因
- Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译
- 微信文章抓取:微信临时链接转永久链接方法,一招摆脱链接过期烦恼
- AMBA协议笔记(APB)
- 软考之路--小桥流水人家
- 易语言多线程大漠多线程脚本主副线程
- 训练千亿参数大模型,离不开四种GPU并行策略
- 搭建Python自带静态Web服务器
- 友盟统计的一次详细分析,记录自己深入阅读统计的过程
- 企业微信私域电商运营转化SOP计划流程方案