ようこそゲストさん

すらりん日記

2010/01/19(火) XenServerからHyper-Vへ

Hyper-V

XenServerの仮想マシンをHyper-Vへ移行する(XenServer2Hyper-V)

やっている人がいないのか、全く情報がなかった。
XenServerへ行き着いたが最後、ここが終着駅のような感じがしていました。

しかしやっと、XenServerからHyper-Vへ仮想マシンを移行することが出来ました。
その時の手順をここに記載しておこうと思います。

まともな手段とは言い難いため、試す人は自己責任でお願いします。

うまくいった、もっといい方法がある、という情報をお持ちの方は
教えていただけると幸いです。

手順

環境

  • CentOS5.3(x86_64)
  • ディスクパーティションはCentOSのデフォルトのまま
  • XenServer5.0 から Hyper-V 2.0 へ

通常カーネルのチェック

まず移行元のマシンにxenではない通常カーネルがインストールされているか確認する。
もし入っていない場合は、yum install kernelなどで通常カーネルをインストールする。

データ領域の抽出

LVMを使っているのでスナップショットをとる。
・・・しかし、ディスク全体をすでに使用中で割り当てられなかったので強引にやります。
dd if=/dev/mapper/VolGroup00-LogVol00 of=/backup/VolGroup00-LV00 bs=1m
dd if=/dev/xvda1 of=/backup/boot_part bs=1m
/backupはNFSでマウントした別マシンの共有です。ここにいったんデータを書き出します。
本来はスナップショットをとって、それに対してこのddでのバックアップをとるのが正しいです。

移行先の準備

とりあえずデフォルトのまま CentOSをインストールしておきます。消しちゃうけど。
その後、CentOSのディスクを使ってrescueモードで起動。起動時の linux rescue とコマンド打てばOK

そして、ネットワーク有効にしておきます。
/mnt/sysimageにHDDの状態がマウントされる設定は無効にしておきます。

データを書き戻す

復元先である、/dev/hda1,/dev/mapper/VolGroup00-LogVol00が見えていることを確認してください。
もしなければ、ディスク内容がsysimageにマウントされる設定にして、
手動で、/mnt/sysimage をアンマウントさせてください。
dd if=/backup/boot_part of=/dev/hda1
dd if=/backup/VolGroup00-LV00 of=/dev/mapper/VolGroup00-LogVol00 bs=1m
sync; sync; sync;
これで、強引に現在のLVMの中身に書き戻しを行います。
いったんここで再起動します。

MBRの書き込み(Grub設定)

続いて、MBRの再設定を行います。
再度CentOSのレスキューモードで起動します。
今度は、sysimageにHDD内容がマウントされるようにします。

まず、XenServerの上で動いていたため、デバイスが /dev/xvdaとなっています。
このままだと、MBRの設定も出来ないので、修正します。
vi /boot/grub/device.map
この中にデバイス名で、/dev/xvdaが記載されています。
これを今回のデバイスである /dev/hdaに変更します。*1
その後、MBRの書き込みを実行します。
grub-install /dev/hda
そして、CentOSのディスクを取り出して、マシンを再起動します。
grubのメニューが立ち上がってくるので、通常カーネルを選択して起動させます。

起動したものの

各サービスが起動しはじめて、いい感じに起動完了しそうなのですが、
途中で進まなくなります。
そのときのエラーの様子はこのような感じに。
INIT: Id "co" respawning too fast: disabled for 5 minutes
とりあえずシングルユーザーモードで起動します。
grubで起動パラメータを single を与えて起動させます。
起動カーネルを選んで "e"をタイプ。
kernel行を選んで"e"をタイプ。
そしてkernel行の末尾にsingleを追加.
"b"をタイプしてこの設定で起動します。
そして、inittabを変更
vi /etc/inittab
そして次の記載がある行をコメントアウト、コメント解除します。
co:2345:respawn:/sbin/agetty xvc0 9600 vt100-nav
#1:2345:respawn:/sbin/mingetty tty1
#2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6
この部分を以下のように書き換えます。
#co:2345:respawn:/sbin/agetty xvc0 9600 vt100-nav
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
起動パラメータも修正してしまいます。
vi /boot/grub/grub.conf
通常カーネルの項目で、console=xvc0の部分を削除
その代わりに、divider=10 を追加しておく*2
そして、再起動します。

うまくいけば、これでログイン可能なコンソール状態になります。

normal_startup.jpg

*1 : これを忘れると、"does not have any corresponding BIOS drive"というエラーになる。

*2 : VMwareでは有名な時刻ずれ対処の方法です. Hyper-Vでも有効そう


名前:  非公開コメント   

  • TB-URL  http://watery.dip.jp/~slash/0221/tb/