2009年 04月 18日
SUSE Linux (SLES10) XEN仮想マシンの移植
仮想マシンイメージは、通常 /var/lib/xen/image/MyVmachine に作成されていますが、このファイルを tar 圧縮してリムーバブルメディアにコピーするなり rsync で他のコンピュータにコピーしたり、あるいはバックアップされて今は使っていないイメージを戻して再利用することができます。
今回は既に動作しているイメージを元に、別な仮想マシンをセットアップすることを目標にします。
※ SUSE Linux Enterprise Server(SLES) は、同一マシンで使う場合のライセンスは不要ですが、Windows サーバの場合は仮想マシンの台数ごとにライセンスが必要です。また Windows の場合は SID が同じなのでドメインには参加できません(?) プリインストール版のWindows はライセンス上ハードウェアに紐付けられているので、別なマシンにマイグレーションしてはいけません。
bandit:~ # cd /var/lib/xen/images/ <-イメージ内容を確認
bandit:/var/lib/xen/images # ls
.disk-list W7-32-7000 W7-32manage sles116gx1
bandit:/var/lib/xen/images # mkdir newsrv <- newsrv 用ディレクトリを作成しコピー
bandit:/var/lib/xen/images # cp sles116gx1/sles116gx1.disk0 newsrv
bandit:/var/lib/xen/images # cd newsrv/
bandit:/var/lib/xen/images/newsrv # ls
sles116gx1.disk0 <-元のイメージ名なので mv コマンドで名前を代える
bandit:/var/lib/xen/images/newsrv # mv sles116gx1.disk0 newserv.disk0
旧イメージの MAC アドレスを確認
bandit:/var/lib/xen/images/newsrv # cat /etc/xen/vm/sles116gx1
name="sles116gx1"
uuid="b0b11c47-6295-1b66-dce7-c7b6d38224db"
memory=512
vcpus=4
on_poweroff="destroy"
on_reboot="restart"
on_crash="destroy"
localtime=0
builder="linux"
bootloader="/usr/lib/xen/boot/domUloader.py"
bootargs="--entry=xvda2:/boot/vmlinuz-xen,/boot/initrd-xen"
extra=" "
disk=[ 'file:/var/lib/xen/images/sles116gx1/dsles116gx1.disk0,xvda,w', 'file:/home/maji/ISO/SLES-11-DVD-x86_64-GM-DVD1.iso,xvdb:cdrom,r', ]
vif=[ 'mac=00:16:3e:1b:56:1f', ] <-元のイメージが持っていた MAC アドレス
vfb=['type=vnc,vncunused=1']
bandit:/var/lib/xen/images/newsrv #
仮想マシンの立ち上げ
YaST > Virtual Machine > Create New Machine
I have a disk or image with an installed operating system を選ぶ

必要なオペレーティングシステムを選ぶ
ディスクイメージに先ほどコピーしたイメージをセット

MACアドレスに、オリジナルと異なるMACアドレスをセット
新しい仮想マシン名、仮想ディスク、仮想ネットワークカードを設定したら OK で起動を開始します。

SLES 10 でネットワークが認識できない問題
この問題は Windows および SLES11 では発生しません。SLES10.x 固有の問題のようです。起動時に新しいMACアドレスが認識できず、元のイメージの MAC アドレスで起動しようとします。そのため正しく通信を行うことができません。

SLES 10 の場合、元のイメージに作成されたネットワーク設定を削除し、作り直す必要があります。Domain-0 (親サーバ)から xm console コマンドで Domain-U(仮想マシン)に切り替えます。
bandit:~ # xm list
Name ID Mem VCPUs State Time(s)
newsrv 7 512 4 -b---- 10.1
bandit:~ # xm console newsrv
: 略
newsrv login:
Welcome to SUSE Linux Enterprise Server 10 SP2 (x86_64) - Kernel 2.6.16.60-0.21-xen (xvc0).
newsrv login: root
Password:********
Last login: Wed Apr 15 16:13:39 JST 2009 on tty1
newsrv:~ # rm /etc/udev/rules.d/30-net_persistent_names.rules
newsrv:~ # rm /etc/sysconfig/network/ifcfg-eth-id-00\:16\:3e\:xx\:xx\:xx
上の2ファイルを削除し、古い設定を削除してしまいます。
次に yast (CUI版) を起動します。
TABキーで Network Devices > Network Card[Enter]
Traditional Setup > XEN 用VM 仮想カードが Not Configured であることを確認して TAB キーで Editへ移動します。

移植したMACアドレスで認識されていることを確認できます。

Static Address にtab キーをあわせて IP Address にスタティックアドレスを設定します。
Hostname and Name Server にtab キーをあわせて HOSTNAME を修正します。

新しい IP が新しい MAC アドレスに設定されたことを確認して Finish します。
Xm console を終了するには CTRL+] を押します。
仮想マシンをリブートして HOSTNAME が変わり、通信できることを確認します。
Windowsの場合
Windows では xm console コマンドが使えないため xming などの x 端末ソフトウェアから YaST2 > Vitalization > Vitalization Manager から GUI コンソールを使います。
まず、「マイコンピューター」のプロパティから「リモートアクセス」を許可します。
コンピューター名、ドメインまたはワークグループ名を変更します。

IPアドレスを設定しなおします。

全ての設定が変更できたら、Windows を再起動します。リモートデスクトップ接続が行えることを確認します。
-KeyWord-
SUSE Linux Enterprise Server 10 SLES XEN 仮想化 仮想マシンの移植 移動
その他の情報はこちらから
非番のエンジニア