Friday, June 21, 2013

Breaking a Bonded interface on RHEL

Today I had to break a bonded interface on a server running RHEL 5.  The bond was not a port channel but rather a fail-over setup.  The end result was to have only eth0 still up but if possible not bring down the box to do it.  Here's how I did it and a link to the original site I pulled it from.  You can also look in the documentation on the box if you don't have the interwebs available at the time.


For more reference to use there values you can check, in your linux box :  /usr/share/doc/kernel-doc-2.6.18/Documentation/networking/bonding.txt 

>>>> 3.  How to Gracefully Break the Bonded Network Interface?
In Sample Configuration is we have bond0 configure for two interface name eth0 and eth1, and bond running configuration looks as 
# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.4.0  Bonding Mode: load balancing (round-robin)
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: 0
Permanent HW addr: 53:44:00:43:91:04
Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 52:33:00:6d:0e:70
The process to break the bonded interface is :
a.  Online remove one slave network interface which will be assigned with a new IP address from the bonding device. In this example, we are going to remove the eth1 from bond0. Execute the following command as root:
# ifenslave -d bond0 eth1
Or
# echo -eth1 > /sys/class/net/bond0/bonding/slaves
After issue the command above , You will see the eth1 device has been remove from bond0 # cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.4.0 
Bonding Mode: load balancing (round-robin)
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: 0
Permanent HW addr:  53:44:00:43:91:04
b. Create a new network configuration for eth1 via graphic tool or text tool and then using following command to start eth1 again. Make sure the physical link has been changed correctly to match the new network configuration of eth1.
# ifup eth1
During the above 2 steps, the network of bond0 will work fine without any break up.
c. Create the same network configuration as bond0 for eth0 
 – just copy the content of /etc/sysconfig/network-scripts/ifcfg-bondX to  /etc/sysconfig/network-scripts/ifcfg-eth0, except the interface name and HW MAC address.
d. Remove the eth0 from bond0, destory the bond0 device and start eth0 immediately.
Please note this disruptive operation, The network of bond0/eth0 will break shortly during this step. # ifenslave -d bond0 eth0; ifdown bond0; ifup eth0
# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.4.0 
Bonding Mode: load balancing (round-robin)
MII Status: down
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
now ifconfig will show the configuration for only eth0 and eth1, no bonding interface appears.
e. Remove all bonding setting of bond0 in /etc/modprobe.conf and remove the ifcfg-bond0 in /etc/sysconfig/network-script directory. Then issue following command to remove the bond0 device from memory completely.
# echo -bond0 > /sys/class/net/bonding_masters