Status report: Xen and FAI

Henning Glawe glaweh at physik.fu-berlin.de
Tue Jan 18 11:18:16 CET 2005


Moin,
setting up Xen with FAI seems to work, the only drawback is that you have to
skip the partition task (Xen doesn't support whole disks, only single 
partitions seem to work).

for those who haven't heard about xen: it is a machine virtualizer a bit
similar to the vmware server product line. In contrary to vmware, it doesn't
emulate hardware (like hdd controllers or gfx cards), which has the drawback
that the OS has to be modified to make calls to the vmm instead, but should
lead to much higher performance (haven't benchmarked it with fai
installations yet, but a kernel compilation "benchmark" supports their claims
so far).

For everyone wanting to test it:

- download xen from http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html
- build it according to the supplied documentation
- copy the attached experimental.xen to /etc/xen/experimental, fill in the
  correct addresses and virtual blockdevice configuration.
- use the attached hook partition.XEN (and maybe re-fit it for your needs)
- put the virtual test machine into the class XEN
- start playing around

For everyone wondering about the kernel command line containing
"LD_ASSUME_KERNEL=2.4.10":
it is just a quick hack to keep ld.so from linking in the tls-supporting
libc, which would be connected with huge performance drawbacks within xen.

-- 
c u
henning
-------------- next part --------------
#  -*- mode: python; -*-
#============================================================================
# Python configuration setup for 'xm create'.
# This script sets the parameters used when a domain is created using 'xm create'.
# You use a separate script for each domain you want to create, or 
# you can set the parameters for the domain on the xm command line.
#============================================================================

#----------------------------------------------------------------------------
# Kernel image file.
kernel = "/boot/vmlinuz-2.6.10-xenU"

# Optional ramdisk.
#ramdisk = "/boot/initrd.gz"

# The domain build function. Default is 'linux'.
#builder='linux'

# Initial memory allocation (in megabytes) for the new domain.
memory = 192

# A name for your domain. All domains must have different names.
name = "experimental"

# Which CPU to start domain on? 
#cpu = -1   # leave to Xen to pick

#----------------------------------------------------------------------------
# Define network interfaces.

# Number of network interfaces. Default is 1.
#nics=1

# Optionally define mac and/or bridge for the network interfaces.
# Random MACs are assigned if not given.
#vif = [ 'mac=aa:00:00:00:00:11, bridge=xen-br0' ]

#----------------------------------------------------------------------------
# Define the disk devices you want the domain to have access to, and
# what you want them accessible as.
# Each disk entry is of the form phy:UNAME,DEV,MODE
# where UNAME is the device, DEV is the device name the domain will see,
# and MODE is r for read-only, w for read-write.

disk = [ 'phy:hdb6,hda1,w' , 'phy:hdb5,hda2,w' ]

#----------------------------------------------------------------------------
# Set the kernel command line for the new domain.
# You only need to define the IP parameters and hostname if the domain's
# IP config doesn't, e.g. in ifcfg-eth0 or via DHCP.
# You can use 'extra' to set the runlevel and custom environment
# variables used by custom rc scripts (e.g. VMID=, usr= ).

# Set if you want dhcp to allocate the IP address.
#dhcp="dhcp"
ip = "1.2.3.4"
# Set netmask.
netmask= "255.255.255.0"
# Set default gateway.
gateway= "5.6.7.8"
# Set the hostname.
hostname= "experimental"

# Set root device.
#root = "/dev/hda1 ro"

# Root device for nfs.
root = "/dev/nfs"
# The nfs server.
nfs_server = '9.10.11.12'  
# Root directory on the nfs server.
nfs_root   = '/srv/fai/nfsroot'

# Sets runlevel 4.
extra = "LD_ASSUME_KERNEL=2.4.10"

#----------------------------------------------------------------------------
# Set according to whether you want the domain restarted when it exits.
# The default is 'onreboot', which restarts the domain when it shuts down
# with exit code reboot.
# Other values are 'always', and 'never'.

#restart = 'onreboot'

#============================================================================
-------------- next part --------------
echo y | mkreiserfs /dev/hda1 > /dev/null
mkswap /dev/hda2 > /dev/null

cat > /tmp/fai/fstab <<EOF
/dev/hda1 / reiserfs defaults 0 0
/dev/hda2 none swap rw 0 0
EOF

echo "#!" > $diskvar
touch $LOGDIR/skip.partition 


More information about the linux-fai mailing list