概要

Hyper-V上で動いているLinux仮想マシン(OSはCentOS 5.8)をVMware ESXi 5へ移行しました。

移行するやり方は2通りあります。

  • VMware vCenter Converter https://my.vmware.com/web/vmware/evalcenter?p=converter を使った簡単なやり方
  • 仮想ディスクを変換して、ごにょごにょする面倒なやり方

今回は後者でやりました。

手順

ステップ1 仮想ディスクvhdxをvmdkへ変換する

Hyper-Vサーバ上にはある仮想ディスクを変換します。

変換にはStarWindのV2V Converterを使いました。

下記からダウンロードできます。
https://www.starwindsoftware.com/converter

変換先としてVMware pre-allocated imageを選択しました。

v2v1.PNG

ほんとうはthickディスクじゃなくてthinディスクにしたいのですが、なぜかESXiで読み込めませんでした。後でもう一度thinに変換することにします。

ステップ2 VMware仮想マシンを作成

VMware ESXi上で仮想マシンを作成します。
このとき仮想ディスクは作らないようにします。

ステップ3 変換した仮想ディスクvmdkをアップロード

変換した仮想ディスクをVMware ESXiからアクセスできる場所へアップロードします。

ステップ4 仮想マシンへ仮想ディスクを追加

ステップ2で作成した仮想マシンに、ステップ3でアップロードした仮想ディスクを追加します。

SCSIコントローラは、CentOS 5なので LSI Logic SASを選びました。
より新しいOSであれば、VMware paravirtualのほうがよいです。

ステップ5 仮想マシンをLive DVDを使って起動

rootファイルシステムが見えなくて起動しないので、いったんLive DVDで起動します。

自分はCentOS 7のDVDを使いました。

ステップ6 /etc/modprobe.confを書き換えて、initrdを再作成

既存CentOSが/mnt/sysimageにマウントされているはずなので、その中にある/etc/modprobe.confを書き換えます。

vi /mnt/sysimage/etc/modprobe.conf

書き換え内容は、scsi_controllerを含む行です。

/mnt/sysimage/etc/modprobe.conf

alias scsi_hostadapter mptbase
alias scsi_hostadapter1 mptscsih
alias scsi_hostadapter2 mptfc
alias scsi_hostadapter3 mptspi
alias scsi_hostadapter4 mptsas

CentOS wikiにある手順に従って、initrdを再作成していきます。

必要なものをマウントして、chrootします。

mount --bind /proc /mnt/sysimage/proc
mount --bind /dev /mnt/sysimage/dev
mount --bind /sys /mnt/sysimage/sys
chroot /mnt/sysimage

initrdを作成します。wikiにある手順では、カーネルバージョン部分はuname -rで取得していました。今回は異なるバージョンのLive DVDを使っているので手書きしました。

cd /boot
cp initrd-2.6.18-308.el5PAE.img initrd-2.6.18-308.el5PAE.img.bak
mkinitrd -f -v /boot/initrd-2.6.18-308.el5PAE.img 2.6.18-308.el5PAE

再起動します。

exit
reboot

ステップ7 Linux Integrationをアンインストール

無事起動したら、Hyper-VのLinux Integrationをアンインストールします。

ステップ8 VMware Toolsをインストール

いつもの手順でVMware Toolsをインストールします。

以上です。お疲れ様でした。 :smile:

落穂ひろい: thick仮想ディスクをthinにする

ESXiホストマシンへsshでログインして、vmkfstoolsを使います。

vmkfstools -i original.vmdk new.vmdk -d 'thin'

ls -lで見える数字は仮想ディスク全体のサイズなので、-sを付けると実サイズが見えます。

こういう作業は、sshしてするよりvSphere PowerCLI使ったほうがよさげです。