在基于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-<内核版本>