On one of my xen hosts a virtual machine does not start at boot. I can see that xendomains gives an error:
service xendomains start Starting auto Xen domains: fszeleNo handlers could be found for logger "xend" Error: Disk isn't accessible No handlers could be found for logger "xend" Error: Disk isn't accessible
An error occured while creating domain fszele: Usage: xm create <ConfigFile> [options] [vars]
Create a domain based on <ConfigFile>.
Options:
-h, --help Print this help. --help_config Print the available configuration variables (vars) for the configuration script. -q, --quiet Quiet. --path=PATH Search path for configuration scripts. The value of PATH is a colon-separated directory list. -f=FILE, --defconfig=FILE Use the given Python configuration script.The configuration script is loaded after arguments have been processed. Each command-line option sets a configuration variable named after its long option name, and these variables are placed in the environment of the script before it is loaded. Variables for options that may be repeated have list values. Other variables can be set using VAR=VAL on the command line. After the script is loaded, option values that were not set on the command line are replaced by the values set in the script. -F=FILE, --config=FILE Domain configuration to use (SXP). SXP is the underlying configuration format used by Xen. SXP configurations can be hand-written or generated from Python configuration scripts, using the -n (dryrun) option to print the configuration. -n, --dryrun Dry run - prints the resulting configuration in SXP but does not create the domain. -p, --paused Leave the domain paused after it is created. -c, --console_autoconnect Connect to the console after the domain is created.
! [failed] [FAILED]
The actual command executed turns out to be:
XMC=`xm create --quiet --defconfig $dom` where dom=/etc/xen/auto/fszele
If I issue the command from the command line, the dom starts as expected. After some debugging on /etc/init.d/xendomains it turns out to work if I change this line:
diff xendomains* 283c283 < XMC=$(xm create --quiet --defconfig $dom) ---
XMC=`xm create --quiet --defconfig $dom`
or
diff xendomains* 283c283 < XMC=`echo debug;xm create --quiet --defconfig $dom` ---
XMC=`xm create --quiet --defconfig $dom`
So I fixed the problem using $() instead of back-ticks, but I like to understand what can be the root cause of this problem. It seems to happen on only one of my hosts.
cat /etc/redhat-release CentOS release 5.6 (Final) rpm -qf xendomains xen-3.0.3-120.el5_6.3 uname -a Linux xenzele.greenpeak.com 2.6.18-238.19.1.el5xen #1 SMP Fri Jul 15 08:16:59 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux
Theo