Diff for "KVM/Installation"


Differences between revisions 2 and 42 (spanning 40 versions)
Revision 2 as of 2008-12-24 16:13:57
Size: 4143
Editor: mx
Comment:
Revision 42 as of 2011-05-20 16:56:17
Size: 6831
Editor: ua-178
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
||<tablestyle="float:right; font-size: 0.9em; width:30%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;"><<TableOfContents(2)>>|| <<Include(KVM/Header)>>
||<tablestyle="float:right; font-size: 0.9em; width:30%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;"><<TableOfContents(3)>>||
Line 6: Line 7:
== How to check if your CPU supports hardware virtualisation == == Pre-installation checklist ==
=== Check that
your CPU supports hardware virtualization ===
Line 8: Line 10:
To run KVM, you need a processor that supports virtualisation; Intel and AMD both have developed extensions for their processors, respectively INTEL-VT and AMD-V. To see if your processor supports one of these, you can run the following command: To run KVM, you need a processor that supports hardware virtualization. Intel and AMD both have developed extensions for their processors, deemed respectively Intel VT-x (code name Vanderpool) and AMD-V (code name Pacifica). To see if your processor supports one of these, you can review the output from this command:
Line 11: Line 13:
egrep '(vmx|svm)' --color=always /proc/cpuinfo
egrep -c '(vmx|svm)' /proc/cpuinfo
Line 15: Line 16:
If nothing is printed, it means that your CPU doesn't support hardware virtualisation. Otherwise, it does - but you still need to make sure that virtualisation is enabled in the BIOS. If '''0''' it means that your CPU doesn't support hardware virtualization.
Line 17: Line 18:
== Use a 64 bit kernel if you need more than 2GB RAM for your VMs == If '''1''' (or more) it does - but you still need to make sure that virtualization is enabled in the BIOS.
Line 19: Line 20:
To serve more than 2047 MB of RAM for your VMs, you '''must''' use a 64 bit kernel (see [[32bit_and_64bit]]). On a 32 bit kernel install, you'll be limited to 2GB RAM at maximum for a given VM. By default, if you booted into XEN kernel it will not display svm or vmx flag using the grep command. To see if it is enabled or not from xen, enter:
Line 21: Line 22:
To see if your processor is 64 bit, you can run the following command:
Line 23: Line 23:
grep ' lm ' /proc/cpuinfo cat /sys/hypervisor/properties/capabilities
Line 26: Line 26:
If nothing is printed, it means that your CPU is not 64 bit. ''lm'' stands for Long Mode, so 64 bit CPU. You must see hvm flags in the output.
Line 28: Line 28:
To see if your running kernel is 64 bit, just issue the following command: Alternatively, you may execute:

{{{
kvm-ok
}}}

which may provide an output like this:

{{{
INFO: Your CPU supports KVM extensions
INFO: /dev/kvm exists
KVM acceleration can be used
}}}

If you see :
{{{
INFO: Your CPU does not support KVM extensions
KVM acceleration can NOT be used
}}}
You can still run virtual machines, but it'll be much slower without the KVM extensions.



=== Use a 64 bit kernel (if possible) ===

Running a 64 bit kernel on the host operating system is recommended but not required.

 1. To serve more than 2GB of RAM for your VMs, you '''must''' use a 64-bit kernel (see [[32bit_and_64bit]]). On a 32-bit kernel install, you'll be limited to 2GB RAM at maximum for a given VM.
 1. Also, a 64-bit system can host both 32-bit and 64-bit guests. A 32-bit system can only host 32-bit guests.

To see if your processor is 64-bit, you can run this command:
{{{
egrep -c ' lm ' /proc/cpuinfo
}}}

If '''0''' is printed, it means that your CPU is not 64-bit.

If '''1''' or higher, it is. Note: ''lm'' stands for Long Mode which equates to a 64-bit CPU.

Now see if your running kernel is 64-bit, just issue the following command:
Line 33: Line 72:
'''x86_64''' indicates a 64-bit kernel running. If you use see i386, i486, i586 or i686, you're running a 32 bit kernel. '''x86_64''' indicates a running 64-bit kernel. If you use see i386, i486, i586 or i686, you're running a 32-bit kernel.

Note: x86_64 is synonymous with amd64.
Line 37: Line 78:
=== Install Necessary Packages ===
Line 41: Line 83:
'''Lucid (10.04) or later'''
Line 42: Line 85:
$ sudo apt-get install kvm libvirt-bin ubuntu-vm-builder qemu bridge-utils $ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
Line 45: Line 88:
 * libvirt-bin provides libvirtd which you need to administer qemu and kvm instances using libvirt
 * kvm is the backend
 * ubuntu-vm-builder powerful command line tool for building virtual machines
 * bridge-utils provides a bridge from your network to the virtual machines
'''Karmic (9.10) or earlier'''
{{{
$ sudo aptitude install kvm libvirt-bin ubuntu-vm-builder bridge-utils
}}}
Line 50: Line 93:
You might also want to install ''virt-viewer'', for viewing instances  * ''libvirt-bin'' provides libvirtd which you need to administer qemu and kvm instances using libvirt
 * ''qemu-kvm'' (''kvm'' in Karmic and earlier) is the backend
 * ''ubuntu-vm-builder'' powerful command line tool for building virtual machines
 * ''bridge-utils'' provides a bridge from your network to the virtual machines
Line 52: Line 98:
'''8.10 (intrepid) Notes''':
 * Two meta packages have been added: {{{ubuntu-virt-server}}} and {{{ubuntu-virt-mgmt}}}. {{{Ubuntu-virt-server}}} installs the packages needed to setup a base virtulization host (kvm, libvirt-bin and openssh-server) and {{{ubuntu-virt-mgmt}}} installs what you need to administer it from a management station (virt-manager, python-vm-builder and virt-viewer).
 * {{{ubuntu-vm-builder}}} has been replaced by {{{python-vm-builder}}} ([[JeOSVMBuilder|tutorial]]).
You might also want to install ''virt-viewer'', for viewing instances.
Line 56: Line 100:
'''Note:'''
libdevmapper does not load its module when it is installed ([[https://bugs.launchpad.net/ubuntu/+source/vm-builder/+bug/277648|bug 277648]]) , so you will either need to do a
 {{{ $ sudo modprobe dm-loop }}}
or reboot your system before being able to use it.
=== Add Users to Groups ===
Line 61: Line 102:
== Adding Users == '''Karmic (9.10) and later'''
Line 63: Line 104:
Add yourself to the ''libvirtd'' group (note that there is no need to add yourself to the ''kvm'' group): The libvirtd-bin package will automatically add your username to the libvirtd group. There is no need to be part of the kvm group.

After the installation, '''you need to relogin''' so that your user becomes an effective member of the libvirtd group. The members of this group can run virtual machines. (You can also 'newgrp kvm' in a terminal, but this will affect only that terminal.)

'''Releases prior to Karmic (9.10)'''

You need to ensure that your username is added to the groups: kvm and libvirtd.

To check:
Line 66: Line 115:
$ sudo adduser `id -un` libvirtd $ groups
adm dialout cdrom floppy audio dip video plugdev fuse lpadmin admin sambashare kvm libvirtd
Line 69: Line 119:
This will give you access to the system-wide libvirtd instance. This is preferable for you because it gives you access to the advanced networking options rather than simply the "userspace networking" option as you may know it from QEmu. To add your <username> to the groups:
Line 71: Line 121:
'''Note: You need to log out and log back in for the new group membership to take effect.''' {{{
$ sudo adduser `id -un` kvm
Adding user '<username>' to group 'kvm' ...
$ sudo adduser `id -un` libvirtd
Adding user '<username>' to group 'libvirtd' ...
}}}
Line 73: Line 128:
Note: The `id -un` command will return the current username, for example if your username is ''joe'' you will be effectively be running ''sudo adduser joe libvirtd''. After the installation, '''you need to relogin''' so that your user becomes an effective member of kvm and libvirtd user groups. The members of this group can run virtual machines.

=== Verify Installation ===
Line 93: Line 150:
Something is wrong and you probably want to fix this before you move on. The critical point here is whether or not you have write access to ''/var/run/libvirt/libvirt-sock''. Something is wrong (e.g. you did not relogin) and you probably want to fix this before you move on. The critical point here is whether or not you have write access to ''/var/run/libvirt/libvirt-sock''.

The sock file should have permissions similar to:

{{{
$ sudo ls -la /var/run/libvirt/libvirt-sock
srwxrwx--- 1 root libvirtd 0 2010-08-24 14:54 /var/run/libvirt/libvirt-sock
}}}

=== Optional: Install virt-manager (graphical user interface) ===

If you are working on a desktop computer you might want to install a GUI tool to manage virtual machines.

{{{
$ sudo apt-get install virt-manager
}}}

''Virtual Machine Manager'' will appear in ''Applications'' -> ''System Tools'' menu. First create a new connection to local QEMU instance from ''File'' -> ''Add Connection'' menu. Localhost (QEMU) should appear in the virtual machine list. ''Note: there already exist Localhost (QEMU Usermode) connection but this does not work at least on Ubuntu 10.04.''

Create a new virtual machine by pressing the top left ''Create a new virtual machine'' toolbar button.


== Version-specific Notes ==
=== 8.10 (Intrepid) Notes ===
 * Two meta packages have been added: {{{ubuntu-virt-server}}} and {{{ubuntu-virt-mgmt}}}. {{{Ubuntu-virt-server}}} installs the packages needed to setup a base virtulization host (kvm, libvirt-bin and openssh-server) and {{{ubuntu-virt-mgmt}}} installs what you need to administer it from a management station (virt-manager, python-vm-builder and virt-viewer).
 * {{{ubuntu-vm-builder}}} has been replaced by {{{python-vm-builder}}} ([[JeOSVMBuilder|tutorial]]).

Note: libdevmapper does not load its module when it is installed ([[https://bugs.launchpad.net/ubuntu/+source/vm-builder/+bug/277648|bug 277648]]) , so you will either need to do a
 {{{ $ sudo modprobe dm-loop }}}
or reboot your system before being able to use it.

<<Include(KVM/Header)>>

Installation

Pre-installation checklist

Check that your CPU supports hardware virtualization

To run KVM, you need a processor that supports hardware virtualization. Intel and AMD both have developed extensions for their processors, deemed respectively Intel VT-x (code name Vanderpool) and AMD-V (code name Pacifica). To see if your processor supports one of these, you can review the output from this command:

egrep -c '(vmx|svm)' /proc/cpuinfo

If 0 it means that your CPU doesn't support hardware virtualization.

If 1 (or more) it does - but you still need to make sure that virtualization is enabled in the BIOS.

By default, if you booted into XEN kernel it will not display svm or vmx flag using the grep command. To see if it is enabled or not from xen, enter:

cat /sys/hypervisor/properties/capabilities

You must see hvm flags in the output.

Alternatively, you may execute:

kvm-ok 

which may provide an output like this:

INFO: Your CPU supports KVM extensions
INFO: /dev/kvm exists
KVM acceleration can be used

If you see :

INFO: Your CPU does not support KVM extensions
KVM acceleration can NOT be used

You can still run virtual machines, but it'll be much slower without the KVM extensions.

Use a 64 bit kernel (if possible)

Running a 64 bit kernel on the host operating system is recommended but not required.

  1. To serve more than 2GB of RAM for your VMs, you must use a 64-bit kernel (see 32bit_and_64bit). On a 32-bit kernel install, you'll be limited to 2GB RAM at maximum for a given VM.

  2. Also, a 64-bit system can host both 32-bit and 64-bit guests. A 32-bit system can only host 32-bit guests.

To see if your processor is 64-bit, you can run this command:

egrep -c ' lm ' /proc/cpuinfo

If 0 is printed, it means that your CPU is not 64-bit.

If 1 or higher, it is. Note: lm stands for Long Mode which equates to a 64-bit CPU.

Now see if your running kernel is 64-bit, just issue the following command:

uname -m

x86_64 indicates a running 64-bit kernel. If you use see i386, i486, i586 or i686, you're running a 32-bit kernel.

Note: x86_64 is synonymous with amd64.

Installation of KVM

Install Necessary Packages

For the following setup, we will assume that you are deploying KVM on a server, and therefore do not have any X server on the machine.

You need to install a few packages first:

Lucid (10.04) or later

$ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Karmic (9.10) or earlier

$ sudo aptitude install kvm libvirt-bin ubuntu-vm-builder bridge-utils
  • libvirt-bin provides libvirtd which you need to administer qemu and kvm instances using libvirt

  • qemu-kvm (kvm in Karmic and earlier) is the backend

  • ubuntu-vm-builder powerful command line tool for building virtual machines

  • bridge-utils provides a bridge from your network to the virtual machines

You might also want to install virt-viewer, for viewing instances.

Add Users to Groups

Karmic (9.10) and later

The libvirtd-bin package will automatically add your username to the libvirtd group. There is no need to be part of the kvm group.

After the installation, you need to relogin so that your user becomes an effective member of the libvirtd group. The members of this group can run virtual machines. (You can also 'newgrp kvm' in a terminal, but this will affect only that terminal.)

Releases prior to Karmic (9.10)

You need to ensure that your username is added to the groups: kvm and libvirtd.

To check:

$ groups
adm dialout cdrom floppy audio dip video plugdev fuse lpadmin admin sambashare kvm libvirtd

To add your <username> to the groups:

$ sudo adduser `id -un` kvm
Adding user '<username>' to group 'kvm' ...
$ sudo adduser `id -un` libvirtd
Adding user '<username>' to group 'libvirtd' ...

After the installation, you need to relogin so that your user becomes an effective member of kvm and libvirtd user groups. The members of this group can run virtual machines.

Verify Installation

You can test if your install has been successful with the following command:

$ virsh -c qemu:///system list
 Id Name                 State
----------------------------------

$

If on the other hand you get something like this:

$ virsh -c qemu:///system list
libvir: Remote error : Permission denied
error: failed to connect to the hypervisor
$

Something is wrong (e.g. you did not relogin) and you probably want to fix this before you move on. The critical point here is whether or not you have write access to /var/run/libvirt/libvirt-sock.

The sock file should have permissions similar to:

$ sudo ls -la /var/run/libvirt/libvirt-sock
srwxrwx--- 1 root libvirtd 0 2010-08-24 14:54 /var/run/libvirt/libvirt-sock

Optional: Install virt-manager (graphical user interface)

If you are working on a desktop computer you might want to install a GUI tool to manage virtual machines.

$ sudo apt-get install virt-manager

Virtual Machine Manager will appear in Applications -> System Tools menu. First create a new connection to local QEMU instance from File -> Add Connection menu. Localhost (QEMU) should appear in the virtual machine list. Note: there already exist Localhost (QEMU Usermode) connection but this does not work at least on Ubuntu 10.04.

Create a new virtual machine by pressing the top left Create a new virtual machine toolbar button.

Version-specific Notes

8.10 (Intrepid) Notes

  • Two meta packages have been added: ubuntu-virt-server and ubuntu-virt-mgmt. Ubuntu-virt-server installs the packages needed to setup a base virtulization host (kvm, libvirt-bin and openssh-server) and ubuntu-virt-mgmt installs what you need to administer it from a management station (virt-manager, python-vm-builder and virt-viewer).

  • ubuntu-vm-builder has been replaced by python-vm-builder (tutorial).

Note: libdevmapper does not load its module when it is installed (bug 277648) , so you will either need to do a

  •  $ sudo modprobe dm-loop 

or reboot your system before being able to use it.

KVM/Installation (last edited 2020-03-23 20:00:34 by hamishmb)