HOME / 日記 / VirtualBoxのvdiファイルからzfsのzvolのrawイメージに変換
Date: 2009/05/05 | | Tags: Solaris, OpenSolaris, Howto, 利用法
正直、いろんなツールを試してみたんですが、なぜかできてもうまく動かなかったり、そもそも途中でエラーが出て来ることが多く・・・。
意を決してVirtualBox上のゲストマシンで2台のHDD(1代がvdiファイル、2台目がrawイメージを携えたvmdk)をマウントして、V-COMのCopy Commanderというツールでコピー。別にこのツールじゃなくても良いんですが、前に間違ってかったのでライセンスがあるのです・・・。
結論を言うとできたんですが、偉い時間がかかりました。たった実データ15G未満なのに、なんと40時間ほど。Copy Commanderに純仮想化ドライバ系が一切入っていないので、理由はそれでしょうけれど。
とりあえず、ディスクサイズが全般的に減り、zfsでsnapshotをやりやすくなったので、まあよいことにするかな。
ちなみにvdiの場合snapshotの結果をcloneすると、vdiファイルの一意のIDがduplicateしてマウントできません。たぶん、vdiファイルのIDを直接書き換えればいいんでしょうけれど。
vmdk+rawだとvmdkがテキストファイルなので、一意のIDを手で書き換えることができるメリットがありますね。
せっかくなので、作業内容
rawディスクを作成。
pfexec zfs create -s -V 32G rpool/export/vm/WindowsXP/disk1
書き込み許可。これはもしかしたらブート時に毎回必要かも?
pfexec chmod a+rw /dev/zvol/rdsk/rpool/export/vm/WindowsXP/disk1
rawからvmdkの作成
/opt/VirtualBox/VBoxManage internalcommands createrawvmdk -filename `pwd`/WindowsXP-disk1.vmdk -rawdisk /dev/zvol/rdsk/rpool/export/vm/WindowsXP/disk1
あとは、上にしるしたとおり、2つのディスクをマウントし、cdromブートしておくだけです。
ちょっと時間に余裕がなくて、OpenSource系のアクティビティが下がっておりますが、近況を。
瀧 (2009-05-08 (金) 03:08:58)~~簡単なツールをPerlで作っておけば、嬉しい人がいるかも知れませんね!~ありがとうございます。~
kerolyn (2009-05-07 (木) 17:20:28)~~初めまして。いつも情報を参考にさせて頂いてます。~~$ dd if=vdiファイル名 of=UUIDファイル名 iseek=392 bs=1 count=16~としてUUIDを吸い上げます。~ghex2などのバイナリエディタでUUIDファイルをいいかげんに編集後、~$ dd if=UUIDファイル名 of=vdiファイル名 oseek=392 bs=1 count=16 conv=notrunc~として上書きすればOKでした。~