VMWare ESXiのファイルシステムをLinuxから読みとる

VMware ESXiで使われるファイルシステムであるVMFS上のデータを吸い出したい。

試した対象

VMware ESXi 4.0.0

ディスクはこんな感じ。

VMFS(vmfs3)でフォーマットされている。

vmfs-toolsを使う

Ubuntu 10.10のレポジトリにvmfs-toolsという便利そうなツールがありました。

% sudo apt-get install vmfs-tools   

使う

% sudo vmfs-fuse /dev/sdb /mnt

fuseを使ってマウントできるのであとはコピーしてやるだけ。書き込みは試していません。

VMの引っ越し

ちなみにVMのイメージをKVMやXenなどに持って行きたい場合、qemu-imgコマンドを使って変換が可能。
VMFSのスナップショットは扱えないようなので吸い出す前にESXi上でスナップショット全部削除して統合しておきましょう。削除せずに完全なイメージの出力はESXiでは無理そうだったので諦めました。VMのクローニングができる環境ならクローニングすれば完全なイメージが吐き出される気がするので、評価版ライセンスを有効にして一時的にESX相当にすれば良いかもしれません。

ファイルサイズを見ればどれがイメージなのかは大体分かるだろうけど、目当てのディスクイメージが分からない場合はVMの設定ファイルを見れば何か分かるかもしれない。
吸い出したデータのマシン名.vdxにイメージのメタデータのファイル名が書かれている。

scsi0:0.present = "true"
scsi0:0.fileName = "hoge.vmdk"
scsi0:0.deviceType = "scsi-hardDisk

disk.vmdkにイメージの情報が書かれている。

RW 41943040 VMFS "hoge-flat.vmdk"

変換する

% qemu-img convert -O raw hoge-flat.vmdk /path/to/save/hoge.img

あとはVirt-mangerからインポートするなり、手でイメージを差し替えるなり好きにしたらいいのよ。