To hot attach a network interface to a kvm guest, please follow below steps. The command we'll be using is virsh:
- Get to know the name of the guest, run below command on the kvm host:
foo@host:~$ sudo virsh list Id Name State ---------------------------------- 1 kvm-guest running
- Check whether module acpiphp is loaded on the guest:
foo@guest:~$ sudo lsmod | grep -i acpiphp
- If yes, proceed to step 4. If no, run below command:
foo@guest:~$ sudo modprobe acpiphp
- Hot attach the network interface:
foo@host:~$ sudo virsh attach-interface kvm-guest network --model virtio --persistent Interface attached successfully
- Run dmesg on guest to verify that the interface has been attached successfully:
foo@guest:~$ dmesg | tail [38613567.591261] virtio-pci 0000:00:04.0: using default PCI settings [38613567.591283] pci 0000:00:05.0: no hotplug settings from platform [38613567.591285] pci 0000:00:05.0: using default PCI settings [38613567.591741] virtio-pci 0000:00:05.0: enabling device (0000 -> 0003) [38613567.593361] ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 10 [38613567.601486] virtio-pci 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 10 (level, high) -> IRQ 10 [38613567.601524] virtio-pci 0000:00:05.0: setting latency timer to 64 [38613567.602328] virtio-pci 0000:00:05.0: irq 43 for MSI/MSI-X [38613567.602343] virtio-pci 0000:00:05.0: irq 44 for MSI/MSI-X [38613567.602357] virtio-pci 0000:00:05.0: irq 45 for MSI/MSI-X
- Set ipaddress for the new interface:
foo@guest:~$ sudo touch /etc/sysconfig/network-scripts/ifcfg-eth1; sudo echo -e "DEVICE=eth1\nONBOOT=yes\nTYPE=Ethernet\nBOOTPROTO=static\nIPADDR=10.0.0.8\nNETMASK=255.255.255.0" > /etc/sysconfig/ifcfg-eth1
- Bring up the interface:
foo@guest:~$ sudo ifup eth1
- Check the interface:
foo@guest:~$ ifconfig eth1 eth1 Link encap:Ethernet HWaddr 52:54:00:D7:10:04 inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:178767965 errors:0 dropped:0 overruns:0 frame:0 TX packets:58477452 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:11949338417 (11.1 GiB) TX bytes:498944480375 (464.6 GiB)
Done.
For hot detaching, the command in virsh is detach-interface, please follow below steps to detach the newly added interface in the above instruction:
- Bring down the interface in the guest:
foo@guest:~$ sudo ifdown eth1
- Delete the interface config file:
foo@guest:~$ sudo rm /etc/sysconfig/network-scripts/ifcfg-eth1
- Detach the network interface in host:
foo@host:~$ sudo detach-interface kvm-guest type network --mac 52:54:00:D7:10:04
- Verify that the network has been removed, by running the dumpxml command, pipe to less, and search for interface:
foo@host:~$ sudo virsh dumpxml kvm-guest | less
Done.
Hope you all will gain benefit from this post.