活線挿抜! VHDのhot-add/removeでホスト - ゲストのファイル交換の巻

Virtual PCならできるのに、Hyper-Vではできないことがいくつかあります。一番困るのが、

ホスト - ゲスト間で簡単にファイルの受け渡しができない

ことではないでしょうか。 「Virtual PCみたいに共有フォルダ作れないの?」 といろいろなお客様からお問い合わせをいただきます。

残念ながら、Windows Server 2008 R2 (Hyper-V 2.0) にも
「Virtual PCみたいなホスト - ゲスト共有フォルダ」
は無いのです。。。

そこでWindows Server 2008 R2の新機能二つ!

VHDのネイティブ サポート

と、

VMへのディスクの活線挿抜 (hot-add/remove)

ですよ!

簡単に書きますと、

  1. ホストでVHDファイル作成、それをその場でホストにアタッチ。VHDがまるでローカル ディスクのように見えるようになります。(VHDドライブ)
  2. VMへ持って行きたいファイルをVHDドライブへどんどんコピー
  3. VHDドライブをデタッチ
  4. ホストからデタッチしたVHDを今度はゲスト(VM)にhot-add!
  5. ゲスト側に出現したドライブから必要なデータを読み出す。逆にゲストからホストに返したいデータはそのドライブへ書き込む
  6. ゲストからVHDをhot-remove!
  7. 帰還したVHDをホストにアタッチしてゲストからのデータを読み出す

と、VHDファイルがホストとゲストの間をスペースシャトルのように行き来して荷物を運ぶわけです。もちろん活線挿抜というぐらいですから、いちいちVMをシャットダウンする必要はありません。動かしたままでOKです!

では、ちょっと順を追ってお見せします。

まず、VHDの作成から。ホスト上でdiskmgmt.mscを起動します。

image

「操作」→「VHDの作成」を選択します。

image

容量可変、最大16GBのVHDを作ってみます。

image

できましたが、この時点では未初期化です。

image

初期化してやります。

image

 

 

 

 

だまってOKをクリック!MBRで良いですもちろん。

image

無事にディスクが初期化されました。いわゆる「ディスク署名」はこの時点で書き込まれています。

image

 

でもまだファイルシステムができてないんです。シンプルボリュームを作りましょう。

image

フォーマットして(ファイルシステムを作って)ください。クイック フォーマットでよいです。

image

できました。Z:ドライブにしておきました。

image

これで、VHDファイルがまるでローカルディスクのようにアタッチされたわけです。Windows 7とWindows Server 2008 R2の新機能です。

ところでこのドライブ、既定ではかなり厳しいACLが設定されるので、気楽にファイルを書けるようにEveryoneに「変更」を与えました。(セキュリティ的には良くないですが)

image

では、ゲストに届けたい物資をここ(この例ではZ:ドライブ)に積み込みましょう。

とりあえず、テストなので空ファイルを一つだけ作っておきました。なお、"nul"はUNIXの/dev/nullに相当する疑似ファイルです。(DOSの頃からありますが、最近の若い人はご存じないかもしれないので念のため書いときます)

image

さて、VHDドライブをホストから外します。

image

「ディスクの削除後に仮想ハード ディスク ファイルを削除する(D)」には間違ってもチェックを入れないでくださいね。

image

これで、ホストからVHDがデタッチされました。Z:ドライブが消えましたね。

image

次に、デタッチしたVHDを今度はゲストにくっつけます。この↓稼働中のVMにhot-addしますよ。

image

仮想マシンの「設定」画面を出して、「SCSIコントローラ」に「ハード ドライブ」を「追加」します。

image

そう、つまりVMにSCSIコントローラを付けておく必要があります。Hyper-V 2.0では、VMを新規作成すると既定でSCSIコントローラが一つ付いてくるようになりましたが、それはこの活線挿抜を簡単に行えるようにするため、なのかもしれません。

先ほど作ったVHDファイルを指定して、「OK」してください。

image

 

 

 

 

 

 

 

 

 

 

VM側ではどうなるかと言いますと、、

image

USBディスクを挿したときのようなアイコンが。。。

しかし、「コンピュータ」にはドライブ増えてません。

image

こういうときはdiskmgmt.mscを起動してください。いましたね、新しいディスクが。オフラインだけど。。。

image

 

 

 

「オンライン」にしてやってください。

image

ちゃんと認識されました。エクスプローラで見てみましょう。

image

さっきホスト側で作ったファイルがちゃんと見えてますね。

逆の手順をたどれば、ゲストのファイルをホストに届けることももちろんできます。Virtual PCやVirtual Boxほど簡単ではありませんが、ホスト - ゲスト間のファイル交換がこのようにして行えます。また、VHDを作成してフォーマットして、、という一番面倒なところは、最初に一度必要なだけです。

※ VM側で追加したディスクが認識されない場合

デバイス マネージャー(devmgmt.msc)を開いて、「ハードウェア変更のスキャン」を実行してみてください。きっとディスクが現れます。

image

そして、この場合おそらくVMにインストールされているIC(統合コンポーネント)がちょっと古いと思いますので、R2のICを導入してあげてください。

image

 

 

VMBus (仮想マシン バス) のバージョンが”6.1.7600.16385”であれば、Windows Server 2008 R2のRTM版のIC (現時点での最新版) です。(デバイス マネージャーから確認できます)

image

以上、「活線挿抜!でファイル交換」でした。

※ なお、VHDの代わりに、USBハードディスクを使うこともできます。ホストに挿したUSBディスクを、VMにパススルー ディスクとしてくっつけるのです。これも活線挿抜できるようになってます。VMから大量のデータを運び出す(メモリダンプとか)時に、とても便利です。

__END__