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

うまいぼうぶろぐ

linuxとhttpdとperlのメモ

VMware vCenter Converter Standalone でconvert出来ないsoftware raid(mdadm)のlinuxをddでP2Vする

タイトルの通りvcenter converterではmdadmをsupportしてないのでdeviceを見つけられず、p2v出来ない。

例えば/bootが見つけられなくてエラーが出るなどで。

There is no '/boot' directory mounted on the source machine. 
It is required to create a bootable virtual machine. 
Mount the '/boot' directory on the source machine.

/bootだけ/dev/sda1で他がmdadmだっだとしても、/bootしか見えずにrootが持ってこれないとか。


対処方法はざっくり3つ?
1. cdからresuce bootしてmdadmを削除して物理デバイスをmountするように修正してからconverterを使う
- メンテナンスで停止できるならこっちで良い
2. ddでhddのrawイメージを吸い出し&vmdkに変換して仮想マシンのディスクとして利用する
- ddで読み出すIO負荷、network転送をするので多少影響は出るけど無停止でいける。
- ただし、静止点のようなものは考慮されないので、disk書き込みが続いて、ファイルに差分が出るような場合は
p2v後に別途rsyncや、DBをdump/restoreなどをする必要はある。
3. #パーティション構成が変更になっても良い場合
移行先の仮想マシンをcdブートで起動してdiskを/mnt/sysimageなどでmountしておく
移行元のサーバからssh+tarで移行先のdiskに書き込む

ddでp2v テスト

コピーするのは/dev/sda とする。

hogem.hatenablog.com

基本的には前にkvmで試したこのエントリと同じことをする。

ddでrawイメージで吸い出す

ddを使うので出来上がるファイルサイズ使用量ではなくHDDのサイズと同じになる。

1 network越しに直接remote hostに送る
2. /dev/sda以外でraidにも使用してない別diskをmountしてそこに書き込む
3. nfs mountした場所に書き込む

など。今回は1を使う。
吸い出すHDDの容量+vmdkに変換などを行うので容量に余裕のあるサーバで。

ファイル拾い上げるサーバでnetcatで適当なportでlisten

$ nc -l 10000 > sda.img


吸い出すサーバ
ddをパイプで繋いでnetcatで送信する。

$ dd if=/dev/sda bs=100M | nc remote.server.addr 10000

qemu-img でvmdkに変換

rawイメージのままだとvmwareで使用できないので
適当なlinuxサーバで変換。qemu-imgなかったらyumで入れる。

# yum install qemu-img


qemu-imgに-pつけると進捗が表示される。

$ qemu-img convert -p -f raw sda.img -O vmdk sda.vmdk

あとは出来上がったvmdkを使ってデプロイ。