How to Create Virtual Machines in Linux Using KVM (Kernel-based Virtual Machine) - Part 1
Abstract: to create your virtual machines from CLI. libvirt provides the server and host side libraries for interacting with hypervisors and host systems. Let’s
This tutorial discusses KVM introduction, deployment and how to use it to create virtual machines under RedHat based-distributions such as RHEL/CentOS7 and Fedora 21.
What is KVM?KVM or (Kernel-based Virtual Machine) is a full virtualization solution for Linux on Intel 64 and AMD 64 hardware that is included in the mainline Linux kernel since 2.6.20 and is stable and fast for most workloads.
KVM FeautresThere are many useful features and advantages which you will gain when you use KVM to deploy your virtual platform. KVM hypervisor supports following features:
- Over-committing : Which means allocating more virtualized CPUs or memory than the available resources on the system.
- Thin provisioning : Which allows the allocation of flexible storage and optimizes the available space for every guest virtual machine.
- Disk I/O throttling : Provides the ability to set a limit on disk I/O requests sent from virtual machines to the host machine.
- Automatic NUMA balancing : Improves the performance of applications running on NUMA hardware systems.
- Virtual CPU hot add capability : Provides the ability to increase processing power as needed on running virtual machines, without downtime.
This is our first on-going KVM (Kernel-based Virtual Machine) series, here we will going to cover following articles in part wise fashion.
Part 1: How to Create Virtual Machines in Linux Using KVM (Kernel-based Virtual Machine) Part 2: Deploy Virtual Machines using Network Install (HTTP, FTP and NFS) under KVM Part 3: How to Manage KVM Storage Volumes and Pools for Virtual Machines Part 4: Managing KVM Virtual Environment using CLI Tools PrerequisitesMake sure that your system has the hardware virtualization extensions: For Intel-based hosts, verify the CPU virtualization extension [vmx] are available using following command.
[[email protected] ~]# grep -e 'vmx' /proc/cpuinfoCheck Virtualization Support
For AMD-based hosts, verify the CPU virtualization extension [svm] are available.
[[email protected] ~]# grep -e 'svm' /proc/cpuinfoCheck CPU Virtualization Support
If there is no output make sure that virtualization extensions is enabled in BIOS. Verify that KVM modules are loaded in the kernel 「it should be loaded by default」.
[[email protected] ~]# lsmod | grep kvm
The output should contains kvm_intel for intel-based hosts or kvm_amd for amd-based hosts.
Check KVM Kernel ModuleBefore starting , you will need the root account or non-root user with sudo privileges configured on your system and also make sure that your system is up-to-date.
[[email protected] ~]# yum update
Make sure that Selinux be in Permissive mode.
[[email protected] ~]# setenforce 0Step 1: KVM Installation and Deployment
1. We will install qemu-kvm and qemu-img packages at first. These packages provide the user-level KVM and disk image manager.
[[email protected] ~]# yum install qemu-kvm qemu-img
2. Now, you have the minimum requirement to deploy virtual platform on your host, but we also still have useful tools to administrate our platform such as:
- virt-manager provides a GUI tool to administrate your virtual machines.
- libvirt-client provides a CL tool to administrate your virtual environment this tool called virsh.
- virt-install provides the command 「virt-install」 to create your virtual machines from CLI.
- libvirt provides the server and host side libraries for interacting with hypervisors and host systems.
Let’s install these above tools using the following command.
[[email protected] ~]# yum install virt-manager libvirt libvirt-python libvirt-client
3. For RHEL/CentOS7 users, also still having additional package groups such as: Virtualization Client, Virtualization Platform and Virtualization Tools to install.
[[email protected] ~]#yum groupinstall virtualization-client virtualization-platform virtualization-tools
4. The virtualization daemon which manage all of the platform is 「libvirtd」. lets restart it.
[[email protected] ~]#systemctl restart libvirtd
5. After restarting the daemon, then check its status by running following command.
[[email protected] ~]#systemctl status libvirtdSample Output
libvirtd.service - Virtualization daemon Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled) Active: active (running) since Mon 2014-12-29 15:48:46 EET; 14s ago Main PID: 25701 (libvirtd)Check Libvirtd Status
Now, lets switch to the next section to create our virtual machines.
Step 2: Create VMs using KVMAs we mentioned early, we have some useful tools to manage our virtual platform and creating virtual machines. One of this tools called [virt-manager] which we use in the next section.
6. Although virt-manager is a GUI based tool, we also could launch/start it from terminal as well as from GUI.
[[email protected] ~]#virt-managerUsing GNOME Start Virtual Manager in GNOME Using GNOME Classic Start Virtual Manager in GNOME Classic
7. After starting the tool, this window will appear.
Start Virtual Manager Window8. By default you will find manager is connected directly to localhost, fortunately you could use the same tool to mange another host remotely. From 「File」 tab, just select 「Add Connection」 and this window will appear.
Add ConnectionCheck 「Connect to remote host」 option then provide Hostname/IP of the remote server. If you need establishing connection to the remote host at every time the manager starting, just check 「Auto Connect」 option.
9. Let’s return to our localhost, before creating new virtual machine you should decide where will the files be stored?! in other words, you should create the Volume Disk (Virtual disk / Disk image ) for your virtual machine.
By Right clicking on localhost and selecting 「Details」 and then select 「Storage」 tab.
VM Storage Details VM Storage Volume10. Next, press 「New Volume」 button, then enter the name of your new virtual disk (Volume Disk) and enter the size which you want/need in the 「Max Capacity」 section.
Create VM Storage DiskThe allocation size is the actual size for your disk which will be allocated immediately from your physical disk after finishing the steps.
Note: This is an important technology in storage administration field which called 「thin provision」. It used to allocate the used storage size only, NOT all of available size.
For example, you created virtual disk with size 60G, but you have used actually only 20G, using this technology the allocated size from your physical hard disk will be 20G not 60G.
In another words the allocated physical size will by dynamically allocated depending on the actual used size. You could find more information in details at VMWare vStorage Thin Provisioning.
11. You will note that a label of the new Volume Disk has been appeared in the list.
VM Storage LabelYou should also notice the path of the new disk image (Volume Disk), by default it will be under /var/lib/libvirt/images, you can verify it using the following command.
[[email protected] Downloads]# ls -l /var/lib/libvirt/images -rw-------. 1 root root 10737418240 Jan 3 16:47 vm1Storage.img
12. Now, we’re ready to create our virtual machine. Let’s hit the button 「VM」 in the main window, this wizard window will be appear.
Create New Virtual MachineSelect the installation method which you will use to create the virtual machine. For now we will use Local install media, later we will discuss the remaining methods.
13. Now its time to specify which Local install media to be used, we have two options:
- From physical [CDROM/DVD].
- From ISO image.
For our tutorial, lets use ISO image method, so you should provide the path of your ISO image.
Select Installation MediaImportant: Unfortunately there’s a really silly bug for whom use RHEL/CentOS7. This bug prevents you from installation using physical [CDROM/DVD], you will find the option is grayed like this.
Disabled CD DVD Rom in KVMAnd if you hold your cursor on it, this error message will appear.
CD DVD Not Supported in KVMUntil now there is no official/direct solution for this bug, you could find more information about this but here.
14. The storage has return back, we will use the virtual disk which we have created early to install virtual machine on it. It will be as shown.
Enable Storage for Virtual Machine15. The final step which ask you about the name of your virtual machine and another advanced options lets talk about it later.
Enter Name of Virtual MachineIf you like to change some configuration or doing some customization just check 「Customize configuration before install」 option. Then click finish and wait seconds, control console will appear for your Guest OS to manage it
Virtual Machine Installation ConclusionNow you have learned what is is KVM, How to manage your virtual platform using GUI tools, How to deploy virtual machine using it and another awesome things.
Although this isn’t end of the article, in our up-coming articles, we will discuss another important topics which related to KVM. Make your hands dirty using the previous knowledge and be ready for the next part…..