活線挿抜! 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)
ですよ!
簡単に書きますと、
- ホストでVHDファイル作成、それをその場でホストにアタッチ。VHDがまるでローカル ディスクのように見えるようになります。(VHDドライブ)
- VMへ持って行きたいファイルをVHDドライブへどんどんコピー
- VHDドライブをデタッチ
- ホストからデタッチしたVHDを今度はゲスト(VM)にhot-add!
- ゲスト側に出現したドライブから必要なデータを読み出す。逆にゲストからホストに返したいデータはそのドライブへ書き込む
- ゲストからVHDをhot-remove!
- 帰還したVHDをホストにアタッチしてゲストからのデータを読み出す
と、VHDファイルがホストとゲストの間をスペースシャトルのように行き来して荷物を運ぶわけです。もちろん活線挿抜というぐらいですから、いちいちVMをシャットダウンする必要はありません。動かしたままでOKです!
では、ちょっと順を追ってお見せします。
まず、VHDの作成から。ホスト上でdiskmgmt.mscを起動します。
「操作」→「VHDの作成」を選択します。
容量可変、最大16GBのVHDを作ってみます。
できましたが、この時点では未初期化です。
初期化してやります。
だまってOKをクリック!MBRで良いですもちろん。
無事にディスクが初期化されました。いわゆる「ディスク署名」はこの時点で書き込まれています。
でもまだファイルシステムができてないんです。シンプルボリュームを作りましょう。
フォーマットして(ファイルシステムを作って)ください。クイック フォーマットでよいです。
できました。Z:ドライブにしておきました。
これで、VHDファイルがまるでローカルディスクのようにアタッチされたわけです。Windows 7とWindows Server 2008 R2の新機能です。
ところでこのドライブ、既定ではかなり厳しいACLが設定されるので、気楽にファイルを書けるようにEveryoneに「変更」を与えました。(セキュリティ的には良くないですが)
では、ゲストに届けたい物資をここ(この例ではZ:ドライブ)に積み込みましょう。
とりあえず、テストなので空ファイルを一つだけ作っておきました。なお、"nul"はUNIXの/dev/nullに相当する疑似ファイルです。(DOSの頃からありますが、最近の若い人はご存じないかもしれないので念のため書いときます)
さて、VHDドライブをホストから外します。
「ディスクの削除後に仮想ハード ディスク ファイルを削除する(D)」には間違ってもチェックを入れないでくださいね。
これで、ホストからVHDがデタッチされました。Z:ドライブが消えましたね。
次に、デタッチしたVHDを今度はゲストにくっつけます。この↓稼働中のVMにhot-addしますよ。
仮想マシンの「設定」画面を出して、「SCSIコントローラ」に「ハード ドライブ」を「追加」します。
そう、つまりVMにSCSIコントローラを付けておく必要があります。Hyper-V 2.0では、VMを新規作成すると既定でSCSIコントローラが一つ付いてくるようになりましたが、それはこの活線挿抜を簡単に行えるようにするため、なのかもしれません。
先ほど作ったVHDファイルを指定して、「OK」してください。
VM側ではどうなるかと言いますと、、
USBディスクを挿したときのようなアイコンが。。。
しかし、「コンピュータ」にはドライブ増えてません。
こういうときはdiskmgmt.mscを起動してください。いましたね、新しいディスクが。オフラインだけど。。。
「オンライン」にしてやってください。
ちゃんと認識されました。エクスプローラで見てみましょう。
さっきホスト側で作ったファイルがちゃんと見えてますね。
逆の手順をたどれば、ゲストのファイルをホストに届けることももちろんできます。Virtual PCやVirtual Boxほど簡単ではありませんが、ホスト - ゲスト間のファイル交換がこのようにして行えます。また、VHDを作成してフォーマットして、、という一番面倒なところは、最初に一度必要なだけです。
※ VM側で追加したディスクが認識されない場合
デバイス マネージャー(devmgmt.msc)を開いて、「ハードウェア変更のスキャン」を実行してみてください。きっとディスクが現れます。
そして、この場合おそらくVMにインストールされているIC(統合コンポーネント)がちょっと古いと思いますので、R2のICを導入してあげてください。
VMBus (仮想マシン バス) のバージョンが”6.1.7600.16385”であれば、Windows Server 2008 R2のRTM版のIC (現時点での最新版) です。(デバイス マネージャーから確認できます)
以上、「活線挿抜!でファイル交換」でした。
※ なお、VHDの代わりに、USBハードディスクを使うこともできます。ホストに挿したUSBディスクを、VMにパススルー ディスクとしてくっつけるのです。これも活線挿抜できるようになってます。VMから大量のデータを運び出す(メモリダンプとか)時に、とても便利です。
__END__