Centos

如何通過重啟保留 ethtool 設置

  • September 13, 2021

我想在 CentOS5 伺服器上關閉 tcp 分段解除安裝。使用 ethtool 命令是ethtool -K eth0 tso off但是,此設置僅在此會話中持續存在。我怎樣才能讓它通過重新啟動持續存在?

從這個網頁

您可以在目前執行級別完成後執行命令的位置(或您的發行版的等效命令)中輸入 ethtool 命令/etc/rc.local,但這並不理想。網路服務可能已在執行級別啟動,而 ethtool 命令往往會中斷網路流量。最好在啟動界面時應用命令。

CentOS 中的網路服務有能力做到這一點。該腳本/etc/sysconfig/network-scripts/ifup-post檢查是否存在/sbin/ifup-local,如果存在,則使用介面名稱作為參數執行它(例如/sbin/ifup-local eth0:)

我們可以使用 touch 創建此文件,/sbin/ifup-local使其可執行並chmod +x /sbin/ifup-local設置其 SELinux 上下文,chcon --reference /sbin/ifup /sbin/ifup-local然後在編輯器中打開它。

將相同設置應用於所有介面的簡單腳本類似於

#!/bin/bash
if [ -n "$1" ]; then
/sbin/ethtool -G $1 rx 4096 tx 4096
/sbin/ethtool -K $1 tso on gso on
fi

請記住,這將嘗試將設置應用於所有介面,甚至是環回。

如果我們有不同的介面我們想要應用不同的設置,或者想要跳過環回,我們可以做一個 case 語句

#!/bin/bash
case "$1" in
eth0)
/sbin/ethtool -G $1 rx 16384 tx 16384
/sbin/ethtool -K $1 gso on gro on
;;
eth1)
/sbin/ethtool -G $1 rx 64 tx 64
/sbin/ethtool -K $1 tso on gso on
/sbin/ip link set $1 txqueuelen 0
;;
esac
exit 0

現在 ethtool 設置會在介面啟動時應用到介面,網路通信的所有潛在中斷都會在介面啟動時完成,並且您的伺服器可以繼續以完整的網路功能啟動。

引用自:https://serverfault.com/questions/463111