Home

技術系のメモと日々の雑感

Domain-U 起動せず(続き)

この前のエントリの後日談。
Domain-0 のマシンを再インストールした後、バックアップしておいた Domain-U のイメージから起動しようとしたら

WARNING:root:Unknown directive acpi

こっちのメッセージはそのままで、さらに

Error: Device 0 (vif) could not be connected. Could not find bridge device xenbr0

というエラーまで出て起動してくれなかった。
もしやこれは泥沼パターンか・・・?
と、テンションが下がりつつ、再インストール前のを流用していた Domain-U の設定ファイルの

vif = [ 'mac=XX:XX:XX:XX:XX:XX, bridge=xenbr0', ]

の行の xenbr0 を xenbr1 に変更したら無事立ち上がってくれた。
助かった・・・。
実はこのマシン、eth0 側は故障していて使ってないのだ。
あれ?
だったら再インストールする前から xenbr1 に設定されててもいいはずなんだけどな。
まぁ、いいか。
例によって結果オーライということで。
で、さらに後日談だけど、Domain-U の中で作業していたら、grub.conf の kernel 行に書かないといけない acpi=off が変なところに書かれているのに気づいて、これを消したら最初のワーニングも出なくなった。
ようやく完全復活。
やっぱり複数のトラブルが重なると原因を調べるのが難しくなるねぇ。

Domain-U 起動せず

Xen の Domain-0 になっているサーバをリブートしたら、いきなり Domain-U が起動しなくなってしまった。

# xm create hoge
Using config file "./hoge".
WARNING:root:Unknown directive acpi
Going to boot CentOS (2.6.18-8.el5xen)
  kernel: /vmlinuz-2.6.18-8.el5xen
  initrd: /initrd-2.6.18-8.el5xen.img

普通ならプロンプトが戻ってくるはずなのにここで止まってしまう。
Virt-Manager を見ると「停止中」といったステータスになっていた。
もちろんコンソールも開けない。
で、表示されているメッセージ

WARNING:root:Unknown directive acpi

の内容からすると Domain-U の設定ファイルの記述が怪しいので見てみると

name = "hoge"
memory = "250"
disk = [ 'tap:aio:/var/xen/hoge.img,xvda,w', ]
vif = [ 'mac=XX:XX:XX:XX:XX:XX, bridge=xenbr0', ]
vfb = ["type=vnc,vncunused=1"]
uuid = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
bootloader="/usr/bin/pygrub"
vcpus=1
on_reboot = 'restart'
on_crash = 'restart'

あれ?
acpi なんて記述はどこにもないぞ。
ということは Domain-0 側の設定なのかと思ったが

# cd /etc/xen
# grep acpi *
xmexample.hvm:#acpi=0

見ての通り、サンプルファイルの中の記述しかヒットしなかった。
/var/log/xen/xend.log にもこれといってメッセージは出てないし。
そしたら acpid が起動してないのが原因なのかと確認してみると

# ps ax | grep acpi
   19 ?    S<   0:00 [kacpid]
 2179 ?    Ss   0:00 /usr/sbin/acpid
 2391 ?    S    0:00 hald-addon-acpi: listening on acpid socket /var/run/acpid.socket

ちゃんと動いてるなぁ。
一応 restart してみたけど変わらなかった。
新しく Domain-U を作ってみてもだめなので、とうとうお手上げ。
結局 CentOS から入れなおすことにしたけど、原因不明で再インストールなんて何年ぶりかなぁ。

Xen のコンソールのキーマップがおかしい

CentOS 5 で virt-manager から開いたコンソールのキーマップがおかしいことに気づいた。
US キーボードとして動いているみたいだけど、まったく入力できない記号があったりする。
で、解決策を探してみたところ、/etc/xen/[設定ファイル] に

keymap='ja'

を追加したらいいという情報を見つけたけどダメ。
man xmdomain.cfg を見ても keymap の記述がないので対応してないようだ。
「:」 が入力できないので vi が終了できなくて焦った。
後で「ZZ」で終了できることを思い出したけど、これってやっぱり「:」が使えない端末のために用意してあるんだろうな。
って、先人の知恵に感心してる場合じゃないか・・・。

xm dmesg

何気なく Xen の xm コマンドを叩いたときに dmesg というオプションがあるのに気がついた。
仮想マシンモニタが起動するときのメッセージを表示するものらしい。
ということは Domain-0 で dmesg を実行したときに表示されるものと完全に別物なのかと思ったら、ちょっと微妙で、どちらにも出力されているメッセージもあれば一方にしか出力されてないメッセージもあった。
ちなみに、Domain-0 のと見分けが付くようにするためか、xm dmesg の方には表示の先頭部分にちょっとした細工がしてある。
Xen の開発者たちの遊び心ってところかな。

Xen へのファイル転送

2週間ほど前から、Xen の Domain-U 上にある CentOS へのファイル転送が異常に遅くなるという現象に悩まされてたけど、ようやく解決。
結局、Xen の問題ではなくて、スパムが大量に来ていたせいで負荷が上がっていたのが原因だった。
OOM Killer が発動したのを初めて見たよ・・・。
後で分かったことだけど、毎週特定のタイミングで規則正しく(?)スパムが来ていた。
なのでまさか外的な要因とは想像もしなくて、システム内部を疑ったために調査に時間がかかってしまった。
スパムの対策をしてからは絶好調。
想定外ながら Xen の負荷テストもできたということで、めでたしめでたし。