当前位置: 首页 > news >正文

Not using native diff for overlay2, this may cause degraded performance……

问题现象

案例:Anolis 8.9(4.19.91-26.an8.x86_64)+ Overlay2存储驱动程序) 

当我们安装好Docker之后,通过systemctl status docker -l 会发现有一个告警信息:level=warning msg="Not using native diff for overlay2, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled" storage-driver=overlay2

根据告警日志表明的含义看:overlay2 中的本机差异支持与现代内核中启用的OVERLAY_FS_REDIRECT_DIR选项不兼容;当存储驱动程序在检测到时就会回退到 NaiveDiffDriver 并发出警告。

关于存储驱动

Docker使用的存储驱动有很多,对于Redhat系列操作系统(国产Linux服务器版)就overly2和devicemapper(需配置direct-lvm 模式,即便如此性能也不如overlay)。

Device Mapper 存储驱动程序是在 Red Hat 及其衍生产品上运行容器的不错选择,但不适用于构建映像,因为它缺乏原生差异支持。可以说Overlay就是前者的替代品。

什么是 NaiveDiffDriver

Docker 映像由基于有序根文件系统更改(和一些元数据)的不可变层组成。存储驱动程序实现将层合并到单个挂载点,并在底层之上提供一个可写层(称为“容器层”)。所有文件系统更改都写入这个薄的可写容器层。每次提交容器时(手动或作为构建 Dockerfile 的一部分),存储驱动程序需要提供相对于基础映像的已修改文件和目录的列表,以创建新层。一些驱动程序在运行时跟踪这些变化,可以很容易地生成这个列表,但对于没有原生处理计算变化的驱动程序,Docker提供了NaiveDiffDriver。此驱动程序通过递归遍历两个目录来生成当前容器文件系统及其父层之间的更改列表树和比较文件元数据。对于具有许多文件和目录的大图像,此操作成本很高。

解决方案

通过对上面内容的了解,我们知道如果Native Overlay Diff: false ,那么,会使用Docker提供的NaiveDiffDriver,而不是Overlay原生的Diff Driver。很可能导致在build或者commit镜像时很慢。所以,有必要优化掉该问题。

1、如果存在需要备份的Image,请先备份;否则,将会丢失镜像数据

~]# du -sh /var/lib/docker/*

      /var/lib/docker/overlay2

2、执行如下命令修复问题。

echo 'options overlay redirect_dir=off' > /etc/modprobe.d/disable_overlay_redirect_dir.conf

modprobe -r overlay

modprobe overlay

systemctl restart docker

验证

docker info|grep -i diff
  Native Overlay Diff: true

http://www.lryc.cn/news/503468.html

相关文章:

  • 【自用】管材流转项目 数据库恢复之 PIPE 表 二维码相关 各个表恢复 SQL
  • 【渗透测试】信息收集二
  • 测试工程师八股文04|计算机网络 和 其他
  • 定时/延时任务-Kafka时间轮源码分析
  • 如何用状态图进行设计05
  • 【计算机视觉】边缘检测
  • 林曦词典|无聊
  • LabVIEW光栅衍射虚拟仿真系统
  • 【NumPy进阶】:内存视图、性能优化与高级线性代数
  • 从YOLOv5到训练实战:易用性和扩展性的加强
  • Prim 算法在不同权重范围内的性能分析及其实现
  • canal安装使用
  • python爬虫常用数据保存模板(Excel、CSV、mysql)——scrapy中常用数据提取方法(CSS、XPATH、正则)(23)
  • You need to call SQLitePCL.raw.SetProvider()
  • IoTDB AINode 报错,call inference 301: Error ocurred while executing inference
  • LLM之RAG实战(五十)| FastAPI:构建基于LLM的WEB接口界面
  • 项目-移动端适配的几种方案
  • HCIA-Access V2.5_2_2网络通信基础_TCP/IP协议栈报文封装
  • LSTM详解
  • 从零开始搭建Android开发环境:简单易懂的完整教程
  • 大模型运用-Prompt Engineering(提示工程)
  • CMake简单使用(二)
  • 攻防世界安卓刷题笔记(新手模式)1-4
  • 发现一个对话框中的按钮,全部失效,点击都没有任何反应,已经解决
  • MyBatisPlus实现多表查询
  • 机器学习详解(5):MLP代码详解之MNIST手写数字识别
  • 如何在vue中实现父子通信
  • PHP实现华为OBS存储
  • 嵌入式 linux Git常用命令 抽补丁 打补丁
  • Alan Chhabra:MongoDB AI应用程序计划(MAAP) 为客户提供价值