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

ops/2024/12/14 11:18:58/

问题现象

案例: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.ppmy.cn/ops/141800.html

相关文章

Maven、mybatis框架

一、Maven介绍 1.概念: Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。 2.为啥使用maven: 之前项目中需要引入大量的jar包。这些jar从网上下载,可能下载地址不同意。这些jar之间…

AI开源南京分享会回顾录

AI 开源南京分享会,已于2024年11月30日下午在国浩律师(南京)事务所5楼会议厅成功举办。此次活动由 KCC南京、PowerData、RISC-Verse 联合主办,国浩律师(南京)事务所协办。 活动以“开源视角的 AI 对话”为主…

TcpServer 服务器优化之后,加了多线程,对心跳包进行优化

TcpServer 服务器优化之后&#xff0c;加了多线程&#xff0c;对心跳包进行优化 TcpServer.h #ifndef TCPSERVER_H #define TCPSERVER_H#include <iostream> #include <winsock2.h> #include <ws2tcpip.h> #include <vector> #include <map> #…

C语言(指针基础练习)

删除数组中的元素 数组的元素在内存地址中是连续的&#xff0c;不能单独删除数组中的某个元素&#xff0c;只能覆盖。 #include <stdio.h> #include <stdbool.h>// 函数声明 int deleteElement(int arr[], int size, int element);int main() {int arr[] {1, 2, 3…

图形学笔记 - 5. 光线追踪 - RayTracing

Whitted-Style Ray tracing 为什么要光线追踪 光栅化不能很好地处理全局效果 软阴影尤其是当光线反射不止一次的时候 栅格化速度很快&#xff0c;但质量相对较低 光线追踪是准确的&#xff0c;但速度很慢 光栅化&#xff1a;实时&#xff0c;光线追踪&#xff1a;离线~10K …

ios上架构建版本没苹果电脑怎么上传

在app store上架的时候&#xff0c;遇到下图的问题&#xff1a; 点击蓝色加号的时候&#xff0c;并没有构建版本可以选择 从图中可以看出&#xff0c;它给我们推荐了很多上传工具&#xff0c;比如xcode、transporter或命令行工具之类的&#xff0c;但是这些工具都是只能在苹果…

Debedium如何忽略Oracle的purge命令

报错 截至目前3.0版本&#xff0c;Debezium的Oracle Connector并不支持purge table这个指令。 所以&#xff0c;在使用Debezium解析Oracle变更的时候&#xff0c;如果在源端执行了类似 purge table "$BIN… 的语句&#xff0c;就会导致Debezium罢工&#xff0c;日志里显…

双城联动 | 桥田智能获汽车装备卓越供应商奖

12月10日&#xff0c;2024年扶轮奖颁奖典礼在上海金陵紫金山大酒店举行&#xff0c;桥田智能设备有限公司获2024扶轮奖“汽车装备卓越供应商奖 ”荣誉称号。桥田智能市场部负责人张苏娜出席本次颁奖仪式。 桥田智能市场部负责人张苏娜 (右三&#xff09; 本次获得“汽车装备卓…