0%

ESXI 更改网卡速率并设置脚本

ESXI 更改网卡速率并设置脚本

起因

用闲置主机搭了一个ESXI,上面用Ubuntu跑了一个Samba服务做家庭文件中心。

平常从PT站下的资源直接放到这里提供给家里的小米电视和各种盒子等。

问题

一次从服务器拷贝文件的时候发现速度只有

百兆带宽不到?

登录 ESXI 查看网卡设置

我千兆网卡怎么设置的是百兆速度?

点击 编辑设置 更改链路速度

保存

速度正常了。

好景不长

本以为这样设置好就万事大吉了。But!Too young too simple! 第二天又成这样了。

仿佛又自动设置成百兆速度了?

于是乎,痛定思痛!

我们需要编写一个脚本来判断网卡是不是又自动改回百兆了,如果改回来了就自动改过去!

撸起袖子开始干

  • 开启ESXI SSH 登录

  • 登录 ESXI

  • 我们在 /vmfs/volumes/datastore1 这样的位置保存,为毛?

  • 这样重启不会重置,之前我在根目录下创建的script目录在一次意外断电重启后神秘消失了,人间惨剧!

1
2
3
cd /vmfs/volumes/datastore1
mkdir script
cd script
  • 创建脚本 vi ChangeNetworkAdapterSpeed.sh
1
2
3
4
5
6
7
8
9
#!/bin/sh

# Change Network Adapter Speed 1000Mbps

currentSpeed=`esxcfg-nics -l|grep Mbps|awk '{print $5}'`
if [ $currentSpeed != "1000Mbps" ]; then
# 注意 vmnic0 是你网卡的名字
esxcfg-nics -s 1000 -d full vmnic0
fi
  • 保存 :wq

  • 执行权限

    1
    chmod +x ChangeNetworkAdapterSpeed.sh
  • 加入定时任务 每分钟检测一次

1
2
3
cat >> /var/spool/cron/crontabs/root <<"EOF"
*/1 * * * * /bin/sh /vmfs/volumes/datastore1/script/ChangeNetworkAdapterSpeed.sh
EOF
  • 每次重启 ESXI 它的定时任务是会重置的,所以我们需要修改/etc/rc.local.d/local.sh

  • 在里面添加

1
2
3
4
5
6
7
8
# add script to crontab
cat >> /var/spool/cron/crontabs/root <<"EOF"
*/1 * * * * /bin/sh /vmfs/volumes/datastore1/script/ChangeNetworkAdapterSpeed.sh
EOF

# restart crontabs
/bin/kill $(cat /var/run/crond.pid)
/usr/lib/vmware/busybox/bin/busybox crond
  • 注意添加在 exit 0 前面

  • 重启 crontabs

1
2
/bin/kill $(cat /var/run/crond.pid)
/usr/lib/vmware/busybox/bin/busybox crond

大功告成。