VMWare FusionのVMをCentOS上のKVMに移す
こんにちは。今日はmacOS上で動いていたVMをリソース潤沢なKVMサーバに移す話です。
バージョン
- 移行元: VMWare Fusion 7.1.3
- 移行先: CentOS 7.5
- ゲストOS: Windows 7 Professional
- 移行元のスペック情報はあまり残さない方針
- 後ほど手で直そうと思っていたので
VM移設
macOSからのエクスポート
VMWare Fusionのディスクを操作するには vmware-vdiskmanager
を使う必要があります。既にVMWare Fusionを利用しているmacOSにはパッケージ内にコマンドがあるので、これを利用しましょう。
$ /Applications/VMware\ Fusion.app/Contents/Library/vmware-vdiskmanager
まず最初に、ゲストOSのディスク名を英語の物にしてしまうのをオススメします。違うOS間を移動する都合上、漢字や片仮名を用いたファイル名は避ける方が吉です。デフォルトでは”仮想ディスク”という名前になっていることが多いので注意が必要です。
vmware-vdiskmanager にはディスク名を変更するコマンドがあるので、これを使います。
$ cd Documents/Windows\ 7\ x64.vmwarevm/ # もしVMの保存先を変更していたらそちらに
$ /Applications/VMware\ Fusion.app/Contents/Library/vmware-vdiskmanager -n "仮想ディスク.vmdk" vdisk.vmdk
この際、仮想ディスク-s001.vmdk
のようなファイル名のファイルが多くあるかもしれませんが、気にせずサフィックス無しのファイルのみ指定すれば問題無いです。
-s001
のようなファイルは、分割されたOSファイルです。ファイルシステムによっては1つの巨大なファイルを扱うより数GB程度のファイルをいくつか扱う方が性能が良いので、この機能が有効化されている場合が多いと思います。
これらを1つのファイルに纏めるコマンドが以下です。
$ /Applications/VMware\ Fusion.app/Contents/Library/vmware-vdiskmanager -r vdisk.vmdk -t 0 vdisk-full.vmdk
分割されているファイルを1つに纏めたファイルを出力するコマンドです。単純にVMサイズと同じディスク容量のファイルが生成されるので、ディスク容量にはお気を付けください。
このファイルを入手したらエクスポートは成功です。scp
コマンドなどでサーバに送りましょう。
$ scp vdisk-full.vmdk whywaita@server:
KVMサーバへのインポート
既にQEMU/KVM環境が完成している場合はqemu-img
コマンドが利用できます。このコマンドでOSイメージを変換します。
変換後のファイル形式はお好みで。私はqcow2でうまくいきました。
$ qemu-img convert -f vmdk -O qcow2 vdisk-full.vmdk image.qcow2
あとはお好みのVM管理コマンドで既存ディスクから起動すれば成功です。私はvirt-manager
でサクッと起動しました。
CentOS上でvmware-vdiskmanagerを起動する
上記の方法ではmacOS上でVMディスクを纏めましたが、諸般の理由でこの作業をLinux上で行いたい場合があります。例えばストレージの都合とか。
その場合は以下のリンクが参考になります。
- User Tolerant Liveware: vmware-vdiskmanager and CentOS 6
- Repairing a virtual disk in Fusion 3.1 and Workstation 7.1 (1023856) | VMware Knowledge Base
適切なライブラリを、適切な場所にシンボリックリンクすると動きます。詳細は割愛しますが、以下のようなファイル配置になると思います。
.
├── vmware-vdiskmanager-linux.7.0.1
├── libdir
│ └── lib
│ ├── libcrypto.so.0.9.8
│ │ └── libcrypto.so.0.9.8 -> /usr/lib/libcrypto.so.0.9.8e
│ └── libssl.so.0.9.8
│ └── libssl.so.0.9.8 -> /usr/lib/libssl.so.0.9.8e
おわりに
無事にリソース的に余裕があるKVMサーバにVMを映せました。これでまた暫く戦えそうです。
今回はゲストOSがWindowsでしたが、このままだと使う場合にもう少し工夫が必要な場合があります。特に仮想GPUが鬼門で、適当なGPUをパススルーするかRemoteFXが使えるようにするかなどがあります。
RemoteFXが使えれば一番楽なのですが、その場合はWindows Serverを入れたりWindows 7からWindows 10に上げるなどが楽なようです。私も何か考えないとな…。
参考文献
- VMWareでハードディスクのイメージが分割ファイルで管理されているのを1つにまとめる | レンタルサーバー・自宅サーバー設定・構築のヒント
- Converting a VMware Fusion virtual machine to KVM
- OpenStack Docs: イメージ形式の変換
- User Tolerant Liveware: vmware-vdiskmanager and CentOS 6
- Repairing a virtual disk in Fusion 3.1 and Workstation 7.1 (1023856) | VMware Knowledge Base