2011年 02月 03日
SUSE+XEN仮想マシンが起動できないよくあるトラブル
1) イメージファイルがない
これは xm create したときにエラーメッセージを見ればその通りなので解決方法は簡単です。特にインストールで使った DVD/CD iso イメージがそのまま vm ファイルに書き込まれたまま、iso イメージを rm や mv したときに必ず出ます。
/etc/xen/vm にある
disk=[ 'file:/var/lib/xen/images/oes2lx1/oes2lx1.disk0,xvda,w', 'file:/var/lib/xen/images/oes2lx1/oes2lx1.disk1,xvdc,w' ]
の行をチェックして、ここに iso ファイルの指定があれば削除しておきます。ライブマイグレーションなどをする際もその先にファイル指定がなければ失敗するみたいなので、インストールした後必ず変更する部分ですね。
仮想マシンが SUSE Linux などの場合、レボジトリを修正しておくことです。Windows の場合、仮想マシンのどこかに i386 ディレクトリを作っておくと便利です。
2) メモリが足りない
以外とよくあるトラブルです。どうも仮想マシンは連続したメモリ空間を要求するようで、メモリフラグメンテーションを起こすと、以前稼動していた仮想マシンが起動できない場合があるようです。メモリ32Gくらい積んだ本番マシンではあまり発生しませんが、小規模な8G程度しかメモリがないテスト用マシンでは良く発生します。
本番環境ではメモリは腹6分で運用することです。
対策としては、他の仮想マシンを一旦止めて xm create しなおすか、ホストを再起動することです。
domain-0 のメモリ容量は xm info コマンドで確認します。
abianca:~ # xm info
host : abianca
release : 2.6.32.12-0.7-xen
version : #1 SMP 2010-05-20 11:14:20 +0200
machine : x86_64
nr_cpus : 4
nr_nodes : 1
cores_per_socket : 4
threads_per_core : 1
cpu_mhz : 2500
hw_caps : 178bf3ff:efd3fbff:00000000:00001310:00802001:00000000:000037ff:00000000
virt_caps : hvm
total_memory : 16290
free_memory : 15380
free_cpus : 0
max_free_memory : 15622
max_para_memory : 15618
max_hvm_memory : 15573
node_to_cpu : node0:0-3
node_to_memory : node0:15380
node_to_dma32_mem : node0:3515
max_node_id : 0
xen_major : 4
xen_minor : 0
xen_extra : .0_21091_04-0.2
xen_caps : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64
xen_scheduler : credit
xen_pagesize : 4096
platform_params : virt_start=0xffff800000000000
xen_changeset : 21091
xen_commandline : vga=mode-0x31a dom0_mem=768M
cc_compiler : gcc version 4.3.4 [gcc-4_3-branch revision 152973] (SUSE Linux)
cc_compile_by : abuild
cc_compile_domain :
cc_compile_date : Thu May 20 11:44:41 UTC 2010
xend_config_format : 4
abianca:~ #
また、bootloader に domain-0 のメモリを制限するパラメータがあります。
Setting a Maximum Amount of Memory
dom0_mem=768M などと記述しておくと、domain-0 のメモリ量を制限できます。
- Domain-U の起動順序の設定 -
ここで、Domain-U の起動順序(ロード順序)を決めておくこともひとつの方法です。
/etc/xen/auto に /etc/xen/vm に記述した Domain-U の設定ファイルのリンクを作成すると、 Domain-0 が起動して xend が立ち上がると自動的に Domain-U が起動します。この際に、auto に作るリンクの先頭に数字をつけておくと、良いでしょう。
dom0:~ # cd /etc/xen/auto
dom0:/etc/xen/auto # ls -al
total 0
drwxr-xr-x 2 root root 72 May 20 2010 .
drwx------ 7 root root 432 Sep 15 20:49 ..
lrwxrwxrwx 1 root root 10 May 11 2010 01dns2 -> ../vm/dns2
dom0:/etc/xen/auto # ln -s ../vm/oes2lx1 02oes2lx1
dom0:/etc/xen/auto # ls -al
total 0
drwxr-xr-x 2 root root 104 Feb 3 12:25 .
drwx------ 7 root root 432 Sep 15 20:49 ..
lrwxrwxrwx 1 root root 10 May 11 2010 01dns2 -> ../vm/dns2
lrwxrwxrwx 1 root root 13 Feb 3 12:25 02oes2lx1 -> ../vm/oes2lx1
dom0:/etc/xen/auto #
例えばメモリを大量に使うクリティカルな仮想マシンを先頭に、あるいはマイグレーションを前提に最後に起動させる、などの方法が考えられます。この場合は dns/dhcp はメモリの利用量が少なく、軽い処理をさせるために先に起動させています。oes2 は必ず後から起動するように設定しました。
3) 起動はできるが、ネットワークに繋がらない
Linux の場合、Domain-U のバージョンによっては MAC アドレスを間違えて移植するとこの現象が出る場合があります。vm ファイルを確認します。
Windows の場合、イメージを移植した後、ネットワークがなぜか機能しない場合があります。この場合 Yast2 > Virtulization Manager より、Domain-U を delete して(イメージは消さないこと)再作成するとうまく動作した場合がありました。
いずれにせよ、作成済みのイメージを移植する場合は Virtulization Manager から再作成するとうまく動くことが多いようです。
4) ディスクの空き容量
意外とトラブルのほとんどがこれだったりします。 df -h コマンドで容量を確認してください。イメージの追加削除を続けるとディスクがパンパンになります ~/.local/share/Trash の中身を確認して削除します。
-key word-
Novell SUSE Linux XEN SLES プライベートクラウド 仮想化
その他の情報はこちら