Alibaba Cloud Linux 3系统缺失sch_netem模块

在基于Alibaba Cloud Linux 3系统中模拟网络延迟或丢包等复杂的网络环境时,需要内核支持sch_netem。本文介绍如何解决在内核版本低于5.10.134-16的Alibaba Cloud Linux 3系统上sch_netem模块缺失的问题。

说明

sch_netem模块是Linux内核中的一个网络延时和丢包模拟模块,常用于网络仿真和测试,尤其适用于网络性能测试和QoS配置。

问题描述

加载sch_netem模块时,系统提示类似如下信息,找不到sch_netem模块。

# modprobe sch_netem
modprobe: FATAL: Module sch_netem not found in directory /lib/modules/5.10.134-14.al8.x86_64

问题原因

在Alibaba Cloud Linux 3中,内核的各个模块被拆分存放在kernel-core、kernel-modules、kernel-modules-extra、kernel-modules-internal等多个rpm包中,而sch_netem模块位于kernel-modules-extra包中。由于在构建镜像或安装内核时,仅会安装kernel-core、kernel-modules两个rpm包,从而导致系统不到sch_netem模块。

解决方案

该问题已在5.10.134-16版本上修复,您可以通过uname -r命令查看您的内核版本。

如果您在使用低于此版本的内核时遇到该问题,请运行以下命令安装sch_netem内核模块来解决。

sudo yum install -y kernel-modules-extra-<内核版本>
说明

还有一部分模块存放于kernel-modules-internal包中,为避免您后续遇到其他模块缺失的问题,建议运行以下命令一起安装。

sudo yum install -y kernel-modules-internal-<内核版本>