Xen
XEN: installation
- see notes on Debian wiki
- aptitude install xen-linux-image-2.6.32-5-xen-amd64 xen-tools xen-utils
- backup /etc/xen/xend-config.sxp
- edit /etc/xen/xend-config.sxp, and uncomment line "(network-script network-bridge)" or for a non-default interface ethX:
(network-script 'network-bridge netdev=ethX bridge=xenbr0')
- reboot
- aptitude remove --purge linux-image-2.6.32-5-amd64 linux-image-2.6-amd64
- /etc/default/grub => GRUB_DEFAULT=2
- update-grub
- reboot
- cat /proc/xen/capabilities #(to check xend is running)
XEN: guest creation
- If you've a proxy it's much easier to have it defined in the environment variables:
- Edit /etc/environment
http_proxy=http://myproxy:port
- Logout/login
- Edit the config file for creating images (/etc/xen-tools/xen-tools.conf) to your needs:
--- xen-tools.conf.orig 2010-05-30 22:42:25.000000000 +0200
+++ xen-tools.conf 2010-08-17 17:47:35.000000000 +0200
@@ -52,7 +52,7 @@
# LVM volume group here instead
#
##
-# lvm = vg0
+lvm = vg0
#
@@ -125,12 +125,12 @@
# Disk and Sizing options.
##
#
-size = 4Gb # Disk image size.
+size = 8Gb # Disk image size.
memory = 128Mb # Memory size
swap = 128Mb # Swap size
# noswap = 1 # Don't use swap at all for the new system.
fs = ext3 # use the EXT3 filesystem for the disk image.
-dist = `xt-guess-suite-and-mirror -s` # Default distribution to install.
+dist = squeeze # Default distribution to install.
image = sparse # Specify sparse vs. full disk images.
#
@@ -166,7 +166,7 @@
#
# Uncomment this if you wish the images to use DHCP
#
-# dhcp = 1
+dhcp = 1
##
@@ -184,7 +184,7 @@
# Uncomment the following line if you wish to interactively setup
# a new root password for images.
#
-# passwd = 1
+passwd = 1
#
# If you'd like all accounts on your host system which are not present
@@ -254,10 +254,10 @@
#
# You may specify the things to use here:
#
-# serial_device = hvc0 #default
+serial_device = hvc0 #default
# serial_device = tty1
#
-# disk_device = xvda #default
+disk_device = xvda #default
# disk_device = sda
#
Example:
- xen-create-image --hostname=myguest1 --memory=12288 --swap=12288 --vcpus=20
- WARNING strangely the default root password was disabled with a '*' in /etc/shadow so impossible to log in. I had to mount manually the lv (/dev/vg0/myguest1-disk) to remove the '*'
One may prefer to setup the password interactively when creating the image with xen-create-image ... --passwd (or setup passwd=1 in /etc/xen-tools/xen-tools.conf as I've now shown in the above diff file) - lvm> lvcreate -L 1000G -n myguest1-data vg0
- /etc/xen/myguest1.cfg: add data volume:
root = '/dev/xvda2 ro' disk = [ 'phy:/dev/vg0/myguest1-disk,xvda2,w', 'phy:/dev/vg0/myguest1-swap,xvda1,w', 'phy:/dev/vg0/myguest1-data,xvda3,w', ]
- xm create -c /etc/xen/myguest1.cfg
- Hook the data drive as /home
- mkfs.ext4 /dev/xvda3
- In /etc/fstab: /dev/xvda3 /home ext4 noatime,nodiratime,errors=remount-ro 0 1
- mount /home
XEN quickref
- xen-create-image --hostname=mynewguest
- xen-delete-image
- xen-list-images
- xen-update-image # apt-get update; apt-get upgrade in the guest, !!! only if guest is NOT running
- xm create /etc/xen/mynewguest.cfg
- xm list # Show running xen guests
- xm info # Show xen version and many other info
- xm console mynewguest
- CTRL+] to detach
- xm shutdown mynewguest
- xm destroy mynewguest
XEN tuning
If you want xen1.example.com to start automatically at the next boot of the system, then do this:
ln -s /etc/xen/xen1.example.com.cfg /etc/xen/auto
By default it will attempt to save runing hosts when dom0 is halted. This means a "suspend-to-disk" of all domU in dom0 filesystem (/var/lib/xen/save). To prevent it and do regular shutdown of domU, edit /etc/default/xendomains and change:
#XENDOMAINS_SAVE=/var/lib/xen/save XENDOMAINS_SAVE=""
Misc notes
Boot & DHCP
I've still sometimes some issues at boot time when the xenbr0 bridge doesn't catch its IP...
In those cases I find dhclient still hooked to the non-existing bnx1 IF (which was renamed pbnx1 by XEN). I've to kill it and start a similar dhclient on IF xenbr0.
Finally I renamed the default interface as eth0 and called the xen bridge script without parameters: (network-script network-bridge)
Allocating too much memory
I tried to create two guests with each 12Gb of RAM while the host had only 16Gb in total. I would have expected a nice handling of the error but it froze xend and I could even not shutdown properly.
And, oh, BTW, no, xen doesn't support memory overcommitment