KVM
Kernel-based Virtual Machine. A hypervisor technology featuring tight integration to Linux kernel.
Installation
Installing on CentOS 7.5
- Tested on CentOS 7.5.1804
Install packages and start libvirtd
Install required packages:
# yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install
Start the libvirtd service:
# systemctl enable libvirtd
# systemctl start libvirtd
Make sure KVM module loaded using lsmod command:
# lsmod | grep -i kvm
kvm_intel 178927 0
kvm 578558 1 kvm_intel
irqbypass 13503 1 kvm
Configure bridged networking
Libvirtd configures a dhcpd-based network bridge by default. You can check in the following way:
# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.525400f0c02d yes virbr0-nic
# virsh net-list
Name State Autostart Persistent
----------------------------------------------------------
default active yes yes
Default configuration allows all VMs to access other VMs but not the network that the host machine is on. You can check the private network created by default:
# virsh net-dumpxml default
<network>
<name>default</name>
<uuid>51beab57-eb0c-40b9-bb5e-957f31c1b489</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:f0:c0:2d'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>
Add the following line to /etc/sysconfig/network-scripts/ifconfig-enp3s0:
BRIDGE=br0
Create a new file /etc/sysconfig/network-scripts/ifcfg-br0:
DEVICE="br0"
# I am getting ip from DHCP server #
BOOTPROTO="dhcp"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
ONBOOT="yes"
TYPE="Bridge"
DELAY="0"
Restart the networking service:
# systemctl restart NetworkManager
Check with brctl command:
# brctl show