DISCLAIMER:
This documentation is always under active development
and as such there may be mistakes and omissions -- watch out for
these and please report any you find to the developers' mailing list,
xen-devel@lists.xensource.com. The latest version is always available
on-line. Contributions of material, suggestions and corrections are
welcome.
Xen is Copyright ©2002-2005, University of Cambridge, UK, XenSource Inc., IBM Corp., Hewlett-Packard Co., Intel Corp., AMD Inc., and others. All rights reserved.
Xen 是一个开源项目。Xen的大多部分组件遵循GNU
GPL通
用公共许可证的第二版发布。其它部份的组件在GNU
次要通用公共许可证, Zope 公
共许可证
2.0 ,或``BSD-style'' 许可下发布。详情请见COPYING文件。
Xen is an open-source project. Most portions of Xen are licensed for copying under the terms of the GNU General Public License, version 2. Other portions are licensed under the terms of the GNU Lesser General Public License, the Zope Public License 2.0, or under ``BSD-style'' licenses. Please refer to the COPYING file for details.
Xen includes software by Christopher Clark. This software is covered by
the
following licence:
Xen 包括 Christopher Clark出品的软件。它适用以下版权许可;
Copyright (c) 2002, Christopher Clark. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
=10000 =10000 1.1
Xen is an open-source para-virtualizing virtual machine monitor (VMM), or ``hypervisor'', for the x86 processor architecture. Xen can securely execute multiple virtual machines on a single physical system with close-to-native performance. Xen facilitates enterprise-grade functionality, including:
Xen 是一个开放源代码的para-virtualizing虚拟机(VMM),或“管理程序 ”,是为x86架构的机器而设计的。Xen 可以在 一套物理硬件上安全的执行多个虚拟机
Usage scenarios for Xen include:
Xen的应用范围包括:
Para-virtualization permits very high performance virtualization, even on architectures like x86 that are traditionally very hard to virtualize.
This approach requires operating systems to be ported to run on Xen. Porting an OS to run on Xen is similar to supporting a new hardware platform, however the process is simplified because the para-virtual machine architecture is very similar to the underlying native hardware. Even though operating system kernels must explicitly support Xen, a key feature is that user space applications and libraries do not require modification.
With hardware CPU virtualization as provided by Intel VT and AMD SVM technology, the ability to run an unmodified guest OS kernel is available. No porting of the OS is required, although some additional driver support is necessary within Xen itself. Unlike traditional full virtualization hypervisors, which suffer a tremendous performance overhead, the combination of Xen and VT or Xen and Pacifica technology complement one another to offer superb performance for para-virtualized guest operating systems and full support for unmodified guests running natively on the processor. Full support for VT and Pacifica chipsets will appear in early 2006.
Paravirtualized Xen support is available for increasingly many operating systems: currently, mature Linux support is available and included in the standard distribution. Other OS ports--including NetBSD, FreeBSD and Solaris x86 v10--are nearing completion.
Xen currently runs on the x86 architecture, requiring a ``P6'' or
newer processor (e.g. Pentium Pro, Celeron, Pentium II,
Pentium III,
Pentium IV, Xeon, AMD Athlon, AMD Duron).
Multiprocessor
machines are
supported, and there is support for HyperThreading (SMT). In addition,
ports to IA64 and Power architectures are in progress.Xen
目前运行在x86架构的 机器上,需要P6或更新的处理器(比如 Pentium Pro, Celeron, Pentium II, Pentium III, Pentium IV, Xeon, AMD Athlon, AMD Duron)。支 持多 处理器,并且支持超线程(SMT)。另外对IA64和Power架构的开发也在进行中。
The default 32-bit Xen supports up to 4GB of memory. However
Xen 3.0
adds support for Intel's Physical Addressing Extensions (PAE), which
enable x86/32 machines to address up to 64 GB of physical memory. Xen
3.0 also supports x86/64 platforms such as Intel EM64T and AMD Opteron
which can currently address up to 1TB of physical
memory.
32位Xen支持最大4GB内存。可是Xen
3.0
为Intel处理器物理指令集(PAE)提供支持,这样就能使x86/32架构的机器支持到64GB的物理内存。Xen
3.0也能支持x86/64
平台支持,比如 Intel EM64T 和AMD Opteron能支持1TB的物理 内存以上;
Xen offloads most of the hardware support issues to the guest OS running in the Domain 0 management virtual machine. Xen itself contains only the code required to detect and start secondary processors, set up interrupt routing, and perform PCI bus enumeration. Device drivers run within a privileged guest OS rather than within Xen itself. This approach provides compatibility with the majority of device hardware supported by Linux. The default XenLinux build contains support for most server-class network and disk hardware, but you can add support for other hardware by configuring your XenLinux kernel in the normal way.
A Xen system has multiple layers, the lowest and most privileged of which is Xen itself.
一个Xen系统拥有多个层,最底层和最高特权层是 Xen程序本身。
Xen may host multiple guest operating systems, each of which is executed within a secure virtual machine. In Xen terminology, a domain. Domains are scheduled by Xen to make effective use of the available physical CPUs. Each guest OS manages its own applications. This management includes the responsibility of scheduling each application within the time allotted to the VM by Xen.
Xen 可以管理多个客户操作系统,每个操作系统都能在一个安全的虚拟机中实 现。在Xen的术语中,Domain由Xen控制,以 高效的 利用CPU的物理资源。每个 客户操作系统可以管理它自身的应用。这种管理包括每个程序在规定时间 内的响应到执行,是通过Xen调度到虚拟机中实现。
The first domain, domain 0, is
created automatically
when the
system boots and has special management privileges. Domain 0
builds
other domains and manages their virtual devices. It also performs
administrative tasks such as suspending, resuming and migrating other
virtual machines.
第一个domain,也
就是domain
0(注:其实它就是
第一个虚拟的客户系统),是在系统引导时
自动创建,它拥有特殊的管理权限。Domain 0 可以构建其它的更多的Domain
,并管理虚拟设备。
它还能执行管理任务,比如虚拟机的体眠、
唤醒和迁移其它虚拟机。
Within domain 0, a process called xend runs to manage the system. Xend is responsible for managing virtual machines and providing access to their consoles. Commands are issued to xend over an HTTP interface, via a command-line tool.
一个被称为xend的服务器
进程通过domain
0来管理系统,Xend
负责管理众多的虚拟主机,并且提供进入这些系统的控制台。命令经一个命令行的工具通过一个HTTP的接口被传送到xend。
Xen was originally developed by the Systems Research Group at the University of Cambridge Computer Laboratory as part of the XenoServers project, funded by the UK-EPSRC.
XenoServers aim to provide a ``public infrastructure for global distributed computing''. Xen plays a key part in that, allowing one to efficiently partition a single machine to enable multiple independent clients to run their operating systems and applications in an environment. This environment provides protection, resource isolation and accounting. The project web page contains further information along with pointers to papers and technical reports: http://www.cl.cam.ac.uk/xeno
Xen has grown into a fully-fledged project in its own right, enabling us to investigate interesting research issues regarding the best techniques for virtualizing resources such as the CPU, memory, disk and network. Project contributors now include XenSource, Intel, IBM, HP, AMD, Novell, RedHat.
Xen was first described in a paper presented at SOSP in 20031.1, and the first public release (1.0) was made that October. Since then, Xen has significantly matured and is now used in production scenarios on many sites.
Xen 3.0.0 offers(Xen 3.0.0 拥有):
Xen 3.0 features greatly enhanced hardware support, configuration
flexibility, usability and a larger complement of supported operating
systems. This latest release takes Xen a step closer to being the
definitive open source solution for virtualization.
The Xen distribution includes three main components: Xen itself, ports
of Linux and NetBSD to run on Xen, and the userspace tools required to
manage a Xen-based system. This chapter describes how to install the
Xen 3.0 distribution from source. Alternatively, there may be
pre-built
packages available as part of your operating system distribution.
Xen
发行版包括三个主要的部件:Xen本身,在Xen上运行Linux和NetBSD的接口,及管理基于Xen的系统的用户工具。这一节我们讲述以源代码的安
装方式安装Xen 3.0 。当然,您也可以根据您所用的发行版来选择已经预编译好的Xen的软件包
The following is a full list of prerequisites. Items marked `
' are
required by the xend control tools, and hence required if you want to
run more than one virtual machine; items marked `*' are only required
if you wish to build from source.
Once you have satisfied these prerequisites, you can now install either
a binary or source distribution of Xen.
一旦您已经做好这些准备
工作,您现在可以通过二进制包或源码包来
安装Xen。
Pre-built tarballs are available for download from the XenSource
downloads
page:
可以到XenSource 下载预
编译好的二进制包,下载地址发下:
http://www.xensource.com/downloads/
Once you've downloaded the tarball, simply unpack and install:
一旦您下载了软件包,就可以轻松的解压和安
装:
# tar zxvf xen-3.0-install.tgz
# cd xen-3.0-install
# sh ./install.sh
Once you've installed the binaries you need to configure your system as
described in Section 2.5.
一旦您已经安装了二进制包,您需要配置您的
系统,请参考 2.5的章节
http://www.xensource.com/downloads/
Once you've downloaded the RPMs, you typically install them via the RPM
commands:
一旦您下载了RPM包,可以通过RPM的管
理工具来安装他们:
# rpm -iv rpmname
See the instructions and the Release Notes for each RPM set
referenced at:
这里提供了每个相关RPM的介绍和发行说明
http://www.xensource.com/downloads/.
This section describes how to obtain, build and install Xen from
source.
这一节主要介绍如
何获取源码包并进行编
译和安装;
The Xen source tree is available as either a compressed source tarball or as a clone of our master Mercurial repository.
http://www.xensource.com/downloads/
http://xenbits.xensource.comSee the instructions and the Getting Started Guide referenced at(获取介绍和指导手册):
http://www.xensource.com/downloads/
The top-level Xen Makefile includes a target ``world'' that will do the following:
After the build has completed you should have a top-level directory
called dist/ in which all resulting targets will
be placed.
Of
particular interest are the two XenLinux kernel images, one with a
``-xen0'' extension which contains hardware device drivers and drivers
for Xen's virtual devices, and one with a ``-xenU'' extension that
just contains the virtual ones. These are found in
dist/install/boot/ along with the image for Xen
itself and the
configuration files used during the build.
内核编译完成后,您应该
有一个顶级目录dist/,所有的编译好
的包将放在这里。总共有两个内核,一个是文件名带有"_xen0"的,它包括硬件设
备驱动和Xen虚拟设备。另一个内核文件扩展名带有"_xenU"的,这个内核包括虚拟设备。这些文件连同Xen本身及编译过程中所需要的配置文件位于
dist/install/boot目录中
To customize the set of kernels built you need to edit the
top-level
Makefile. Look for the line:
KERNELS ?= linux-2.6-xen0 linux-2.6-xenU
You can edit this line to include any set of operating system kernels
which have configurations in the top-level buildconfigs/
directory.
您可以把这行加入到操作系统本身拥有的内核
配置文件中,此文件位于
buildconfigs/目
录;
If you wish to build a customized XenLinux kernel (e.g. to support
additional devices or enable distribution-required features), you can
use the standard Linux configuration mechanisms, specifying that the
architecture being built for is xen, e.g:
如果您想自定义编译XenLinuxmw
内核(比如支持附加设备或打开发行版的一些特性或功能),您可以用标准的Linux内核配置文件
# cd linux-2.6.12-xen0
# make ARCH=xen xconfig
# cd ..
# make
You can also copy an existing Linux configuration (.config)
into
e.g. linux-2.6.12-xen0 and execute:
您也可以复制已有的Linux发行版的内
核配置文件。比如Linux-
2.6.12-xen0,然后执行:
# make ARCH=xen oldconfig
You may be prompted with some Xen-specific options. We advise accepting
the defaults for these options.
也可以启用一些Xen的特殊选项。
我们建议您用默认的选项。
Note that the only difference between the two types of Linux
kernels
that are built is the configuration file used for each. The ``U''
suffixed (unprivileged) versions don't contain any of the physical
hardware device drivers, leading to a 30% reduction in size; hence you
may prefer these for your non-privileged domains. The ``0'' suffixed
privileged versions can be used to boot the system, as well as in
driver
domains and unprivileged domains.
注意,编译出来的两个内
核是不同的。文件名中带有U的,是无特
权内核,这个是用来引导被虚拟的操作系统而用的,它不包括物理硬件的驱动等。而文件
名中带有0的包括物理硬件的驱动,它才是被用于引导真实操作系统的内核。
The files produced by the build process are stored under the
dist/install/ directory. To install them in their
default
locations, do:
当编译好内核后,他们被存放在
dist/install/目录中。我们
通过如下的命令来安装:
# make install
Alternatively, users with special installation requirements may wish to
install them manually by copying the files to their appropriate
destinations.
The dist/install/boot directory will also contain the config files used for building the XenLinux kernels, and also versions of Xen and XenLinux kernels that contain debug symbols such as (xen-syms-3.0.0 and vmlinux-syms-2.6.12.6-xen0) which are essential for interpreting crash dumps. Retain these files as the developers may wish to see them if you post on the mailing list.
在目录 /dist/install/boot目录中,包含编 译 XenLinux内核的配置文件config ,也包含XenLinux内核的debug链接文件,比如(xen-syms-3.0.0 和vmlinux-syms-2.6.12.6 -xen0),当系 统崩溃时,他们还是有必要的,因为做为开 发者,他们需要这些崩溃纪录,您可以通过邮 件列表发送给开发 者。
Once you have built and installed the Xen distribution, it is simple to
prepare the machine for booting and running Xen.
如果您编译并安装好了Xen的发行版,您要做一些准备工作,以让机器引
导时运行Xen。
An entry should be added to grub.conf (often found under /boot/ or /boot/grub/) to allow Xen / XenLinux to boot. This file is sometimes called menu.lst, depending on your distribution. The entry should look something like the following:
编译好内核后,您应该修
改grub.conf文件(这个文件大多
是位于/boot或/boot/grub目录中),目的是允许引
导
Xen/XenLinux。
grub.conf有时也被
称为menul.st 。在grub.conf或menu.lst中应该加入类似下面的一段:
title Xen 3.0 / XenLinux 2.6
kernel /boot/xen-3.0.gz dom0_mem=262144
module /boot/vmlinuz-2.6-xen0 root=/dev/sda4 ro console=tty0
The kernel line tells GRUB where to find Xen itself and what boot parameters should be passed to it (in this case, setting the domain 0 memory allocation in kilobytes and the settings for the serial port). For more details on the various Xen boot parameters see Section 10.3.
kernel
一行告诉GRUB引导时能找到Xen,以及使用
哪些引导参数(在
这里,能设置domain
0所占用物理内存大小,其单位是kb,也能设置所占用的串口)。详细请参阅Xen 引导参数章节 10.3 。
The module line of the configuration describes the location of the XenLinux kernel that Xen should start and the parameters that should be passed to it. These are standard Linux parameters, identifying the root device and specifying it be initially mounted read only and instructing that console output be sent to the screen. Some distributions such as SuSE do not require the ro parameter.
module
这行是描述XenLinux内核所处的位置,这些是Linux的标准参数,比如定义root设备,指定挂载时初始化是只读,并且将控制台输出发送到屏幕
上。
一些发行版并不需要 ro参数,比如SuSE。
To use an initrd, add another module line to the
configuration,
like:
要使用initrd,还需要在配置文件中添加一
module行,行如:
module /boot/my_initrd.gz
When installing a new kernel, it is recommended that you do not delete
existing menu options from menu.lst, as you may
wish to boot
your
old Linux kernel in future, particularly if you have problems.
安
装新的内核时,我们建议您不要删除GRUB启动菜单定义文件
grub.conf或menu.lst中的关于老内核的引导项,当用新内核
引导时可能遇到问题,或者需要老内核引导时,您可以用老内核启动系统。
Serial console access allows you to manage, monitor, and interact with
your system over a serial console. This can allow access from another
nearby system via a null-modem (``LapLink'') cable or remotely via a
serial
concentrator.
串口控制台允许您管理、监视,
和和您的系统相互通信通过一个串口控制台。它能
提供从别的附近的系统通过一个null-
modem("LapLink") cable 或经由远程串口集线器访问登录。
You system's BIOS, bootloader (GRUB), Xen, Linux, and login
access
must
each be individually configured for serial console access. It is
not strictly necessary to have each component fully
functional,
but it can be quite useful.
您系统的BIOS,系统引导管理器
(GRUB),Xen,
Linux,以及登录许可必须单独分别为串口控制台登录提供有效的配置。它没有必要完全拥有所
有的功能和部件,但它的确是比较有用的。
For general information on serial console configuration under
Linux,
refer to the ``Remote Serial Console HOWTO'' at The Linux Documentation
Project: http://www.tldp.org
对于在Linux中,关于串口控制台配置的
一般信息,请参考“Remote Serial Console
HOWTO",此
文
件计划位于http://www.tldp.org
Enabling system serial console output neither enables nor disables serial capabilities in GRUB, Xen, or Linux, but may make remote management of your system more convenient by displaying POST and other boot messages over serial port and allowing remote BIOS configuration.
Refer to your hardware vendor's documentation for capabilities and procedures to enable BIOS serial redirection.
Enabling GRUB serial console output neither enables nor disables Xen or Linux serial capabilities, but may made remote management of your system more convenient by displaying GRUB prompts, menus, and actions over serial port and allowing remote GRUB management.
Adding the following two lines to your GRUB configuration file, typically either /boot/grub/menu.lst or /boot/grub/grub.conf depending on your distro, will enable GRUB serial output.
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console
Note that when both the serial port and the local monitor and keyboard are enabled, the text ``Press any key to continue'' will appear at both. Pressing a key on one device will cause GRUB to display to that device. The other device will see no output. If no key is pressed before the timeout period expires, the system will boot to the default GRUB boot entry.
Please refer to the GRUB documentation for further information.
Enabling Xen serial console output neither enables nor disables Linux kernel output or logging in to Linux over serial port. It does however allow you to monitor and log the Xen boot process via serial console and can be very useful in debugging.
In order to configure Xen serial console output, it is necessary to add a boot option to your GRUB config; e.g. replace the previous example kernel line with:
kernel /boot/xen.gz dom0_mem=131072 com1=115200,8n1
This configures Xen to output on COM1 at 115,200 baud, 8 data bits, no parity and 1 stop bit. Modify these parameters for your environment. See Section 10.3 for an explanation of all boot parameters.
One can also configure XenLinux to share the serial console; to achieve this append ``console=ttyS0'' to your module line.
Enabling Linux serial console output at boot neither enables nor disables logging in to Linux over serial port. It does however allow you to monitor and log the Linux boot process via serial console and can be very useful in debugging.
To enable Linux output at boot time, add the parameter console=ttyS0 (or ttyS1, ttyS2, etc.) to your kernel GRUB line. Under Xen, this might be:
module /vmlinuz-2.6-xen0 ro root=/dev/VolGroup00/LogVol00 \to enable output over ttyS0 at 115200 baud.
console=ttyS0, 115200
Logging in to Linux via serial console, under Xen or otherwise, requires specifying a login prompt be started on the serial port. To permit root logins over serial console, the serial port must be added to /etc/securetty.
To automatically start a login prompt over the serial port, add the line:
c:2345:respawn:/sbin/mingetty ttyS0to /etc/inittab. Run init q to force a reload of your inttab and start getty.
To enable root logins, add ttyS0 to /etc/securetty if not already present.
Your distribution may use an alternate getty; options include getty, mgetty and agetty. Consult your distribution's documentation for further information.
Users of the XenLinux 2.6 kernel should disable Thread Local Storage
(TLS) (e.g. by doing a mv /lib/tls /lib/tls.disabled)
before
attempting to boot a XenLinux kernel2.4.
You can
always reenable TLS by restoring the directory to its original location
(i.e. mv /lib/tls.disabled /lib/tls).
如果您使用 XenLinux 2.6
内核,在用它引导前需要禁用掉 Thread Local Storage
(TLS)(线程局
部存储)(例如运行 /lib/tls
/lib/tls.disabled).
当需要TLS时, 可以通过恢复其目录重新启用(即 mv /lib/tls.disabled /lib/tls).
The reason for this is that the current TLS implementation
uses
segmentation in a way that is not permissible under Xen. If TLS is not
disabled, an emulation mode is used within Xen which reduces
performance
substantially. To ensure full performance you should install a
`Xen-friendly' (nosegneg) version of the library.
这是由于当前的TLS应用程序使用了在Xen下不允许的段方法.
如果禁用TLS, Xen中使用的一个仿真模式将会实际性能有所削弱. 如果要避免这种现象,
您需要安装一个`Xen-friendly'(nosegneg)
版的共享库.
It should now be possible to restart the system and use Xen. Reboot and
choose the new Xen option when the Grub screen appears.
现在可以使用 Xen 重新引导操作系统了. (因
为我们前面已
经谈了编译、安装Xen,译注),重新启动后,我们要在GRUB的启动菜单上选择带
有Xen支持的选择,这样我就可以启动有Xen支持的操作系统了。
What follows should look much like a conventional Linux boot.
The
first
portion of the output comes from Xen itself, supplying low level
information about itself and the underlying hardware. The last portion
of the output comes from XenLinux.
用支持Xen的内核启动,看起来有点象
Linux常规引导。第一部份输
出的是Xen本身的信息,这些信息是关于Xen自身和底层的硬件的信息。最后的输出
是来自于XenLinux。
You may see some error messages during the XenLinux boot.
These are
not
necessarily anything to worry about--they may result from kernel
configuration differences between your XenLinux kernel and the one you
usually use.
当XenLinux引导时,您能查看一些错误的信
息。对于这些信息没有必要为
他们担心,这是因为您的XenLinux和您原来用的没有带有Xen支
持的那个之间不同配置而引起的。
When the boot completes, you should be able to log into your
system
as
usual. If you are unable to log in, you should still be able to reboot
with your normal Linux kernel by selecting it at the GRUB prompt.
当引导完成后,您应该可以登录您的操作系统了。如
果不能登录,应该用您的
普通内核(也就是原来没有Xen的那个内核--译者注)来引导。然后进
行一些问题排查。
Booting the system into Xen will bring you up into the privileged management domain, Domain0. At that point you are ready to create guest domains and ``boot'' them using the xm create command.
引导系统进入Xen将要带你进入一个特权的
domain
管理,Domain0。在这时,您可以创建客户domain,并通过xm create
命令来引导他们。(其实每个被虚拟的操作系统,都会产生一个Domain。一般说来,每个Domain就是一个虚拟的操作系统。当用支持Xen的内核启动
时,系统会
自动创建一个拥有超级权限的Domain0,这个Domain0负责管理硬件和为虚拟操作系统提供虚拟硬件环境。
北南 加注 From
LinuxSir.Org)
After installation and configuration is complete, reboot the system
and and choose the new Xen option when the Grub screen appears.
当我们安装和配置完成,并重新引导系统,就
可以在GRUB的启动菜单上
选择有支持Xen的启动项来启动系统。
What follows should look much like a conventional Linux boot.
The
first portion of the output comes from Xen itself, supplying low level
information about itself and the underlying hardware. The last
portion of the output comes from XenLinux.
用Xen支持的内核启
动,看起来有点象Linux常规引导。第一
部份输出的是Xen本身的信息,这些信息是关于Xen自身和底层的硬件的信息。最后
的输出是来自于XenLinux。
When the boot completes, you should be able to log into your
system
as
usual. If you are unable to log in, you should still be able to
reboot with your normal Linux kernel by selecting it at the GRUB
prompt.
当引导完成后,您应该可以登录您的操作系统了。如 果不能登录,应该使用 普通内核(也就是原来没有Xen的那个内核--译者注)来引导。然后进 行一些问题排查。
The first step in creating a new domain is to prepare a root
filesystem for it to boot. Typically, this might be stored in a normal
partition, an LVM or other volume manager partition, a disk file or on
an NFS server. A simple way to do this is simply to boot from your
standard OS install CD and install the distribution into another
partition on your hard drive.
创建一个新的Domain的首先要准备一个
root文件系统,这个文件系统
可以是一个物理分区,一个LVM或其它的逻辑卷
分区,映
像文件,或在一个NFS 服务器上。最简单的是通过操作系统的安装盘把操作系统安装进另一个物理分区。
(注:
这句话的意思是,用Xen虚拟的操作系统,可以安装在一个物理分区上,也可以安装在LVM上,可以安装在一个映像文件上,也可以安装在NFS
服务器提供的nfs文件系统上。最简单的方法就是在硬盘上分一
个物理分区,安装好操作系统,然后再来通过Xen来虚拟。他在这里所说的创建您的
Domain 就是虚拟新的操作系统。——译者注)。
To start the xend control daemon, type
启动xend守护进程,请输入如下命令:
# xend start
If you wish the daemon to start automatically, see the instructions in
Section 4.1.
Once the daemon is
running, you can use the
xm tool to monitor and maintain the domains
running on your
system. This chapter provides only a brief tutorial. We provide full
details of the xm tool in the next chapter.
如果您想让xend服务 器守护程序开机自动运行,请参考 4.1。 一旦xend 运行起来了,就可用xm工具来 监视、管理、运行系统中的Domain。这一节提供的仅仅是概要。我们会在下一章节上提供xm工具的详细说明。
Before you can start an additional domain, you must create a
configuration file. We provide two example files which you can use as
a starting point:
在启动一个虚拟的操作系统之前,您必须创建
一个引导这个虚拟操作系统的
配置文件 。
我们提供了两个示例文
件,这能做为您学习Xen虚拟操作系统的一个起点。
There are also a number of other examples which you may find useful.
Copy one of these files and edit it as appropriate. Typical values
you may wish to edit include:
还有其它一些有关
Domain的配置文件,您可以加以修改应用。
下面是一些配置文件的参数,可能您会用到;
You may also want to edit the vif variable in order
to choose
the MAC address of the virtual ethernet interface yourself. For
example:
您可以通过编辑vif变, 来设置虚拟网
卡的MAC地址,比如:
vif = ['mac=00:16:3E:F6:BB:B3']
If you do not set this variable, xend will automatically generate a
random MAC address from the range 00:16:3E:xx:xx:xx, assigned by IEEE
to
XenSource as an OUI (organizationally unique identifier). XenSource
Inc. gives permission for anyone to use addresses randomly allocated
from this range for use by their Xen domains.For a list of IEEE OUI assignments, see http://standards.ieee.org/regauth/oui/oui.txt IEEE OUI 分配列表, 参阅
The xm tool provides a variety of commands for
managing
domains. Use the create command to start new
domains.
Assuming
you've created a configuration file myvmconf
based around
/etc/xen/xmexample2, to start a domain with
virtual machine
ID 1 you should type:
xm工具为管理Domain提供很多指令。
用create
指令来引导新的Domain。可以基于/etc/xen/xmexample2
创建自己的Domain管理配置文件myvmconf,这样启动一个Domain可以通过虚拟机的ID来引导。比如ID是1,您应该输入:
# xm create -c myvmconf vmid=1
The -c switch causes xm to
turn into the domain's
console after creation. The vmid=1 sets the vmid
variable used in the myvmconf file.
-c
参数是指后面要接配置文件,意思是通过配置文件引导,vmid=1是在myvmconf中的变量,不同的Domain,vmid的值也不一样。(注:比如
您虚拟的Slackware操作系统,他的vmid您设置为1,Gentoo,他的vmid设置为2。这样当我们通过xm create -c
myvmconf vmid=1时,引导起来的就是Slackware,当我们通过xm create -c myvmconf
vmid=2时,我们引导起来的就是Gentoo。—— 译者注)
You should see the console boot messages from the new domain
appearing
in the terminal in which you typed the command, culminating in a login
prompt.
您应该能看到从新Domain的在控制台启动的信息,最后您能登录被虚拟的操作系统。
It is possible to have certain domains start automatically at boot
time and to have dom0 wait for all running domains to shutdown before
it shuts down the system.
当系统启动的时候,
Domain
也随之启动,并生成一个dom0守护进程,当dom0关
闭系统之前,dom0上运行的Domain都要关闭。
To specify a domain is to start at boot-time, place its
configuration
file (or a link to it) under /etc/xen/auto/.
可以指定一个Domain随系统自动启
动,请放配置文件(或建一个
边链接)文件到/etc/xen/auto目录下。
A Sys-V style init script for Red Hat and LSB-compliant
systems is
provided and will be automatically copied to /etc/init.d/
during install. You can then enable it in the appropriate way for
your distribution.
对于Red Hat
和LSB-compliant等系统,安装xen时,会在/etc/init.d目录下安装Sys-V风格初始化脚本。您可以根据自己使用的发行版启用它
们。
For instance, on Red Hat:
例如,在Red HAT中:
# chkconfig --add xendomains
By default, this will start the boot-time domains in runlevels 3, 4
and 5.
默认情况下, 在运行级别是3、4、5 时, 引导时会启动它们.
You can also use the service command to
run this script
manually, e.g:
当然您也能用服务器的命令手动运行这个脚
本,比如执行下面的命令:
# service xendomains start
Starts all the domains with config files under /etc/xen/auto/.
这样系统会根据放置于 /etc/xen/auto中配置文件, 启动所有定义的虚拟系统。
# service xendomains stop
Shuts down all running Xen domains.
执行上面的命令就会关掉所有的Xen 虚拟的系统;
This chapter summarizes the management software and tools available.
这一节分析Xen的管理工和应用。
The Xend node control daemon performs system management functions related to virtual machines. It forms a central point of control of virtualized resources, and must be running in order to start and manage virtual machines. Xend must be run as root because it needs access to privileged system management functions.
An initialization script named /etc/init.d/xend is provided to start Xend at boot time. Use the tool appropriate (i.e. chkconfig) for your Linux distribution to specify the runlevels at which this script should be executed, or manually create symbolic links in the correct runlevel directories.
Xend can be started on the command line as well, and supports the following set of parameters:
# xend start |
start xend, if not already
running(启动xend,如果
xend没有运行) |
# xend stop |
stop xend if already running (停止xend,如果xend正在运行) |
# xend restart |
restart xend if running, otherwise
start it (重启正在运行的
xend,如果xend没有运行,则启
动) |
# xend status |
indicates xend status by its return
code (查看xend状态) |
A SysV init script called xend is
provided to start xend
at
boot time. make install installs this script in
/etc/init.d. To enable it, you have to make
symbolic links in
the appropriate runlevel directories or use the chkconfig
tool,
where available. Once xend is running, administration can be done
using the xm tool.
SysV初始化启动脚本xend
提供了在系统启动时随系统启动的功能。make
install将会将此脚本安装到/etc/init.d目
录中,您可以借助chkconfig工具或在对应运行级别目录创建符号连接方便的启用它。xend运行起来后,系统管理员就能用xm管理工具进行虚拟机的
管理和操作。
As xend runs, events will be logged to /var/log/xend.log and (less frequently) to /var/log/xend-debug.log. These, along with the standard syslog files, are useful when troubleshooting problems.
xend运行时,其日志存放于
/var/log/xend.log
和/var/log/xend-debug.log(这里存放的比较
少)文件中。遇到问题时,可以查看这些日志,通过日志来排查错误。
Xend is written in Python. At startup, it reads its configuration
information from the file /etc/xen/xend-config.sxp.
The Xen
installation places an example xend-config.sxp
file in the
/etc/xen subdirectory which should work for most
installations.
Xend是由Python
语言编写的,在启动时,Xend会读取其配置文件/etc/xen/xend-config.sxp。在Xen的安装时,
会在/etc/xen目录下生成一个示例性 xend-config-
sxp文件,对于大多数的安装,它应该能工作。
See the example configuration file xend-debug.sxp
and the
section 5 man page xend-config.sxp for a full
list of
parameters and more detailed information. Some of the most important
parameters are discussed below.
更多的详细信息,请参阅
配置文件示例xend-
debug.sxp文件,man
xend-config.sxp有详细的参数列表。一些比较重要的参数会在以下讨论。
An HTTP interface and a Unix domain socket API are available to communicate with Xend. This allows remote users to pass commands to the daemon. By default, Xend does not start an HTTP server. It does start a Unix domain socket management server, as the low level utility xm requires it. For support of cross-machine migration, Xend can start a relocation server. This support is not enabled by default for security reasons.
一个HTTP
接口和一个Unix的Domain
套接字API用于和Xend通信,目的是让远程用户传递命令到Domain。事实上Xend
没有启动HTTP服务器。它只是启动了一个Unix
的Domain套接字,然后通过xm工具来管理服务器,这是作为底层的工具xm得以实现Domain管理的需要。对于跨平台迁移的支持,Xend能启动一
个 再定位服务器。对于这项的支持由于安全的原因没有被设置为默认选项。
Note: the example xend configuration
file modifies the
defaults and
starts up Xend as an HTTP server as well as a relocation server.
注意:这个xend示例配置文件修改了默认
选择,并且启动Xend,再
定位服务器和HTTP服务器一样。
From the file(由这个文件得知):
#(xend-http-server no)
(xend-http-server yes)
#(xend-unix-server yes)
#(xend-relocation-server no)
(xend-relocation-server yes)
Comment or uncomment lines in that file to disable or enable features
that you require.
根据自己的需要请去掉或添加配置文件中非说
明文字行前的#号。如果您想
实现某个特性,请把该特性行前面的#号去掉。如果想关掉某项功能,请在行前加#号。
Connections from remote hosts are disabled by default:
通过远程主机连接功能默认被禁止:
# Address xend should listen on for HTTP connections, if xend-http-server is
# set.
# Specifying 'localhost' prevents remote connections.
# Specifying the empty string '' (the default) allows all connections.
#(xend-address '')
(xend-address localhost)
It is recommended that if migration support is not needed, the
xend-relocation-server parameter value be changed
to
``no'' or commented out.
建议,如果不需要支持迁移功能,
xend-relocation-
server 参数值应该改为"no"或把这功能注掉。
The xm tool is the primary tool for managing Xen from the console. The
general format of an xm command line is:
xm
工具是通过控制台管理Xen的主要工具。常规xm命令行格式如下:
# xm command [switches] [arguments] [variables]
The available switches and arguments
are dependent on
the
command chosen. The variables
may be set using
declarations of the form variable=value and
command line
declarations override any of the values in the configuration file being
used, including the standard variables described above and any custom
variables (for instance, the xmdefconfig file
uses a vmid
variable).
switches 和 arguments 项根据command有所不同. 变量(variables)的设置通过variable= value的方法来声明,并且命令(command)行声明优于任何 在配置文件中被应用过的参数,包括任何以上被描述的标准变量和任何变量(比如, xmdefconfig文件所用的vmid变量)
For online help for the commands available, type:
查看帮助,请输入:
# xm help
This will list the most commonly used commands. The full list can be
obtained
using xm help --long. You can also type xm
help
<command>
for more information on a given command.
通过上面的指令,获
得最常用的xm
指令。全部的帮助列表,您 可以通过xm help --long 来获得。您也能通过输入xm
help <command>来获取某个指令的帮助信息。
One useful command is # xm list which lists
all domains
running in rows
of the following format:
一个比较有用的指令是#xm
list
,它能列出所有正在运行的Domain ,格式如下:
The meaning of each field is as follows:
每个字段代表的意思如下:
The xm list command also supports a long output
format when
the
-l switch is used. This outputs the full details
of the
running domains in xend's SXP configuration format.
xm list
也支持长格式输出,要用到 -l
选项。长格式能输出正在运行Domain的详细内容。
You can get access to the console of a particular domain using
the #
xm console command (e.g. # xm console myVM).
您可以通过 #xm console command (比如#xm console myVM)进入Domain 的控制台;
The following contains the syntax of the domain configuration files
and description of how to further specify networking, driver domain
and general scheduling behavior.
下面的内容包括Domain
配置文件中的语法结构,网络预制,驱动Domain及如何调用等;
Xen configuration files contain the following standard variables.
Unless otherwise stated, configuration items should be enclosed in
quotes: see the configuration scripts in /etc/xen/
for
concrete examples.
Xen的配置文件包括标准变量。被预制的内
容应该用(括号)包含进来,
请看/etc/xen/目录中的示例。
vif = [ 'mac=00:16:3E:00:00:11, bridge=xen-br0',
'bridge=xen-br1' ]
disk
=
[ 'phy:hda1,sda1,r' ] exports physical device /dev/hda1
to the domain as /dev/sda1 with read-only access.
Exporting a
disk read-write which is currently mounted is dangerous - if you are certain
you wish to do this, you can specify w! as the
mode.[ 'phy:hda1,sda1,r'
],意思是Domain所用的硬盘是物理分区/dev/hda1
,然后被映射到/dev/sda1,并且是只读访问。如果您想打开读写功能,请把r换成w,不过这样做目前有点危险。
Additional fields are documented in the example configuration files
(e.g. to configure virtual TPM functionality).
附加的字段已经被写入了示例配置文件中(例如,配置虚拟 TPM
功能)
For additional flexibility, it is also possible to include
Python
scripting commands in configuration files. An example of this is the
xmexample2 file, which uses Python code to handle
the
vmid variable.
对于附加性的可选的功能,它可能包括在配置文件中Python的脚本。
在示例/etc/xen/xmexample2文件中,比较它用Python代码来
定义vmid的变量。
For many users, the default installation should work ``out of the
box''. More complicated network setups, for instance with multiple
Ethernet interfaces and/or existing bridging setups will require some
special configuration.
对于大多数用户来说,默认安装应该能工作,默认的配置文件远远超出了常规用户
的需要
。更为复杂的网络设置,比如更多的网络接口或(并且)桥接才能实现将需要特殊的配置。
The purpose of this section is to describe the mechanisms
provided
by
xend to allow a flexible configuration for Xen's virtual networking.
这一节主要是讲配置Xen虚拟网络的灵活性。
Each domain network interface is connected to a virtual network
interface in dom0 by a point to point link (effectively a ``virtual
crossover cable''). These devices are named
vif<domid>.<vifid> (e.g. vif1.0
for the
first
interface in domain 1, vif3.1 for the
second interface
in
domain 3).
在dom0中,每个Domain
网络接口通过点对点的(效果相当于“交叉线”)连接到一个虚拟的网络接口,这些设备
被命名为vif<domid>.<vifid>(比如在domain 1
中vif1.0是第一个网络接口,vif3.1是domain 3的第二个网络接口)。
Traffic on these virtual interfaces is handled in
domain 0
using
standard Linux mechanisms for bridging, routing, rate limiting, etc.
Xend calls on two shell scripts to perform initial configuration of
the network and configuration of new virtual interfaces. By default,
these scripts configure a single bridge for all the virtual
interfaces. Arbitrary routing / bridging configurations can be
configured by customizing the scripts, as described in the following
section.
这些虚拟的网络接口是通过domain
0的控制而相互通信,并且用标准的Linux结构来桥接、路由及传输限制等
。Xend向两个shell脚本呼叫,并且初始化网络及新的虚拟接口的配置。做为默认,这些脚本对于所有的虚拟接口都是通过单一的桥接。在下一节中,将讲
述通过自义定脚本来实现路由/桥接配置方法。
Xen's virtual networking is configured by two shell scripts (by
default network-bridge and vif-bridge).
These are
called
automatically by xend when certain events occur, with arguments to
the scripts providing further contextual information. These scripts
are found by default in /etc/xen/scripts. The
names and
locations of the scripts can be configured in
/etc/xen/xend-config.sxp.
Xen的虚拟网络是通过两个shell脚本实现的(默认的
network-bridge和vif-bridge)。当事件发生时,这些
脚本通过
xend自动响应调用,并且脚本提供更深一层的前后关系的信息的许可。这些脚本位于/etc/xen/scripts目录中,脚本的名字和位置能在
/etc/xen/xend-config-sxp中配置。
Other example scripts are available (network-route
and
vif-route, network-nat and vif-nat).
For more complex network setups (e.g. where routing is required or
integrate with existing bridges) these scripts may be replaced with
customized variants for your site's preferred configuration.
其它示例脚本是可以应用的(network-route 、 vif-route、 network-nat 和 vif -nat)。对于更为复杂的网络设置(比如 路由或对现有网桥的整合)脚本能够被自定义的变量所替换,以做为你网络预译的首选。
Individual PCI devices can be assigned to a given domain to allow that domain direct access to the PCI hardware. To use this functionality, ensure that the PCI Backend is compiled in to a privileged domain (e.g. domain 0) and that the domains which will be assigned PCI devices have the PCI Frontend compiled in. In XenLinux, the PCI Backend is available under the Xen configuration section while the PCI Frontend is under the architecture-specific "Bus Options" section. You may compile both the backend and the frontend into the same kernel; they will not affect each other.
The PCI devices you wish to assign to unprivilege