ゲストの仮想ディスクをホストでマウントして使う
VMwareのフラット・ディスクはHDDのイメージそのもの、ということは、わざわざゲストマシンを立ち上げなくてもホストマシン上でマウントして使えることになる。 HDDのイメージファイルをマウントして使う方法はいくつかあるが、ここでは一番手間のかからないkpartxコマンドでパーティションにアクセスするためのデバイスファイルを作成し、そのデバイスファイルをマウントしてみる。(Linux上でHDDイメージファイルをマウントして使う詳しい方法は「HDDイメージファイルをマウントして使う方法」を参照。)
[root@server Fedora-8]# ls /dev/mapper/ ;: ← 念のためmapperの下が空なのを確認 control [root@server Fedora-8]# kpartx -v -a smallest-flat.vmdk ;: ←kpartxでパーティションのファイルを作る add map loop0p1 : 0 208782 linear /dev/loop0 63 [root@server Fedora-8]# ls /dev/mapper/ ;: ←mapperの下にデバイスファイルを確認 control loop0p1 [root@server Fedora-8]# mount /dev/mapper/loop0p1 /mnt ;: ←そのデバイスファイルをマウントしてみると [root@server Fedora-8]# ls /mnt ;: ←ゲストマシンのファイルにアクセス lost+found [root@server Fedora-8]#
これで、ゲストマシンのディスクにホストマシンから直接アクセスできることが確認できた。試しに、このマウントした状態で適当なファイルを書き込んでみる。
[root@server Fedora-8]# cp /boot/vmlinuz-2.6.25.10-47.fc8 /mnt ;: ←vmlinuzをコピーしてみる [root@server Fedora-8]# ls -l /mnt ;: ←コピーしたファイルを確認 total 2039 drwx------ 2 root root 12288 2008-07-25 16:36 lost+found -rw-r--r-- 1 root root 2065176 2008-07-25 17:24 vmlinuz-2.6.25.10-47.fc8 [root@server Fedora-8]# umount /mnt ;: ←デバイスをアンマウントし [root@server Fedora-8]# kpartx -v -d smallest-flat.vmdk ;: ←loopデバイスを開放する del devmap : loop0p1 loop deleted : /dev/loop0 [root@server Fedora-8]# ls /dev/mapper/ ;: ←開放されたことを確認 control [root@server Fedora-8]#
次にゲストマシンを立ち上げてsmallestディスクの内容を確認してみると、
[root@fedora-8 ~]# mount /dev/sdb1 /mnt [root@fedora-8 ~]# ls -l /mnt total 2039 drwx------ 2 root root 12288 2008-07-25 16:36 lost+found -rw-r--r-- 1 root root 2065176 2008-07-25 17:24 vmlinuz-2.6.25.10-47.fc8 [root@fedora-8 ~]#
はい、ちゃんとホスト上でコピーしたファイルをゲスト上でも確認できました。
なお、フラットデバイスをゲストマシンとホストマシンで同時にアクセスすることはやめておいた方がいい。それぞれのマシンでキャッシュしているので、データの不整合が起き、ファイルシステムを壊してしまう筈(未確認)。
(⇒ホスト上のHDDイメージファイルをゲストマシンでマウントして使う)