Interface names – udev persistent rules

udev is a device manager for the Linux kernel. As the successor of devfsd and hotplugudev primarily manages device nodes in the /dev directory. At the same time, udev also handles all user space events raised while hardware devices are added into the system or removed from it, including firmware loading as required by certain devices.

udev replaces the functionality of both hotplug and hwdetect.

udev loads kernel modules by utilizing coding parallelism to provide a potential performance advantage versus loading these modules serially. The modules are therefore loaded asynchronously. The inherent disadvantage of this method is that udev does not always load modules in the same order on each boot. If the machine has multiple block devices, this may manifest itself in the form of device nodes changing designations randomly. For example, if the machine has two hard drives, /dev/sda may randomly become /dev/sdb. See below for more info on this.

At our DC we have Cisco UCS blades managed using configuration manager with host OS as Ubuntu. We have created different profiles with interfaces + vlan configurations for different zones ( DMZ, INT, EXT etc ). Everything was OK while running OS version precise (12.04) but once we upgrade host OS to trusty ( 14.04) interfaces are no longer coming up.

The simple reason is interfaces on the host after the upgrade named as em0 and em1 but UCS expecting eth0 and eth1.

To resolve:

Add “biosdevname=0” to the kernel boot arguments in /etc/grub.conf

“udev” is also creates persistent rules “/etc/udev/rules.d/70-persistent-net-rules” for the first time to make sure of follow those rules and keep the interfaces naming as present in the file at each boot to make it consistent so we need to delete this file. So for every time boots udev process reads the rules present in /etc/udev/rules.d/ and action accordingly.

Update /etc/network/interfaces with the ones you want to create.

Reboot the system.

Rename/Reset interface names vmware

Yesterday I’ve cloned one of the Virtual Machine ( Running RHEL 6 ) with two NICs in VSphere. After cloning is done I’ve removed the two NIC’s and added a new NIC then powered on. System is not connecting to network as the interface not coming up

Ans: Removed the persistent rules file and reload the udev rule.

  1. ifconfig -a showed that interface is recognized as eth2.
  2. Open the file /etc/udev/rules.d/70-persistent-net.rules with your favorite editor.
  3. Find the rule matching your MAC address.
  4. Change the NAME value from eth1 to eth0 i.e. NAME=”eth0″
  5. #start_udev