cloudstackにRHEL51をP2Vしたら想像以上にハマったけどなんとかなったメモ1(物理→KVMまで)

cloudstackの環境を某所で構築・運用しております。

今回、そのcloudstack環境に7〜8年稼働しているサーバをP2Vすることになりました。
vmware環境ではもうずいぶん前にP2Vを飽きるほどやってきたのですが、今回は結構大変でした。

環境はこんな感じ。

移行前の物理サーバ:

プロセッサ:intel x5506(1p4c)
メモリ:12GB
SATA 1TB HDD x2 mdstat RAID1
NIC:1Gbps
REHHAT Enterprise Linux 5.10

移行先のcloudstack環境(ハードウェアはホストの1台あたりのスペックです)

プロセッサ:intel E5-2680v2 x2(2p20c) /台
メモリ:256GB/台
SATA 1TB HDD x2 RAID1
NIC:10Gbps
ホストOS: CentOS6.4 x64 + KVM
cloudstack: 4.2.1

今回はcloudstackにいきなり行く方法が思いつかなかったため、
物理→KVM仮想化→cloudstackという段階を踏むことにしました。

  1. 移行対象の物理ハードの問題

プロセッサとかメモリは良いのですが、問題はHDD
サイズもでかいし、ソフトミラーだし。
サイズはそれほど必要ではないので、移行先では小さくしなければならない。
当然仮想環境になるので、ソフトミラーリングは解除が必要です。

  1. 物理→KVM仮想化

おいおい時間があれば詳しく書くことにしますが、眠いので結果だけ

P2Vツールは、VirtP2VというツールがKVM用にありますが、ディスクまるごとコピーが必要です。
今回のケースは試しただけですが、1TBx2の転送がなぜかほぼ丸一日かけて実行しましたが終わりませんでした。
ディスクの転送のあとにベリファイしてるんだかなんだかいつまで経っても終わりません。
という訳で時間が足りないのでNG

そもそも2TBコピーするのにも10時間近くかかるので、結局 

DVDブート(なんでも良いと思いますが、CentOS6.5 x64 DVDをレスキューモードで使いました)
コピー先(cloudstack管理外だが同じ場所に配置した単体KVM)でnc+ddで待ちにする

# nc -l 5555 | dd of=ファイル名.img bs=50M

DVDブートした移行元で

# dd if=/dev/sda bs=50M | nc コピー先のホスト名

という感じでディスク丸ごとRAWイメージしながら転送。
mdstatでRAIDをくんでいる場合は、md0,md1,md2といったメタデバイスが使われているが無視。

元のサーバも古いので、1Gbpsインターフェースでも1Gbpsは出ません。当方テストで50MB/s強でした。
遅いのはディスクIOが原因かもしれませんが、未調査。
かれこれ1TBの転送に5時間かかりました。
ディスクの使用率が低かったので、もしかすると上のコマンドの間にパイプでbzip2すると効果があったかも知れませんが、
最初がゲキ遅で時間が読めないため却下。

  1. VirtManagerにコピーしたRAWイメージの登録

上の一生懸命コピーしたRAWイメージをVirtmanagerでゲスト作成する際に選択します。
注意点:
HDDのデバイスタイプは、VirtIODiskに設定されますが、扱ったRHEL5.10ではGrubから先のinitrdでvirtiodiskが認識できないため、IDEに変更します。
NICもVirtIOドライバが勝手にアサインされますが、これは無事動きます。
MACアドレスも変わりますが、udevのルールを初期する必要はなかったです。これはたぶんRHEL5だったからかも。

これで一応ブートします。/etc/fstabあたりは変更する必要あります。mdX -> sdX -> (IDEディスクにしているからさらに)1hdXにする必要があります。mdstat環境でもswapはミラーしていないことが多いと思います。
この場合、/etc/fstabでswapは/dev/sdX形式で定義されていることもあるので、ここは変更しないとブートしますが、swapが設定されません。

という感じで一応、KVM上で動くようにはなりました。

次回は、md構成の解除とディスクサイズを小さくする方法を書きます。