読者です 読者をやめる 読者になる 読者になる

vSphere Converter Standaloneを使ってXenCenterからvSphereへ仮想マシンをコンバートしてみる


お久しぶりです。インフラ担当の6Eです。
今日も変わらず銃を抱えて戦場を駆けつつ、日々の業務と激闘を繰り広げています!

とそれはさておき・・・
前回の「vCenter Converter StandaloneでP2Vするときの9項目まとめ」の最後に、
XenCenterからVSphereへ仮想マシンをコンバート(V2V)する事をご紹介出来たらと思います。」
と書いておきながら気が付いたらほぼ1年半経ってました…
いやー時が経つのは早いですねー…
ホントにすみませんごめんなさいゆるしてくださいm(_ _)m

という事で改めてXenCenterからvSphereへ仮想マシンをコンバートする方法をご紹介します。

blog_Image


事前準備

1. rootログイン可能にしておく!
前回の記事の「6. 移行元物理サーバのLinuxにはrootでパスワードログイン出来るようにしましょう!」
にあるように、移行元のサーバにrootログイン出来るようにしておきます。

2. grubとKernelを用意しておく!(CentOS5系などの場合)
移行元のサーバがCentOS5系の様にxen用のkernel(2.6.18-128.1.10.el5.xs5.5.0.51xenなど)が
インストールされている場合、移行後の起動に失敗します。
そのため、現在利用しているKernelと同じバージョンの通常のkernel(kernel-2.6.18-128.1.10.el5など)を
移行元のサーバの/tmpあたりに落としておきます。

kernelだけでなくkernel-develやkernel-headerなど、それとgrubも用意しておきましょう。

レスキューモードで起動してkernelを差し替えるなど、つまりは””OSの起動に失敗するから何とかしてkernelを差し替えられるようにしておいてね!””という事です。なのでOSのBootCDなんてあると良いかもです。
 
移行元のサーバをもう使わないのであれば、あらかじめyumで通常版のkernelを入れてgrub.confをいじって、defaultで選択出来るようにしておくと楽です。

CentOS6系からは特に必要ないですが、もし起動しない場合はだいたいkernel周りかinitrd周りでコケてます。

3. 折れない心とおやつを用意しておく!
Diskのサイズによっては移行に時間が掛かります。おやつを楽しみながらのんびり気長に待ちましょう。
また変換が99%辺りで失敗する事もあります。この場合ディスクの中身のコピーは終了しているので何とかなるかもしれません。
あー失敗したからと言って、決してサーバを窓から投げ捨てたりしちゃダメですよ?もちろん鈍器もいけません。

vSphere Converter Standaloneで移行する。
 
前回の記事を参考にVMの移行を行います。記事の物理サーバは今回はXen上のVMと読み替えて下さいね。
  • 移行元の設定(IPアドレスやrootユーザのPasswordなど)
  • 移行先の設定(vSphereのIPアドレスや管理ユーザのID,Passwordなど)
  • 移行時の設定(vSphereサーバ上に変換される際のVMの設定)
に注意して移行をしてください。特に移行時の設定に関して
 
1. 仮想マシンのバージョンは可能であればVer,9にしておき、Ver,10にはしない。
仮想マシンのバージョンがVer,10になると、仮想マシンの設定(CPU,Mem,Diskなど)がWebUIからしか変更出来なくなります。
vCenterが無い状態だと手も足もでなくなるので気を付けて下さいー
 
2. どうやらvCenter ConverterのVer,5.5もしくは5.5.1からLVMを基本パーティションに変換しなくても良くなったようです。
…でももし失敗する場合は、めげずに基本パーティションにしてみましょう。
 
3. 移行が1%でコケる場合、移行先の仮想マシンの構成で1つ目のネットワークアダプタ(NIC1)のみ使用する。
NICが複数有る場合、移行先の仮想マシンの構成でネットワークアダプタの数を移行元のネットワークアダプタ数に合わせると思うのですが、移行元と移行先を結ぶネットワーク(VLAN)は、例え本来の構成でネットワークアダプタのNIC1を利用していなくても、仮想マシンの移行時はNIC1を通すようにしましょう。
どうやら移行先の仮想マシンネットワークアダプタの数が複数あった場合でも、移行元と移行先のデータの転送はNIC1しか使ってないっぽいんですよねー…

移行後の初回起動
 
初回の起動はほぼ失敗します。主な理由は以下の3つです。
  1. grub周りの設定
  2. initrd周りの設定
  3. fstab周りの設定
初回起動する際にkernelの選択画面で起動パラメータを編集し「rhgb quiet」などを消しておくと起動時の状況が分かりやすくなります。
もし起動しても画面が真っ暗!という場合は、起動パラメータ内の「console=xvc0」を消しましょう。
…でも余計なものまで消すと、それはそれで問題なので気を付けて下さいね!

さて、起動して途中で止まってしまった場合、だいたいの人は「あー失敗か…」とリセットしたくなりますよね?
…でも諦めたら試合終了なので、ここからがんばります!
止まってしまった画面をよく読むと、どうやらファイルシステムなのか?kernelなのか?
それとも起動はしたけれど途中でエラーがいっぱい出てたとか…エラーメッセージって、実はがんばって教えてくれています。
基本的に英語なので見なかった事にしたいのですが、ここはぐっとこらえてよく読んでみましょう。

もしkernel Panicになっていたら、まずレスキューモードで起動します。
レスキューモードで起動した場合、VMファイルシステムは/mnt/sysimage以下になります。
 
1.「mounting /dev on /sysroot/dev failed: No such file or directory」となってKernel Panicを起こす場合
vCenter Converterは移行/変換前のinitramfsをバックアップしているので、移行前のinitramfsに戻してみます。
 
cd /mnt/sysimage/boot
mv initramfs-2.6.32-71.el6.x86_64.img initramfs-2.6.32-71.el6.x86_64.img.new
cp initramfs-2.6.32-71.el6.x86_64.img.old.0 initramfs-2.6.32-71.el6.x86_64.img

再起動して正常に起動するようであれば、念のためrpmコマンドで/tmpなどに保存しておいたkernelなどをインストールすると良いかもしれません。
もしくはさくっとmkinitrdコマンドでinitrdを再作成してみたら良いんじゃないかな?
 
mkinitrd -v -f /boot/initrd-2.6.32-71.el6.x86_64.img 2.6.32-71.el6.x86_64.x86_64

2. LVMのボリュームやファイルシステムがマウントできない。
この場合は/mnt/sysimage/etc/fstabを見てみます。
基本パーティションに変換した時など、fstabの中身がLVMのパーティションを読み込むようになっている場合があります。
fstabを修正すると正常に起動してくる事がほとんどです。
ただしvCenter Converter StandaloneではLVM2しか対応してないのでご注意を! 

3. その他
Xenをインストールすると/etc/inittabのtty部分の記述が変更されるのでこれを元に戻します。
 
・修正前 
# Run gettys in standard runlevels
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

・修正後
# Run gettys in standard runlevels
#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

/etc/modprove.confの中のデバイスがxen仕様になっている事もあります。
 
・修正前 
alias eth0 xennet
alias scsi_hostadapter xenblk 

・修正後
alias eth0 pcnet32 <--NICの種類によっては変わる事もあります。(vmxnet3など)
alias scsi_hostadapter mptbase
alias scsi_hostadapter1 mptspi
alias scsi_hostadapter2 ata_piix

基本的にmount周りが何とかなってloginプロンプトさえ出ればこっちのものです!
後はkernelを入れ替えて、xenのkernelとツール関係を抜けばだいたい動きますよ!

もしこれらの対応をしても起動しなかったり、どうしてもダメな場合…
(無理にV2Vしなくても良いんじゃないかな…
こっそりコメントしてください。もしかしたらお答え出来るかもしたりしなかったり?

無事に起動したら

vmware-toolsをインストールしておきましょう。

それでは今回はこの辺りで!

(…最近AWSをvCenterで管理しつつAWS仮想マシンのインポートも出来ちゃう、AWS Management Portal Pluginというものがあるそうなー…)