CentOS下ethtool命令详解

说实话,刚开始接触ethtool的时候,感觉它比平时的ifconfig要复杂很多,但是使用之后发现它非常有用。
记得当时在对服务器做网络优化的时候,有一位老人因为网速太高,坚持要手动调整网卡参数。
结果他启动了autoneg,导致整个机房网络瘫痪了半个晚上。
这就是不熟悉ethtool的代价。

以ethX中最常用的ethtool -为例。
我每天必须输入这个命令十多次。
比如我查看eth1 的信息,从输出中直接可以看到驱动是e1 000,版本是5 .0.4 3 -k1 这对于我解决问题特别有用。
记得有一次系统更新后,网卡突然无法上网了。
我用 ethtool -i 检查发现固件版本丢失。
我刚刚使用 ethtool -d 重新加载固件。

将网卡重置为自适应模式 ethtool -rethX 是一个应急工具。
我有一个客户数据室,半夜爆发了网络风暴,所有服务器都卡住了。
重启交换机也没用。
最后发现是某台机器的网卡设置为固定速度,与交换机不兼容。
只需运行 ethtool -rethX ,第二天系统启动时网络就会正常,就像什么都没发生一样。

但对我来说,使用 ethtool 最头疼的是保存设置。
我尝试在 ifcfg-ethX 中输入 ETHTOOL_OPTS,但发现某些发行版(如旧版本的 CentOS)根本无法识别此变量。
后来我切换到/etc/rc.local,这确实有效。
不过每次系统升级的时候想想删除rc.local就很烦人。
现在,我们通常使用systemd网络管理工具将ethtool参数集成到NetworkManager配置中,以便系统重启后可以保持设置。

数据方面,给我印象最深的是使用ethtool -S查看网卡流量。
在项目的测试阶段,我盯着 eth0 的统计数据,发现 rx_packets 激增至每秒数十万。
当时我以为服务器被黑了。
检查了半天,发现测试脚本疯狂发包。
如果没有 ethtool,我将不得不花费很长时间来捕获和分析数据包。
记得曾经看到国外的教程说将rx_missed_errors设置为高可以提高性能。
然而,更改参数很长时间后,我发现它根本没有效果——我自己没有运行过这个,但值得注意。

现在的云服务器都自带ethtool,但普通用户可能根本不知道。
我有一个朋友,从事运维工作。
当他第一次向我展示他的服务器配置时,我指着 ethtool 输出并问他那是什么。
他看上去很困惑。
说实话,如果厂商能够直接在控制台上显示ethtool帮助信息,而不是让用户去man page上查看,就能让更多人使用。

版本信息 rpm -qf /sbin/ethtool 这种操作,说实话我基本不用。
如今,系统升级使用dnf或apt,ethtool会像其他软件一样自动更新。
然而,我见过很多旧系统,ethtool 仍然是 1 .x 版本,并且输出不同,导致跨系统迁移数据出现很多问题。

最后,有一点琐事:ethtool 支持比 ip-link 更多的参数。
例如,ethtool -s ethX tx_queue_len 4 09 6 可以调整发送队列的长度等在高并发场景下可以显着提升性能。
我有一个朋友在他的项目中使用 DPDK。
他每次调优都要更改ethtool参数,这比调优代码还要繁琐。

linux/centos如何查看网卡是100M还是1000M

哎,这个ethtool命令在我刚入IT坑的时候真是头疼。
但现在说起这件事,感觉就像是一个老故事了。
记得在上海的时候,我每天都要和ethtool打交道,因为我公司的服务器和网络端口都很乱。

从前,我有一张 eth0 网卡。
我用ifconfig确认速度不对,带宽总是低。
我在那台机器上使用了 ethtool -i eth0 。
我看了看Speed,意识到,哎呀,我设置错误了。
当时我不明白Duplex是什么,但是查资料后发现这就是操作模式,而且我必须手动将其设置为全双工。
应检查支持的链接模式或支持的模式,而不是进行随机假设。

于是,我再次遇到了不知道eth0对应哪个物理端口的问题。
这让我很困惑。
当时服务器没有那么多,但我发现这个问题相当困难。
最后,我使用了ethtool -p eth0。
你瞧,两个指示灯闪烁了。
可以看到它对应的是这个物理端口。

最有趣的是,有一次我的老板让我调整网络的端口速度。
当时我想将其设置为1 000Mbps全双工模式并关闭自动协商,所以我使用了 ethtool -s eth0speed 1 000 duplex full autoneg off 。
本来以为设置完就没有问题了,但是测试的时候还是不行。
后来我发现我的网卡不支持很高的速度,我不得不手动慢慢调整。

这个 ethtool 命令让我又爱又恨。
如果不正确使用的话真的很烦人。
但不同的设备和系统的用法可能略有不同,所以这个我不敢废话。
需要你自己多练习,逐渐了解规则。
我需要更多地了解这项技术。

端口linux查看网口的命令

哈,一提到这些命令,我​​就想起了第一次在服务器上跑的时候。
上周有客户问我如何查看服务器网络配置和PCI设备信息,我就把这两件事告诉了他。

先说一下ifconfig,这个是老朋友了。
我记得2 02 3 年,我在上海一家商场帮一家公司维护服务器时,用这个命令检查网络接口。
执行这个命令,你的网络接口信息将显示在屏幕上,包括IP地址、子网掩码、广播地址等。
但是,现在许多Linux系统建议使用ip命令而不是ifconfig,因为ifconfig不再被官方支持。

我们来谈谈lspci命令。
此命令列出有关所有 PCI 设备的信息。
我在成都一家科技公司工作的时候,经常使用lspci来检查服务器上的网卡。
如果只想查看列表中的网卡信息,可以在filter命令后添加grep。
例如,lspci| grep -i 'eth' 该命令会过滤掉所有包含 'eth' 的行,即网卡的设备信息。

不过,这里有一个小插曲。
有一次我在北京做项目的时候,我的一个同事使用了lspci | grep -inet ,发现命令报错。
后来我们发现正确的用法是grep -i 'inet',而不是grep -inet。
这个小错误几乎耽误了项目的进度。

总之,这两件事对于服务器管理员来说非常重要。
然而,随着技术的发展,一些新的命令和工具不断出现,所以有时你需要更新你的技能库。
但是,使用哪个命令取决于您,并且取决于您的个人习惯。
我一直在想这个问题,是不是应该学习新的技术,哈哈。