前天上午,领导判断172.16.30.160主机的网卡有错误和丢包,计划当天晚上进行网卡切换:从eth0手动切换到eth1。

[hello@uz30160 bond0]$ /sbin/ifconfig eth0
eth0      Link encap:Ethernet  HWaddr E4:1F:13:BC:5C:90  
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:375922390 errors:2869 dropped:2241420 overruns:0 frame:2869
          TX packets:1012710669 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:29481710520 (27.4 GiB)  TX bytes:1400156478780 (1.2 TiB)
          Interrupt:169 Memory:92000000-92012800

  当天晚上,得到消息,DBA不同意这样操作,只好作罢。

  但是,从我们午饭前,他有切换网卡计划之后,我就准备从网上搜点资料。这2年学的都是linux应用,硬件配置从来就没有接触过。由于机房有些机器感觉还是比较老,估计以后也会遇到重新安装驱动的情况。趁着这次机会,索性专项补一下课。

  从前天下午4点半左右开始在百度上搜集资料,然后昨天看了半天,今天上午又基本看了一整天。

  看了12篇左右,讲的几乎都是差不多的意思。无非就是网卡绑定的原理、意义,复制配置文件eth0,启动模块之类。

  看多了,才大体有了几点印象。可是,就是没有讲如何在“active-backup”模式从eth0切换到eth1。

  前天下午的时候,找到1个配置文件:

[hello@uz30160 bond0]$ cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.4.0 (October 7, 2008)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Link Failure Count: 1127
Permanent HW addr: e4:1f:13:bc:5c:90

Slave Interface: eth1
MII Status: up
Link Failure Count: 3
Permanent HW addr: e4:1f:13:bc:5c:92

  领导说,不是在这个文件里改。是啊,也没有写权限呢。

[hello@uz30160 bond0]$ ll /proc/net/bonding/bond0
-r--r--r-- 1 root root 0 Sep 19 18:03 /proc/net/bonding/bond0

  今天上午,看到1篇文章,里面有1段是这样说的:

  /sys/class/net/bond0里面就包含了bond0口的各种属性,每个属性都是一个文件。这些属性文件,在用户看来,就像文本文件一样。想查看属性,通过命令“cat 属性文件”即可。

[hello@uz30160 bond0]$ ll
total 0
-r--r--r-- 1 root root 4096 Feb 22  2014 address
-r--r--r-- 1 root root 4096 Sep 19 10:50 addr_len
drwxr-xr-x 2 root root    0 Sep 19 10:51 bonding
-r--r--r-- 1 root root 4096 Feb 22  2014 broadcast
-r--r--r-- 1 root root 4096 Sep 19 10:50 carrier
-r--r--r-- 1 root root 4096 Sep 19 10:50 dormant
-r--r--r-- 1 root root 4096 Sep 19 10:50 features
-rw-r--r-- 1 root root 4096 Sep 19 10:50 flags
-r--r--r-- 1 root root 4096 Sep 19 10:50 ifindex
-r--r--r-- 1 root root 4096 Sep 19 10:50 iflink
-r--r--r-- 1 root root 4096 Sep 19 10:50 link_mode
-rw-r--r-- 1 root root 4096 Sep 19 10:50 mtu
-r--r--r-- 1 root root 4096 Sep 19 10:50 operstate
lrwxrwxrwx 1 root root    0 Sep 19 10:50 slave_eth0 -> ../../../class/net/eth0
lrwxrwxrwx 1 root root    0 Sep 19 10:50 slave_eth1 -> ../../../class/net/eth1
drwxr-xr-x 2 root root    0 Feb 22  2014 statistics
lrwxrwxrwx 1 root root    0 Feb 22  2014 subsystem -> ../../../class/net
-rw-r--r-- 1 root root 4096 Sep 19 10:50 tx_queue_len
-r--r--r-- 1 root root 4096 Feb 22  2014 type
--w------- 1 root root 4096 Sep 19 10:50 uevent
-rw-r--r-- 1 root root 4096 Sep 19 10:50 weight
[hello@uz30160 bond0]$ pwd
/sys/class/net/bond0

  要修改属性,通过命令“echo 属性值 > 属性文件”即可。

  可是,切换网卡,要修改那1个文件呢?

  搜集的文档全部看完,没有找到答案。今天下午找另1位领导核实:在mode-1模式下,eth0遇到故障才会自动切换到eth1。可是,让我们手动切换到eth1,应该修改那里的配置文件呢?他给我指出ifcfg-eth0目录里的几个配置文件,但是,在他仔细查看之后,结果还是在重复这两天我的疑问。

  最后,他说:“这样的话,就down掉eth0,让自动切换过去吧……”


  我不甘心这样的答案,又去oldboy群里提问这个问题。结果,和领导的答案相同。

  目前看来,这个问题就先到这里。不过,我始终认为,如果要动配置文件,也应该动/sys/class/net/bond0目录里的东西吧。