XEN

Download as pdf or txt
Download as pdf or txt
You are on page 1of 44

Manage Virtualization with Xen

SECTION 8 Manage Virtualization with Xen

Virtualization is one of the hottest topics in the industrie at the


moment. However, the idea of virtualization is not new at all.
Hardware platforms like IBMs pSeries or zSeries support
virtualization since a long time and software like VMware
Workstation for x86 based systems has been available for many
years.

Now virtualization moves to mainstream, because affordable Intel


or AMD based x86 systems, provide enough resources to run more
than one virtual machine at the same time.

SUSE Linux Enterprise Server 10 comes with build-in virtualization


support through the Xen virtual machine monitor. In the following
section you’ll learn how to use this powerful feature.

In this section you learn about the Xen virtualization technology in


SUSE Linux Enterprise Server 10.

Objectives
1. Understand the Concept of Virtualization
2. Understand how Xen Works
3. Install Xen
4. Manage Xen Domains with YaST
5. Manage Xen Domains at the Command Line
6. Understand Xen Networking
7. Migrate a Guest Domain

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

Objective 1 Understand the Concept of Virtualization


Virtualization technology separates a running instance of an
operating system from the physical hardware. Instead of a physical
machine, the operating system runs in a so-called virtual machine.
Multiple virtual machines share the resources of the underlying
hardware.

Virtualization allows you to run multiple virtual systems on one


single physical machine.

Figure 8-1

The following are the main advantages of virtualization, in


comparison with non-virtualized physical hardware:
1. Efficient Hardware Utilization. Often systems are not using the
full potential of their hardware. By running multiple virtual
machines on the same hardware, the resources are used more
efficiently.
2. Reduced Downtime. Virtual machines can be easily migrated to
to a new physical host system. This reduces the downtime in case
of a hardware failure.
3. Flexible Resource Allocation. Hardware resources can be
allocated on demand. When the resource requirements of a
virtual machine change, resource allocation can be adjusted or
the machine can be migrated to a different physical host.

8-2 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

Objective 2 Understand how Xen Works


The idea of virtualization is not new. Platforms like IBM zSeries or
pSeries offer built-in virtualization and Intel x86 based systems can
be virtualized using third-party software like VMware.

SUSE Linux Enterprise Server 10 comes with a virtualization


technology called Xen, which allows you to run multiple virtual
machines on a single piece of Intel x86 based hardware.

At the moment, the operating systems that run in a Xen virtual


machine need to be modified. Therefore only open source operating
systems like Linux or BSD can be installed. One exception is
Netware, which has been adjusted by Novell to run in a Xen virtual
machine.

Intel and AMD are developing extensions (Intel Vanderpool and


AMD Pacifica) to the x86 Standard to support virtualization. Once
these extensions are available, Xen will be able to run unmodified
operating systems including Microsoft Windows.

x You can find updated information about Xen, including an instruction how
to run unmodified operating systems on the OpenSUSE Xen page at:
http://en.opensuse.org/Xen

To understand how Xen works, you need to do the following:


■ Understand Virtualization Methods
■ Understand the Xen Architecture

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-3
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

Understand Virtualization Methods

Before we talk in detail about the Xen technology, you should


understand the following two different virtualization methods.
■ Full Virtualization. In this case the virtualization software
emulates a full virtual machine including all hardware
resources. The operating system running in the virtual machine
(guest OS) communicates with these resources as if they were
physical hardware. VMware Workstation is a popular full
virtualization software.

Figure 8-2

8-4 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

■ Para Virtualization. Instead of emulating a full virtual


machine, para-virtualization software provides an Application
Programming Interface (API) which is used by the guest OS to
access hardware resources. This requires that the guest OS is
aware that it runs in a virtual machine and needs to know how
to access the API. Xen is a para-virtualization software.

Figure 8-3

Para virtualization provides better performance because it does not


emulate all hardware details. The drawback is, that the guest OS
needs to be modified to run with para-virtualization.
Full-virtualization works with an unmodified guest OS but
generates more overhead resulting in a weaker performance.

Another advantage of para-virtualization is the fexible resource


allocation. As the guest OS is aware of the virtual environment, Xen
can, for example, change the memory allocation of a virtual
machine on the fly without any reboot.

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-5
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

Understand the Xen Architecture

Xen consists of the following two major components:


■ Virtual Machine Monitor. The virtual machine monitor forms
a layer between physical hardware and virtual machines. In
general this kind of software is called a Hypervisor.
■ Xen tools. The Xen tools are a set of command line
applications that are used to administer virtual machines.

The virtual machine monitor must be loaded before any of the


virtual machines are started. When working with Xen, virtual
machines are called domains.

The Xen virtual machine monitor neither includes any drivers to


access the physical hardware of the host machine nor an interface to
communicate directly with an administrator. These tasks are
performed by an operating system running in the privileged
domain0.

The following is an overview of a Xen system with three domains.

Figure 8-4

8-6 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

A process called xend runs in the domain0 Linux installation. This


process is used to manage all Xen domains running on a system and
to provide access to their consoles.

A unprivileged domain is also called domainU in the Xen


terminology.

SUSE Linux Enterprise Server 10 can be used for privileged


(domain0) and unprivileged (domainU) Xen domains.

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-7
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

Objective 3 Install Xen


To setup a Xen system, your start from a normal SUSE Linux
Enterprise 10 installation, which is going to run in domain0.

The other Xen domains can later be installed in physical partitions


or file system images. When you plan to use physical partitions, you
have to make sure that the initial SUSE Linux Enterprise Server 10
installation is not using all of the available disc space.

For maximum flexibility it makes sense to use the logical volume


manager LVM or EVMS for a Xen system.

The following packages have to be installed in the initial SUSE


Linux Enterprise Server 10 installation:
■ xen. This package contains the Xen virtual machine monitor
(Hypervisor).
■ xen-tools. Contains xend and a collection of command line
tools to administer a Xen system.
■ kernel-xen. This package contains a modified Linux kernel that
runs in a Xen domain.
■ xen-doc-* (optional). Xen documentation in various formats.

The installation of the Xen package automatically adds an entry like


the following into the bootloader configuration file
/boot/grub/menu.lst.

title Xen
root (hd0,3)
kernel /boot/xen.gz
module /boot/vmlinuz-Xen root=/dev/hda3 selinux=0
module /boot/initrd-Xen

8-8 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

x On some Xen systems you might see the parameter dom0_mem in the kernel
module line. This parameter assigns a certain amount of initial main memory
to domain0 at boot time. However in Xen version 3, this parameter is not
required anymore.

Initially all available memory is used by domain0. When you start additional
domainUs, the required amount of memory is reduced in domain0 and used
for the new domainU.

The entry in menu.lst adds a new option to the boot menu of your
system. When selecting this entry, the Xen virtual machine monitor
is loaded (kernel /boot/xen.gz) which starts SUSE Linux Enterprise
Server 10 in domain0 (see the lines starting with module).

Before rebooting your system with the Xen option, you should
check if the automatically generated entry is correct. Make sure
that ...
■ ... the line root (hd0,3) points to the filesystem which contains
the Xen Virtual Machine Monitor and the Kernel of the Linux
installation for domain0. In our example hd0,3 means the
fourth partition on the first hard drive in the system. Also check
if the parameter root in the first module line points to the root
partition of the domain0 installation.
■ ... the Xen version of the Linux kernel and the initrd are loaded
in the module line. The names of the image files should end in
-xen.

After checking the bootloader configuration file, you can reboot


your system and select the Xen option at the bootloader menu. In
the early stages of the boot process, you will see some messages of
the Xen virtual machine monitor on the screen. Then the domain0
Linux installation is started.

In case the system is not booting properly, you can switch back to a
non-virtualized system by selecting the regular SUSE Linux
Enterprise Server 10 boot option.

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-9
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

x When running Xen, the network setup is done by the xend management
process. This can interfere with the native network configuration scripts of
the domains. Especially SuSEfirewall2 is known to cause problems. It´s
therefore recommended to stop SuSEfirewall2 with rcSuSEfirewall2 and to
remove the firewall scripts from the init process:

insserv -r SuSEfirewall2_setup
insserv -r SuSEfirewall2_init
insserv -r SuSEfirewall2_final (conditional)

8-10 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

Exercise 8-1 Install Xen

In this exercise, you learn how to install Xen and configure


domain0.

Do the following:
■ Part I: Install XenPackages.
■ Part II: Prepare for Reboot
■ Part III: Reboot and Test Xen.

Part I: Install XenPackages.

Do the following:
1. Start the YaST Controll Center.
2. Select Software > Software Management.
3. From the Filter menu, select Search.
4. Enter xen in the search field and select search.
5. On the right side, select the packages xen, kernel-xen and
xen-tools.
6. Select Accept and let YaST install all required software
packages.
7. Close the YaST Control Center.

Part II: Prepare for Reboot

Do the following:
1. Open a terminal window and su - to the root user.
2. Open the file /boot/grub/menu.lst with a text editor (eg. vi).
3. Make sure, that there is a section with the title Xen in the file.

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-11
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

4. In this section, make sure that the parameter root= points to the
root partition of your installation.
5. Close the file.
6. Enter the command:
insserv -r SuSEfirewall2_setup
and
insserv -r SuSEfirewall2_init
7. Close the terminal window.

Part III: Reboot and Test Xen.

1. Reboot your system.


2. At the boot menu, select the Xen entry and hit Return.
3. When the system has been booted, log in as user geeko with the
password novell.
4. Open a terminal window and su - to the root user.
5. Enter the command xm list.
6. In the output you should see one domain (Domain-0) with the
status running.

(End of Exercise)

8-12 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

Objective 4 Manage Xen Domains with YaST


After you have installed Xen and the Xen tools, you can start to
create more Xen domains. Before we go into the details of the
domain configuration, we will introduce the YaST module Virtual
Machine Management (Xen).

This module provides a convenient way to create and control the


Xen domains on your system. The module can be started from the
System section in the YaST Control Center, and has to run on the
Linux system running in domain0.

x Not every detail of the Xen domain configuration is described in the


following. More in-depth information follow in the next objective.

The following is a step by step description of how to create and boot


a new Xen domain with this YaST module.

After you have started the module, the following dialog appears on
the screen:

Figure 8-5

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-13
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

In our example there is already one guest domain running on the


system, which is listed in the upper part of the dialog. The columns
of the table display various information about the domain including
the name, the status and the memory allocation.

The following buttons are in the lower part of the dialog:


■ Add. Select this button to create a new domain.
■ Refresh. This button refreshes the information about the
domains.
■ Delete. Deletes a domain completely.
■ Start. Starts a domain.
■ View. Opens a terminal window to access the console of a
domain.
■ Shutdown. Performs a regular shutdown of the guest OS.
■ Terminate. Terminates the domain immediately without
waiting for the guest OS to shutdown.

8-14 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

After selecting Add, the following dialog appears:

Figure 8-6

The dialog gives you two choices:


■ Run an OS installation program. This allows you to run a
SUSE Linux Enterprise Server installation from an installation
source that is registered in the system.
■ Use a disk image or a physical disk that contains OS boot
files. This option lets you create a Xen domain from an existing
installation in a physical disc or disc image.

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-15
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

For the following example we select the Run an OS installation


program option. The following dialog appears:

Figure 8-7

8-16 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

The following options can be adjusted by selecting their headlines:


■ AutoYaST. In this option you can specify an AutoYaST profile
that should be used for the installation. When there is no
AutoYaST profile, a manual installation is started.
■ Virtualization. You can switch between para virtualization and
full virtualization. Full-virtualization is only available on
supported hardware with Intel or AMD virtualization extension.
■ VM Properties. Here you can change the name of the new
domain.
■ Hardware. In this option you can configure the hardware
configuration of the domain. (Memory, Number of CPUs, ...)
■ Disks. Configure the Disks here. These can either be physical
block devices or file system / disc images.
■ Network. This option lets you add additional network adapters
to the domain.
■ Operating System Installation. Here you can configure the
installation source and additional installation options.

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-17
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

For our example we stay with the default and select Next. Now the
domain environment and the installation process is started.

Figure 8-8

The installation itself is a standard SUSE Linux Enterprise Server


installation, exept that it runs in text mode. After the packages have
been installed, the following dialog appears:

Figure 8-9

8-18 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

Select Continue.

The following dialog gives you a resume about the domain


configuration. Usually there is nothing to do here. Select Next in
this dialog and in the domain overview.

A terminal window opens up where you can finish the remaining


steps of the OS installation with YaST.

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-19
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

Exercise 8-2 Install a Guest Domain

In this exercise, you learn how to install a Xen guest domain using
YaST. Before you start with this exercise ,you must have installed
xen on your system.

Do the following:
1. Open the YaST Control Center.
2. Select System > Virtual Machine Management.
3. Select Add.
4. Select Run an OS installation program and then Next.
5. Select Next.
6. After a while, a terminal window opens and a standard SUSE
Linux Enterprise Server installation starts up. Select this
window.
7. Press Alt+N.
8. Use the tab-key to navigate to the item “Yes, I Agree to the
License Agreement”. Then press the space bar.
9. Press Alt+N.
10. Press Alt+N.

11. (Optional) Adjust the settings for Region and Time Zone.
Navigate to the menus with the tab-key and use the arrow keys to
change an option.
12. Press Alt+N.

13. Confirm the installation overview by pressing Alt+A.

14. Start the installation by pressing Alt+I.

15. (Wait till the installation has been finished.)

16. Select Continue in the Installation Complete message box.

17. Select Next in the domain configuration overview.

8-20 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

18. Select Finish in the Virtual Machine Started message box.

19. Switch to the terminal of the virtual domain.

20. Select Next (Press Alt+P).

21. Enter novell as root password. Select Next to continue (Press


Alt+N).
22. Accept that the password is too simple.

23. Select Alt-n to continue.

24. Select No, Skip this Test (Press Alt+O).

25. Select Next (Alt+N).

26. Select Next (Alt+N).

27. Select Next (Alt+N).

28. Create user geeko with the password novell.

29. Select Next (Alt+N).

30. Accept that the password is too simple.

31. Select Next (Alt+N).

32. Select Next (Alt+N).

33. Select Finish (Alt+F).

34. Test if you can login to the new domain as the user root with the
password novell.
35. Please do not close the terminal window, we will use it in the next
exercise.

(End of Exercise)

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-21
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

Objective 5 Manage Xen Domains at the Command


Line
In the following you learn how to manage Xen domains at the
command line. This includes:
■ Understand a Domain Configuration File
■ Use the xm Tool
■ Automate Domain Startup and Shutdown

Understand a Domain Configuration File

Every Xen domain needs a configuration file. For domains which


have been created with YaST, the configuration file is usually
located in /etc/xen/vm/.

Under /etc/xen/examples, you find two example files, which can be


used if you would like to create a configuration from scratch.
■ xmexample1. This is a template configuration file for a single
domain.
■ xmexample2. This is an example for multiple domain
configurations in one file.

For the beginning, xmexample1 is a better choice.

8-22 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

A configuration file contains several keywords which configure


different aspects of a Xen domain. The following is an example
configuration file using the most common options. The # character
is used for comments. Please read the comments in the example for
details about the configuration options.

# Unique name of the domain


name = “SLES10-WebServer”

# The following lines point to the kernel and initrd file


# on the filesystem of the domain. The filesystem itself is
# defined later.
kernel = "/boot/vmlinuz-Xen"
ramdisk = "/boot/initrd-Xen"

# The amount of memory that is initally assigned to the


# domain. This can be changed at runtime.
memory = 256

# The next line defines a some details about the network


# configuration. When left blank, defaults are used,
# which work fine in most cases.
vif = [ '' ]

# This defines the disc of the domain. “phy” means that the
# physical device /dev/hda1 is mapped to the virtual device
# /dev/hda1 in the domain. “w” indicates, that the disc is
# writable.
disk = [ 'phy:hda1,hda1,w' ]

# The following is an example for a file based filesystem


# image. In this case the “file:” keyword is used.
# disk = [ ’file:/data/vm/SLES10-disc.img,hda1,w’ ]

# Sets the device for the Linux Kernel


root = “/dev/hda1 ro“

x A good source for detailed documentation and howtos about Xen and the
domain configuration files is the Xen wiki at:
http://wiki.xensource.com/xenwiki/

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-23
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

Use the xm Tool

xm is the administration tool for Xen domains. xm communicates


with the xend management process running on the domain0 Linux
installation.

The following is the general format of a xm command line:

xm command [options] [arguments] [variables]

You can get a complete list of the most common xm commands by


entering xm help. A complete list can be viewed with
xm help --long. It is also possible to display specific information
about a certain command with xm help [command_name].

To start a virtual machine, the create command is used:

xm create -c -f /data/xen/SLES10-WebServer.conf

The -c option lets xm connect to the terminal of the started domain,


so that you can interact with the system. To disconnect from the
terminal and return to the original command line, enter the key
combination Ctrl-].

The -f option specifies the configuration file of the domain that


should be started.

The command list displays information about the currently running


Xen domains:

xm list

The output of the list command contains the following fields:


■ name. The name of the domain as specified in the configuration
file.

8-24 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

■ domid. A numeric, consecutive domain ID, which is


automatically assigned when the domain starts.
■ memory. The amount of memory assigned to the domain.
■ vcpus. The number of virtual CPUs utilized by this domain.
■ state. The current state of the domain. This could be:
❑ r. The domain is running.
❑ b. The domain has been created, but is currently blocked.
This can happen, when a domain is waiting for I/O or when
there is nothing to do for domain.
❑ p. The domain is paused. The state of the domain is saved
and can be restored.
❑ s. The domain is in the process of being shutdown.
❑ c. The domain is crashed, due to an error or
missconfiguration.

An alternative to list is the command top, which displays domain


information updated in realtime.

The console command connects you with the terminal of a running


domain:

xm console <domain_id>

The command takes the domain id as a parameter, which can be


determined with the list command (field domid). As mentioned
before, use the key combination Ctrl-] to disconnect from a
terminal.

With the pause command you can interrupt the execution of a


domain temporarily:

xm pause <domain_id>

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-25
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

A paused domain is not completely shut down. The current state is


saved and the execution of the domain can be continued with the
unpause command:

xm unpause <domain_id>

To shutdown a domain, use the shutdown command:

xm shutdown <domain_id>

In case the domain is not responding anymore, you can force the
shutdown of the domain with the destroy command:

xm destroy <domain_id>

To save the state of a domain for a longer time (eg. over a reboot of
domain0) you can use the save command:

xm save <domain_id> <filename>

The domain can be restored from the resulting file with the restore
command:

xm restore <filename>

Another commonly used command is mem-set, which allows you


to change the memory allocation of a domain:

xm mem_set <domain_id> <amount_of_momory>

The amount of memory is specified in megabytes.

8-26 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

x Instead of the domain ID <domain_id>, you can also use the domain name
in all xm commands.

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-27
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

Exercise 8-3 Change Memory Allocation of a Guest Domain

In this exercise, you learn how to change the memory allocation of a


guest domain by changing the domain configuration file.

The following assumes, that you still have an open terminal window
of the guest domain, that you have configured in the previous
exercises.

Do the follwoing:
1. Open a terminal window and su - to the root user.
2. Enter the command xm list.
3. Note the memory allocation of the domain vm1.
4. Switch to the terminal of the Xen domain and halt the system by
typing halt. Wait till the system has been halted.
5. Return to the root terminal and use the command xm list to verify
that the domain vm1 is not running anymore.
6. Open the file /etc/xen/vm/vm1 with a text editor.
7. Look for the memory parameter and change the value to 172.
8. Save and close the file.
9. Enter the following command to start the domain:

xm create -c -f /etc/xen/vm/vm1
10. Wait till the system has been booted and you see the login
prompt.
11. Press the key combination Ctrl-] to detach from the domain
terminal and return to the root terminal.

8-28 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

12. Use the command xm list to determine the memory allocation of


domain vm1. It should be 172MB.
13. Also note the ID of domain vm1.

14. Attach to the terminal of vm1 with the command


xm console <noted_id>

(End of Exercise)

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-29
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

Automate Domain Startup and Shutdown

When you start, shutdown or reboot domain0 of a Xen system, this


also affects the other running Xen domains. Without a running
domain0, the other Xen domains cannot operate.

SUSE Linux Enterprise Server 10 comes with a start script called


xendomains which is included in the package xen-tools.

The script should be installed on domain0 and does the following:


■ When domain0 is booted, all domains with configuration files
located under /etc/xen/auto/ are started.
■ When domain0 is shutdown or rebooted, running Xen domains
are shutdown automatically.

The script has some configuration options, which can be adjusted in


the file /etc/sysconfig/xendomains. The configuration variables in
this file are well documented.

One interesting option is to migrate domains automatically to a


different host when a domain0 is shutdown. This can be configured
in the variable XENDOMAINS_MIGRATE. The variable has to
be set to the IP address of the target machine. When the variable is
empty, no migration is performed.

8-30 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

Exercise 8-4 Automate Domain Startup

In this exercise, you learn how to startup domains automatically


when the system is booted.

Do the following:
1. Open a terminal window and su - to the root user.
2. Move the vm1 configuration file into the auto directory:
mv /etc/xen/vm/vm1 /etc/xen/auto/
3. Shutdown vm1 with the command xm shutdown vm1.
4. Wait a moment and control with the command xm list if the
domain has been shut down. Continue with next step when the
domain vm1 is not listed anymore.
5. Reboot you system by entering reboot.
6. At the boot prompt, select the Xen entry.
7. When the system has been started up, log in to the graphical
interface as user geeko with the password novell.
8. Open a terminal window and su - to the root user.
9. Enter the command xm list.
10. The domain vm1 should have been automatically started and
should be listed in the xm output.

(End of Exercise)

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-31
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

Objective 6 Understand Xen Networking


Usually the network connection of Xen domains works out of the
box. However, in case you would like to change the configuration,
networking with Xen can be a bit tricky. The following should give
you an overview of how Xen domains are connected to the physical
network.

To better understand the concept of Xen networking, do the


following:
■ Understand the Basic Networking Concept
■ Understand Bridging
■ Understand the Network Interfaces in domain0

Understand the Basic Networking Concept

In a Xen setup, domain0 is controlling the physical network


interfaces of a host system. Unprivileged domains are connected to
domain0 through virtual ethernet adapters.

One virtual adapter in an unprivileged domain is connected to one


virtual adapter in domain0.

In domain0, standard Linux networking mechanisms like bridging


or routing are used to connect the virtual adapters through the
physical adapter to the network.

8-32 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

The following is an illustration of this basic concept:

Figure 8-10

Understand Bridging

On SUSE Linux Enterprise Server 10, the default mechanism to


connect virtual and physical interfaces in domain0 is bridging.
Other mechanisms like routing with or without Network Address
Translation (NAT) are out of the scope of this course.

Bridging basically means that multiple network interfaces are


combined to one. Traditionally this technique is used to connect two
physical network interfaces or network segments.

In a Xen system, bridging is used to connect virtual and physical


network adapters in domain0. In a Xen system, you can consider the
bridge as a kind of virtual switch which all virtual and physical
interfaces are connected to.

The configuration of the bridge is done by the xend management


process. When a new domain is created, the following changes to
the network configuration are made (simplified):
1. Xen provides a virtual interface to the new domain.
2. xend creates a new virtual interface in domain0.

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-33
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

3. Both virtual interfaces are connected through a virtual point to


point connection.
4. The virtual interface in domain0 is added to the bridge with the
physical interface.

These steps only affect the general network connectivity. The IP


configuration in the Xen domains has to be done separately with
DHCP or a static network configuration.

xend is performing these network changes with the help of scripts,


which are located at /etc/xen/scripts/. The following scripts are
used for bridged networking:
■ network-bridge. This script is called initially when xend is
started. It sets up the bridge xenbr0 and moves the physical
interfaces onto that bridge.
■ vif-bridge. This script is called for every domain that is started
and adds the virtual interface to the bridge.

In the file /etc/xen/xend-config.sxp you can configure which


network scripts are used by xend.

Understand the Network Interfaces in domain0

When you look at the network interfaces in domain0 with the


command ip a, you can see that there are many more interfaces than
in a regular Linux installation.

8-34 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

The following is an example output of ip a on domain0 (shortened):

linux-3rsm:~ # ip a
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: peth0: <BROADCAST,MULTICAST,NOARP,UP> mtu 1500 qdisc
pfifo_fast qlen 100
link/ether fe:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff
inet6 fe80::fcff:ffff:feff:ffff/64 scope link
valid_lft forever preferred_lft forever
4: vif0.0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
link/ether fe:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff
inet6 fe80::fcff:ffff:feff:ffff/64 scope link
valid_lft forever preferred_lft forever
5: eth0: <BROADCAST,MULTICAST,NOTRAILERS,UP> mtu 1500 qdisc
noqueue
link/ether 00:11:25:81:4c:5b brd ff:ff:ff:ff:ff:ff
inet 149.44.171.67/23 brd 149.44.171.255 scope global
eth0
inet6 2001:780:101:aa00:211:25ff:fe81:4c5b/64 scope
global dynamic
valid_lft 29998sec preferred_lft 9996sec
inet6 fe80::211:25ff:fe81:4c5b/64 scope link
valid_lft forever preferred_lft forever
6: vif0.1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop
link/ether fe:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff
7: veth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
[...]
19: veth7: <BROADCAST,MULTICAST> mtu 1500 qdisc noop
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
20: xenbr0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
link/ether fe:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff
inet6 2001:780:101:aa00:fcff:ffff:feff:ffff/64 scope
global dynamic
valid_lft 29998sec preferred_lft 9996sec
inet6 fe80::200:ff:fe00:0/64 scope link
valid_lft forever preferred_lft forever
23: vif3.0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
link/ether fe:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff
inet6 fe80::fcff:ffff:feff:ffff/64 scope link
valid_lft forever preferred_lft forever

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-35
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

The following interface naming schema is used in domain0:


■ peth. These are physical interfaces in domain0. peth devices
are connected to the network bridge.
■ vif. These are virtual interfaces which are part of the bridge.
The name of a vif interface identifies to which domain this
interface is connected to. For example: vif6.0 is connected to
the first virtual interface in domain 6.
■ veth. These virtual interfaces are connected to the vif interfaces
of domain0 (vif0.x). By default 7 vif <-> veth pairs are created.
The veth interfaces can be used for more complex network
setups.
■ eth0. The first veth interface is named eth0 and connected with
vif0.0. This is the “default” network interface of domain0.
■ xenbr0. This is the default bridge that connects virtual and
physical interfaces.

The following illustration gives you an overview of the interfaces in


domain0.

Figure 8-11

8-36 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

You can use the command brctl show in domain0, to see which
interfaces have been added to the network bridge.

x Due to the complexity of the Xen network setup, the default firewall
(SuSEFirewall2) is not working correctly in domain0. It is therefore
recommended to disable SuSEFirewall2 and to setup a customized firewall
if needed.

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-37
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

Exercise 8-5 Check the Network Configuration

This exercise assumes that you have a Xen system with domain 0
and one more Xen domain running.

Do the following:
1. Open a terminal window and su - to the root user.
2. Make sure that the domain vm1 is running by typing the
command xm list.
3. In the output of the xm command, note the ID of the domain vm1.
4. View the network bridge configuration with the command
brctl show.
5. You should see the configuration of the bridge xenbr0. The
interfaces peth0 (physical interface) vif0.0 (virtual interface of
domain 0) and the virtual interface vifx.0 (where x is the domain
ID of domain vm1) should be added to the bridge.
6. Shutdown the domain with the command xm shutdown vm1.
7. Wait a moment and control with the command xm list if the
domain has been shut down. Continue with next step when the
domain vm1 is not listed anymore.
8. Enter the command brctl show again. Note that the inerface of
the domain vm1 has been removed from the bridge.
9. Restart the domain with: xm create -f /etc/xen/vm/vm1
10. Note the ID of vm1 and check with brctl show if the interface of
vm1 has been added again.

(End of Exercise)

8-38 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

Objective 7 Migrate a Guest Domain


One advantage of virtualization is that domains can easily be moved
from one physical system to another. Under Xen this procedure is
called a domain migration.

A domain migration is performed by copying the current memory


content. Please note the following before migrating a domain:
■ There is no automatic way to copy the mass storage devices of a
domain to another system. You have to make sure that the file
systems (file system images or physical partitions) are available
on the current and on the new host system. This can either be
done by copying the data manually or by using a distributed file
system (like NFS or SAN/NAS storage solutions).
■ When a domain is migrated, the network settings are not
automatically adjusted. Therfore the current and the new host
system have to be in the same subnet or the network settings
have to be manually adjusted after the migration.

You have the following two options to migrate a Xen domain:


■ Use Domain Save and Restore
■ Use Migration and Live Migration

Use Domain Save and Restore

A very simple way to migrate a domain is to use the save and


restore function of the xm tool.

With the command xm save <domain_id> <filename>, you can


suspend the specified domain and save the status to the given
filename.

This file can then be copied to the new host system. To restore the
domain, use the command xm restore <filename>.

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-39
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

As mentioned above, besides the file created with xm, you might
also have to copy the filesystems to the new host system.

Use Migration and Live Migration

Instead of the save and restore commands of xm, you can also use
the command xm migrate <domain_id> <target_host>. This
command migrates a domain directly to a new host. In this case it´s
not necessary to copy memory state files manually.

In order to get this working, the current and new host must be
running Xen and xend.

By adding the option --live to the migration command line, the


downtime during the migration can be reduced to typically
60-300ms. Instead of shutting down the domain before the
migration starts, Xen attempts to keep it running while the
migration is in progress.

The xend configuration file /etc/xen/xend-config.sxp contains two


options concerning domain migration:

(xend-relocation-server yes)

This option enables the migrating functionality in xend.

(xend-relocation-hosts-allow ’^localhost$’)

This option controls which hosts are allowed to conntect to xend for
domain migration. By default, only localhost is allowed to connect.
The option takes regular expressions as parameter. Have a look at
the configuration file for examples.

x Please note, that there are two xend involved in a domain migration (current
and new host). You might have to adjust the xend-config.sxp file on both
systems.

8-40 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

Summary

Objective Summary

1. Understand the Concept of


Virtualization

2. Understand how Xen Works There are two different kinds of


virtualization:
■ Full-Virtualization
■ Para-Virtualization
Xen uses para-virtualization. It
provides access to the physical
hardware through an API.

3. Install Xen The following packages have to


be installed in the initial SUSE
Linux Enterprise Server 10
installation:
■ xen. This package contains the
Xen Virtual Machine Monitor
(Hypervisor).
■ xen-tools. Contains xend and a
collection of command line tools
to administer a Xen system.
■ kernel-xen. This package
contains a modified Linux kernel
that runs in a Xen domain.
■ xen-doc-* (optional). Xen
documentation in various
formats.
The installation of xen adds an
entry in the GRUB configuration
file.

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-41
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

Objective Summary

4. Manage Xen Domains with YaST YaST provides a module which


can be used to create and
manage Xen domains. The
module is called: Virtual Machine
Management (Xen).
This module offers a convenient
way to create and control the Xen
domains on your system. The
module can be started from the
System section in the YaST
Control Center, and has to run on
the Linux system running in
domain0.

5. Manage Xen Domains at the Every Xen domain needs a


Command Line configuration file. Usually this is
located in /etc/xen/vm/.
xm is the central administration
tool for xen domains.
To start a virtual machine, the
create command is used. For
example:
xm create -c -f SLES10.conf
Some services are not required in
a xen environment and can be
removed.

■ insserv -r earlykbd
■ insserv -r kbd
■ insserv -r irq_balancer
Under Xen, all domains are
connected with the physical
network through domain0.

8-42 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Manage Virtualization with Xen

Objective Summary

6. Understand Xen Networking Domain0 is the central point to


configure the network connections
on a Xen system.
A network bridge in domain0 is
used as a virtual switch.
This bridge is set up and
controlled by xend.

7. Migrate a Guest Domain One advantage of virtualization is,


that domains can easily be moved
from one physical system to
another. Under Xen this
procedure is called a domain
migration.
Domains can be migrated with
xm‘s save and restore
commands or with the migrate
command.

Version 1 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by 8-43
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.
Upgrading to Certified Linux Professional 10

8-44 Copyright © 2007 Novell, Inc. Copying or distributing all or part of this manual is protected by Version 1
a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 license.

You might also like