[System Environment] | |||||||||||
差分仮想ディスクをコマンドラインから作成する
|
|||||||||||
|
解説 |
|
Virtual PCやVirtual Server、Hyper-Vなどで利用するOSのマスタ・イメージ・ファイルを作成した場合、間違って書き込んでしまわないように、読み出しのみの属性を付けて保存しておきたいことがある。だがHyper-Vの場合、書込み禁止の仮想ディスクを仮想マシンにマウントしようとすると、次の画面のようなエラーが表示され、マウントできない(つまり設定を完了できない)。
仮想ディスク・ファイルに書き込みができない場合のエラー | |||
これはWindows Server 2008 R2のHyper-V 2.0上の仮想マシンで、書込み禁止に設定した仮想ディスク・ファイルをマウントしようとした場合の例。仮想ディスクに対して書き込みの権限が許可されていないと、このようなエラーになり、マウントできない。Virtual PCやVirtual Serverの場合は、警告メッセージが表示されるものの、マウントすることは可能。ただしそのまま仮想マシンを起動すると、結局書込み禁止でエラーになるので、復元ディスクなどを使って、書き込まないようにして利用する。 | |||
|
|
復元ディスクやスナップショット機能を使う場合、マスタとなる仮想ファイルに書き込む必要はないので、読み出しのみのファイルでも問題はなさそうだが(実際、復元ディスクやスナップショットでは、マスタの仮想ディスク・ファイルへの書き込みは発生しない)、このように設定画面でエラーとなってしまい、設定を完了することができない。
なおVirtual PCやVirtual Serverの場合は、警告メッセージは表示されるものの、マウントすることは可能である。なので、読み出しのみの仮想ディスク・ファイルをマウント後、復元ディスクを有効にしておけば、仮想マシンを起動して利用できる。
差分ディスクを自動的に作成させる
このような問題を避けつつ、マスタとなる仮想ディスク・ファイルを読み出しのみの属性を付けて保護する簡単な方法として、差分ディスクを作成して利用するという方法がある。マスタの仮想ファイルを保護したまま、差分ディスクを通常の読み書き可能なファイルとして作成しておけば、Hyper-Vでも問題なく利用できるようになる。差分ディスクなので、再生成させれば元の環境に戻すのも容易である。中間的なファイルを作成、維持管理するという手間は増えるが、最初にまとめて作成しておくだけなので、そう大きな手間ではない。とはいえ、GUIの管理ツール([コンピューターの管理]−[ディスクの管理]ツール)を使って1ファイルずつ処理するのは面倒である。すでに仮想ファイルがいくつもある場合は、コマンドなどを使って自動化できると便利だ。
Windows 7/Windows Server 2008 R2では、diskpartコマンドを使って、コマンドラインから仮想ディスク・ファイルを作成/操作できるようになった。本TIPSでは、これを使って、差分仮想ディスクを素早く作成する方法を紹介する。
操作方法 |
仮想ディスクをコマンド・プロンプトから自動作成するには、diskpartコマンドを利用する。diskpartコマンドを使って差分ディスクを作成する方法はTIPS「仮想ディスクをコマンドラインから作成・管理する」で紹介しているが、次のようなコマンドを実行するだけである(管理者として実行したコマンド・プロンプト上でdiskpartを起動し、実行する)。
create vdisk file=<作成する仮想ディスク・ファイルの絶対パス名> parent=<親ファイルの絶対パス名> |
diskpartコマンドを起動後、作成する仮想ファイル名と親のファイル名を指定して、「create vdisk」コマンドを実行すればよい。ファイル名は必ず絶対パス名にすること、空白や特殊文字が含まれる場合はダブルクオート記号で囲むこと、が注意点である。作成される仮想ファイルのサイズは親ファイルのものが継承されるので、指定する必要はない。また差分ファイルの内部には親ファイル名が絶対パス名で記述されているので、一度作成したら、以後は親ファイルを移動してはいけない。
実行すると次のようになる。
DISKPART> create vdisk file="c:\vhdfile\newxp.vhd" parent="c:\vhdfile\org\vpc jpn windows xp pro sp3.vhd" …差分ファイルの作成 |
forコマンドで多数のファイルを自動処理する
対象となるファイルが複数ある場合は、「create vdisk 〜」というコマンド列をforコマンドなどで自動作成し、それをdiskpartコマンドに渡して実行するとよいだろう。例えば、c:\vhdfile\orgフォルダにマスタとなる仮想ディスク・ファイル(読み出しのみの属性付き)が複数あり、c:\vhdfileフォルダに差分ファイル作成したいとする。この場合はc:\vhdfile\orgフォルダでforコマンドを実行してファイル名を取り出し、echoと組み合わせてコマンド文字列を合成すればよいだろう。
※forでdiskpartコマンドを合成する |
出力されたコマンド文字列をdiskpartコマンドに与えて実行させれば、簡単に差分ディスクを作成できる。スクリプトとして実行させるなら「diskpart /s <スクリプト・ファイル名>」とすればよいし、そのまま直接diskpartコマンドのプロンプトへ流し込んでも(貼り付けても)よい
c:\VHDFILE\ORG>type diskpartcmd.txt …作成したコマンド文字列 |
作成された差分ディスクには読み出しのみの属性を付けず、そのまま利用すればよい。
この記事と関連性の高い別の記事
- 仮想ディスクをコマンドラインから作成・管理する(TIPS)
- 仮想マシンにおける差分ディスクと復元ディスクの違い(TIPS)
- 仮想ディスクをコマンドラインから拡大/縮小する(TIPS)
- Hyper-V 2.0で仮想SCSIディスクを動的に追加する(TIPS)
- 物理ディスクの内容を仮想ディスク・ファイルに変換する(TIPS)
このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
「Windows TIPS」 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|