annotate README @ 2386:ce1a57f8737a

bitkeeper revision 1.1159.64.1 (4130aba0phC6BxiRx2cnmE5EUnUgTQ)

Update version numbers. Need some update of the actual instructions,
particularly in README.CD.
author mwilli2@equilibrium.research
date Sat Aug 28 15:58:24 2004 +0000 (2004-08-28)
parents 6802d4f0ce7f
children bcc898397e06
rev   line source
mwilli2@2386 1 ###############################
mwilli2@2386 2 __ __ ____ ___
mwilli2@2386 3 \ \/ /___ _ __ |___ \ / _ \
mwilli2@2386 4 \ // _ \ '_ \ __) || | | |
mwilli2@2386 5 / \ __/ | | | / __/ | |_| |
mwilli2@2386 6 /_/\_\___|_| |_| |_____(_)___/
mwilli2@2386 7
mwilli2@2386 8 ###############################
iap10@706 9
iap10@706 10 University of Cambridge Computer Laboratory
mwilli2@2386 11 28 Aug 2004
iap10@706 12
iap10@706 13 http://www.cl.cam.ac.uk/netos/xen
iap10@706 14
iap10@706 15 About the Xen Virtual Machine Monitor
iap10@706 16 =====================================
iap10@706 17
iap10@1061 18 "Xen" is a Virtual Machine Monitor (VMM) originally developed by the
iap10@1061 19 Systems Research Group of the University of Cambridge Computer
iap10@1061 20 Laboratory, as part of the UK-EPSRC funded XenoServers project.
iap10@706 21
iap10@706 22 The XenoServers project aims to provide a "public infrastructure for
iap10@706 23 global distributed computing", and Xen plays a key part in that,
iap10@706 24 allowing us to efficiently partition a single machine to enable
iap10@706 25 multiple independent clients to run their operating systems and
iap10@706 26 applications in an environment providing protection, resource
iap10@706 27 isolation and accounting. The project web page contains further
iap10@706 28 information along with pointers to papers and technical reports:
iap10@706 29 http://www.cl.cam.ac.uk/xeno
iap10@706 30
iap10@706 31 Xen has since grown into a project in its own right, enabling us to
iap10@706 32 investigate interesting research issues regarding the best techniques
iap10@706 33 for virtualizing resources such as the CPU, memory, disk and network.
iap10@706 34 The project has been bolstered by support from Intel Research
iap10@1476 35 Cambridge, and HP Labs, who are now working closely with us. We're
iap10@1476 36 also in receipt of support from Microsoft Research Cambridge to port
iap10@1476 37 Windows XP to run on Xen.
iap10@706 38
iap10@744 39 Xen enables multiple operating system images to execute concurrently
iap10@706 40 on the same hardware with very low performance overhead --- much lower
iap10@744 41 than commercial offerings for the same x86 platform.
iap10@706 42
iap10@706 43 This is achieved by requiring OSs to be specifically ported to run on
iap10@706 44 Xen, rather than allowing unmodified OS images to be used. Crucially,
iap10@706 45 only the OS needs to be changed -- all of the user-level application
iap10@744 46 binaries, libraries etc can run unmodified. Hence the modified OS
iap10@706 47 kernel can typically just be dropped into any existing OS distribution
iap10@706 48 or installation.
iap10@706 49
iap10@706 50 Xen currently runs on the x86 architecture, but could in principle be
iap10@744 51 ported to others. In fact, it would have been rather easier to write
iap10@744 52 Xen for pretty much any other architecture as x86 is particularly
iap10@744 53 tricky to handle. A good description of Xen's design, implementation
iap10@744 54 and performance is contained in our October 2003 SOSP paper, available
iap10@744 55 at http://www.cl.cam.ac.uk/netos/papers/2003-xensosp.pdf
iap10@1558 56 [update: work to port Xen to x86_64 and IA64 is underway]
iap10@706 57
iap10@1558 58 Five different operating systems have been ported to run on Xen:
iap10@1558 59 Linux 2.4/2.6, Windows XP, NetBSD, FreeBSD and Plan 9.
iap10@706 60
iap10@1476 61 The Linux 2.4 port (currently Linux 2.4.26) works very well -- we
iap10@706 62 regularly use it to host complex applications such as PostgreSQL,
iap10@744 63 Apache, BK servers etc. It runs every user-space applications we've
iap10@736 64 tried. We refer to our version of Linux ported to run on Xen as
iap10@1476 65 "XenLinux", although really it's just standard Linux ported to a new
kaf24@1213 66 virtual CPU architecture that we call xen-x86.
iap10@706 67
iap10@1061 68 NetBSD has been ported to Xen by Christian Limpach, and will hopefully
iap10@1061 69 soon become part of the standard release. Work on a FreeBSD port has
iap10@1558 70 been started by Kip Macy, and we hope to see this complete for the 2.0
iap10@1558 71 release. Ron Minnich has been working on Plan 9.
iap10@706 72
iap10@706 73 The Windows XP port is nearly finished. It's running user space
iap10@706 74 applications and is generally in pretty good shape thanks to some hard
iap10@1558 75 work by a team over the summer. Of course, there are issues with
iap10@706 76 releasing this code to others. We should be able to release the
iap10@736 77 source and binaries to anyone that has signed the Microsoft academic
iap10@736 78 source license, which these days has very reasonable terms. We are in
iap10@736 79 discussions with Microsoft about the possibility of being able to make
iap10@736 80 binary releases to a larger user community. Obviously, there are
iap10@744 81 issues with product activation in this environment which need to be
iap10@744 82 thought through.
iap10@706 83
iap10@1476 84 So, for the moment, you only get to run Linux 2.4/2.6 and NetBSD on
iap10@706 85 Xen, but we hope this will change before too long. Even running
iap10@706 86 multiple copies of the same OS can be very useful, as it provides a
iap10@706 87 means of containing faults to one OS image, and also for providing
iap10@706 88 performance isolation between the various OS, enabling you to either
iap10@706 89 restrict, or reserve resources for, particular VM instances.
iap10@706 90
iap10@744 91 It's also useful for development -- each version of Linux can have
iap10@706 92 different patches applied, enabling different kernels to be tried
iap10@706 93 out. For example, the "vservers" patch used by PlanetLab applies
iap10@706 94 cleanly to our ported version of Linux.
iap10@706 95
iap10@706 96 We've successfully booted over 128 copies of Linux on the same machine
iap10@706 97 (a dual CPU hyperthreaded Xeon box) but we imagine that it would be
iap10@706 98 more normal to use some smaller number, perhaps 10-20.
iap10@706 99
iap10@1558 100 A common question is "how many virtual machines can I run on hardware
iap10@1558 101 xyz?". The answer is very application dependent, but the rule of thumb
iap10@1558 102 is that you should expect to be able to run the same workload under
iap10@1558 103 multiple guest OSes that you could run under a single Linux instance,
iap10@1558 104 with an additional overhead of a few MB per OS instance.
iap10@1558 105
iap10@1558 106 One key feature in this new release of Xen is `live migration'. This
iap10@1558 107 enables virtual machines instances to be dynamically moved between
iap10@1558 108 physical Xen machines, with typical downtimes of just a few tens of
iap10@1558 109 milliseconds. This is really useful for admins that want to take a
iap10@1558 110 node down for maintenance, or to load balance a large number of
iap10@1558 111 virtual machines across a cluster.
iap10@1558 112
iap10@1558 113
iap10@706 114
iap10@706 115 Hardware support
iap10@706 116 ================
iap10@706 117
iap10@706 118 Xen is intended to be run on server-class machines, and the current
iap10@706 119 list of supported hardware very much reflects this, avoiding the need
kaf24@751 120 for us to write drivers for "legacy" hardware. It is likely that some
kaf24@751 121 desktop chipsets will fail to work properly with the default Xen
kaf24@751 122 configuration: specifying 'noacpi' or 'ignorebiostables' when booting
kaf24@751 123 Xen may help in these cases.
iap10@706 124
iap10@706 125 Xen requires a "P6" or newer processor (e.g. Pentium Pro, Celeron,
iap10@706 126 Pentium II, Pentium III, Pentium IV, Xeon, AMD Athlon, AMD Duron).
iap10@706 127 Multiprocessor machines are supported, and we also have basic support
iap10@744 128 for HyperThreading (SMT), although this remains a topic for ongoing
iap10@1476 129 research. We're also working on an AMD x86_64 port (though Xen should
iap10@744 130 run on Opterons in 32-bit mode just fine).
iap10@706 131
iap10@744 132 Xen can currently use up to 4GB of memory. It's possible for x86
iap10@706 133 machines to address more than that (64GB), but it requires using a
iap10@706 134 different page table format (3-level rather than 2-level) that we
iap10@706 135 currently don't support. Adding 3-level PAE support wouldn't be
iap10@706 136 difficult, but we'd also need to add support to all the guest
iap10@706 137 OSs. Volunteers welcome!
iap10@706 138
iap10@1476 139 In contrast to previous Xen versions, in Xen 2.0 device drivers run
iap10@1476 140 within a privileged guest OS rather than within Xen itself. This means
iap10@1476 141 that we should be compatible with the full set of device hardware
iap10@1476 142 supported by Linux. The default XenLinux build contains support for
iap10@1476 143 relatively modern server-class network and disk hardware, but you can
iap10@1476 144 add suppport for other hardware by configuring your XenLinux kernel in
iap10@1476 145 the normal way (e.g. "make xconfig").
iap10@706 146
iap10@706 147
iap10@1476 148 Building Xen and XenLinux
iap10@1476 149 =========================
iap10@744 150
iap10@1476 151 The public master BK repository for the 2.0 release lives at:
mwilli2@2386 152 bk://xen.bkbits.net/xen-2.0.bk
iap10@747 153
iap10@771 154 To fetch a local copy, install the BitKeeper tools, then run:
mwilli2@2386 155 'bk clone bk://xen.bkbits.net/xen-2.0.bk'
iap10@771 156
iap10@1476 157 You can do a complete build of Xen, the control tools, and the
iap10@1476 158 XenLinux kernel images with "make world". This can take 10 minutes
iap10@1476 159 even on a fast machine. If you're on an SMP machine you may wish to
kaf24@1557 160 give the '-j4' argument to make to get a parallel build. All of the
kaf24@1557 161 files that are built are placed under the ./install directory. You
kaf24@1557 162 can then install everything to the standard system directories
kaf24@1557 163 (e.g. /boot, /usr/bin, /usr/lib/python/ etc) by typing "make install".
iap10@771 164
kaf24@1557 165 Take a look in install/boot/:
kaf24@1557 166 install/boot/xen.gz The Xen 'kernel' (formerly image.gz)
mwilli2@2386 167 install/boot/vmlinuz-2.4.27-xen0 Domain 0 XenLinux kernel (xenolinux.gz)
mwilli2@2386 168 install/boot/vmlinuz-2.4.27-xenU Unprivileged XenLinux kernel
iap10@771 169
kaf24@1557 170 The difference between the two Linux kernels that are built is
kaf24@1557 171 due to the configuration file used for each. The "U" suffixed
kaf24@1557 172 unprivileged version doesn't contain any of the physical hardware
kaf24@1557 173 device drivers, so is 30% smaller and hence may be preferred for
kaf24@1557 174 your non-privileged domains.
kaf24@1557 175
kaf24@1557 176 The install/boot directory will also contain the config files
kaf24@1557 177 used for building the XenLinux kernels, and also versions of Xen
kaf24@1557 178 and XenLinux kernels that contain debug symbols (xen-syms and
mwilli2@2386 179 vmlinux-syms-2.4.27-xen0) which are essential for interpreting crash
kaf24@1557 180 dumps.
kaf24@1557 181
kaf24@1557 182 Inspect the Makefile if you want to see what goes on during a
iap10@1476 183 build. Building Xen and the tools is straightforward, but XenLinux is
iap10@1476 184 more complicated. The makefile needs a 'pristine' linux kernel tree
iap10@1476 185 which it will then add the Xen architecture files to. You can tell the
iap10@1476 186 makefile the location of the appropriate linux compressed tar file by
iap10@1476 187 setting the LINUX_SRC environment variable
mwilli2@2386 188 (e.g. "LINUX_SRC=/tmp/linux-2.4.27.tar.gz make world") or by placing
iap10@1476 189 the tar file somewhere in the search path of LINUX_SRC_PATH which
iap10@1476 190 defaults to ".:..". If the makefile can't find a suitable kernel tar
iap10@1476 191 file it attempts to download it from kernel.org, but this won't work
iap10@1476 192 if you're behind a firewall.
iap10@1476 193
iap10@1476 194 After untaring the pristine kernel tree, the makefile uses the
iap10@1476 195 'mkbuildtree' script to add the Xen patches the kernel. "make world"
iap10@1476 196 then build two different XenLinux images, one with a "-xen0" extension
iap10@1476 197 which contains hardware device drivers and is intended to be used in
iap10@1476 198 the first virtual machine ("domain 0"), and one with a "-xenU"
iap10@1476 199 extension that just contains virtual-device drivers. The latter can be
iap10@1476 200 used for all non hardware privileged domains, and is substantially
iap10@1476 201 smaller than the other kernel with its selection of hardware drivers.
iap10@1476 202
iap10@1476 203 If you don't want to use bitkeeper to download the source, you can
iap10@1476 204 download prebuilt binaries and src tar balls from the project
iap10@1476 205 downloads page: http://www.cl.cam.ac.uk/netos/xen/downloads/
iap10@771 206
iap10@771 207 Using the domain control tools
iap10@771 208 ==============================
iap10@771 209
iap10@1558 210 Before starting domains you'll need to start the node management
iap10@1558 211 daemon: "xend start".
iap10@1558 212 The primary tool for starting and controlling domains is "xm".
iap10@1558 213 "xm help <cmd>" will tell you how to use it.
iap10@1558 214
iap10@1061 215 README.CD contains some example invocations.
iap10@744 216
kaf24@1213 217 Further documentation is in docs/ (e.g., docs/Xen-HOWTO), and also in
iap10@1061 218
iap10@1061 219