安いUSBメモリにOSをインストールしていると
(ソフトウェア的に)結構こわれやすい気がしますが、
Oracle VM Server も安価な USBメモリに インストールしていると
結構こわれることがあります。
こんなことがありました。
ある日突然、Oracle VM Manager から
VM が起動できなくなりました・・・
しかし既に起動されている VM は何ともなそうです。
ためしに、Oracle VM ServerにSSHでログインして
状態確認してみると、xm コマンドが実行できない・・・
/etc/xen/xend-config.sxp (Xenの設定ファイル)が怪しそうです。
[root@ovs2 xen]# cat /etc/ovs-release
Oracle VM server release 3.2.1
[root@ovs2 ~]# xm li
xend [ERROR] Reading config file /etc/xen/xend-config.sxp: invalid character: code 3
Traceback (most recent call last):
File "/usr/sbin/xm", line 5, in ?
from xen.xm import main
File "/usr/lib64/python2.4/site-packages/xen/xm/main.py", line 51, in ?
from xen.xend.server.DevConstants import xenbusState
File "/usr/lib64/python2.4/site-packages/xen/xend/server/DevConstants.py", line 21, in ?
xoptions = XendOptions.instance()
File "/usr/lib64/python2.4/site-packages/xen/xend/XendOptions.py", line 571, in instance
inst = XendOptionsFile()
File "/usr/lib64/python2.4/site-packages/xen/xend/XendOptions.py", line 158, in __init__
self.configure()
File "/usr/lib64/python2.4/site-packages/xen/xend/XendOptions.py", line 172, in configure
self.set_config()
File "/usr/lib64/python2.4/site-packages/xen/xend/XendOptions.py", line 463, in set_config
config = sxp.parse(fin)
File "/usr/lib64/python2.4/site-packages/xen/xend/sxp.py", line 742, in parse
pin.input(buf)
File "/usr/lib64/python2.4/site-packages/xen/xend/sxp.py", line 174, in input
self.input_char(c)
File "/usr/lib64/python2.4/site-packages/xen/xend/sxp.py", line 187, in input_char
self.state.fn(c)
File "/usr/lib64/python2.4/site-packages/xen/xend/sxp.py", line 226, in state_start
raise ParseError(self, "invalid character: code %d" % ord(c))
xen.xend.sxp.ParseError: invalid character: code 3
「もしや何か自動編集でもされたのか?」などと思い、
内容を見ようとしてみると・・・
テキストファイルのはずが、バイナリファイルと認識されました。
[root@ovs2 ~]# grep -v ^# /etc/xen/xend-config.sxp
Binary file /etc/xen/xend-config.sxp matches
[root@ovs2 ~]# file /etc/xen/xend-config.sxp
/etc/xen/xend-config.sxp: data
ファイルは一部が文字化けしているように見えます。
ためしに、文字化けしているところを
手作業で修正・・・
[root@ovs2 xen]# cp -p xend-config.sxp xend-config.sxp_orig
[root@ovs2 xen]# vi xend-config.sxp
xend-config.sxp ファイルは
テキストファイルとして認識されるようになりました。
[root@ovs2 xen]# file xend-config.sxp
xend-config.sxp: ASCII English text
この問題が起きてから一度 Oracle VM Server を再起動していて、
その時からこのファイルの問題で xend が起動できていませんでした。
そのため、xend を起動します。
[root@ovs2 xen]# xm li
Error: Unable to connect to xend: No such file or directory. Is xend running?
[root@ovs2 xen]# service xend status
xend daemon is stopped
[root@ovs2 xen]# service xend start
Starting xend...
xend daemon (pid 25641) is running...
[root@ovs2 xen]# service xend status
xend daemon (pid 25641) is running...
xm コマンドが実行できるようになりました。
そして VM も起動できるようになりました・・・
[root@ovs2 xen]# xm li
Name ID Mem VCPUs State Time(s)
Domain-0 0 816 2 r----- 562.3
本当に USB インストールのせいか?といわれると微妙ですが、
あまりに安い USB メモリ(秋葉原で数百円くらいの)に
OS をインストールしていると、結構こういうことがあります。
ちゃんとした環境で USB インストールするときは、
USB メモリも「それ用」のもの(数千円するような)がよいのでしょう。
以上、USB の OVS がこわれた話でした。