第2回 仮想ディスクの種類とSID重複問題仮想PCで学ぶ「体当たり」Windowsシステム管理(2/3 ページ)

» 2009年07月16日 00時00分 公開
[打越浩幸デジタルアドバンテージ]

 次は、仮想ディスクのメンテナンスなどに関するトピックを取り上げる。

仮想ディスク・サイズの拡大/縮小

 仮想ディスクのサイズは作成時にユーザーが決めると、通常は後からもう変更することはできない。例えば16Gbytesの仮想ディスク・ファイルを作成してOSをインストールしたが、データが増えたので64Gbytesに増やしたくなったとする。このような場合、今まではあきらめてOSの再インストールから行っていたかもしれない。だがフリーのツールを使うか、Hyper-Vの仮想ディスクの編集ウィザードを利用すれば、このサイズを変更できる。

 Virtual PCやVirtual Serverの場合は、標準ツールは用意されていないので、VHDResizeなどのツールを使ってサイズを拡大する。具体的な手順については以下を参照していただきたい。

 Hyper-Vの場合は、Hyper-Vの管理ツールで[操作]メニューの[ディスクの編集]を起動する。すると「仮想ハードディスクの編集ウィザード」が起動するので、ディスクの「拡張」を選んで実行する。いずれのツールを使っても、最大2Tbytesまで拡大できる。

 以上の操作で拡張ディスク・ファイル(.vhdファイル)に記録されている、ハードディスクのサイズ属性が拡張される。現実のハードディスクでいえば、物理的な容量が例えば16Gbytesから64Gbytesに急に増加したのと同じである。

 次は仮想ディスク中に記録されているボリューム・サイズを拡大する。上の操作ではディスクのサイズは拡大されたが、その中に記録されているボリューム・サイズはそのままだからだ。1ドライブ=1パーティションならば、64Gbytesのディスク中に16Gbytesのボリュームが1つだけ存在し、その後の48Gbytesは未割り当てのままになっている状態である。

 ボリューム・サイズを拡大するには、diskpartコマンドのextendサブコマンドを利用するか(Windows 2000以降で利用可能)、[ディスクの管理]ツールでボリュームを選び、[ボリュームの拡張]という操作を行う(Windows Vista/Windows Server 2008以降の場合)。以下のTIPSも参照していただきたい。

容量可変の仮想ディスクのデフラグとワイプ

 容量可変の仮想ディスク・ファイル(.vhdファイル)には、実際に書き込みがあった仮想ディスクのブロックに対するデータのみが記録されている。そのため、仮想マシンの実行が進むにつれて(仮想ディスクへの書き込みが増えるにつれて)、仮想ディスク・ファイルのサイズは拡大し続ける。

 しかしいったん拡大した仮想ディスク・ファイルは自動的に縮小することはない。たとえ仮想マシン上でファイルやボリュームを削除しても、それらが使用していたブロックは.vhdファイルに割り当てられたままで、解放されることはない。仮想マシン上でデフラグしても、その部分は割り当てられたままである。それだけでなく、デフラグによってファイルが別の場所へ移動させられると、その部分に対して新しくブロックが割り当てられるので、むしろ仮想ディスクのファイルが増加することになる。

 このような場合は、新しくディスクを作成して、ファイル・システムで使用済みの部分だけをコピーし直すことによって、仮想ディスク・ファイルの最小化を図ることができる。具体的には、「バーチャル・ディスク事前圧縮ユーティリティ」というツールを実行してディスクの未使用領域(ファイルに割り当てられていない部分)に0データを書き込み(0で「ワイプ」する)、仮想マシンをシャットダウンしてから、仮想ディスクの「圧縮」操作を行う(この圧縮とは、容量可変ディスクの未使用部分を解放する処理のこと)。具体的な操作方法については以下のTIPS記事を参照していただきたい。

復元ディスクとスナップショット

 これは仮想ディスクのオプションではなく、仮想化ソフトウェア側におけるディスクの利用方法の1つであるが、「復元ディスク」と「スナップショット」という機能がある。いずれも、仮想マシンの実行状態を保存しておき、後で簡単に元の環境へ戻すために利用できる機能である。実験前の動作環境を保存しておいて、同じ環境を何度も素早く再現してテストを実施する、プログラムのインストールやシステムの設定変更などを行った後で元の状態へ戻し、また別の設定を行い、テストを続行する、といった用途で利用する。

機能 内容
復元ディスク Virtual PC 2007、Virtual Server 2007で利用可能な機能。仮想マシンの状態を1つしか保存できない。具体的には、仮想マシン開始直前の状態へ戻ることだけが可能。一度復元すると、復元前の状態へ戻ることはできない
スナップショット Hyper-Vで利用可能な機能。仮想マシンの状態を複数保存可能。後で任意の時点に戻すことができる
環境復元機能

 以下、この2つについて見ておこう。

■復元ディスク
 これはVirtual PC 2007やVirtual Server 2007で利用可能な機能である。Hyper-Vのスナップショットと比べると機能が限定され、今となっては使いづらい機能であるが、基本的な使い方/考え方は同じなので、使いこなせるようにしておきたい。

 復元ディスクの機能を簡単にいうと、仮想マシン(のディスク)へ書き込んだデータをキャッシュしておく技術である。データの読み出しはオリジナルの仮想ディスク・ファイルから行うが、データを書き込もうとすると、実際には復元ディスク・ファイルへの書き込みに振り向けられる。いったん復元ディスクへデータが書き込まれると、以後は復元ディスクから読み出しが行われ、常に最新のデータが参照できるようになっている。このキャッシュは仮想ディスクのブロック単位で処理される。

復元ディスクの概念図
復元ディスクは仮想マシン環境ごとに有効/無効を設定できる機能。これを有効にしておくと、仮想ディスクに対する書き込みはすべて復元ディスクに対して行われ、オリジナルの仮想ディスクの内容は変更されずにそのままになる。仮想マシン環境の実行終了後、復元ディスクの内容を「破棄」すれば初期状態に戻せるし、「反映」すれば仮想ディスクに対して書き込むことになる。

 このように、オリジナルの仮想ディスクの内容はいっさい変更せずに、仮想ディスク内で行われた書き込みだけをまとめて保存することにより、個々の仮想マシンの状態を独立して維持・管理できるようにするのがこの復元ディスクである。

 仮想マシンで作業が終了した後、復元ディスクの内容をそのまま保存しておけば、次回起動後も引き続きその環境を利用でき、作業を続行できる。しかし復元ディスクの内容を削除(破棄)すれば、ユーザーの行った設定などをすべてキャンセルして、オリジナルの状態にすぐに戻すことができる。実PC環境ならば、バックアップ・データからフル・リストア(完全リストア)しなければできない操作が、このように仮想PCならは簡単にできる。

復元ディスクの破棄の例
これはVirtual PC 2007で仮想マシン環境を終了しようとしたときに表示されるダイアログ。復元ディスクの内容を仮想ディスクに反映するか、破棄するかを選択することができる。
 (1)復元ディスクの内容を破棄して終了する場合はこれを選択する。仮想マシン起動中の変更内容はすべて破棄され、初期状態に戻る。
 (2)復元ディスクの内容を仮想ディスクに反映させるための指定。

 復元ディスクの機能は、一見すると差分ディスクと似ているが、その目的は異なっている。

  • 差分ディスクは親の仮想ディスクと組み合わせて使うものなので、どちらかというと、容量可変や容量固定の仮想ディスクと同じものとみなせる。
  • 復元ディスクは、セッションの結果(仮想マシンを起動してから行った操作結果)をキャンセルするために利用するもの。

 以下の記事も参考にしていただきたい。

■復元ディスクの制限
 ただしこの復元ディスクの機能にはいくつか制限がある。

 まず、復元ディスクで保存できる状態は1つだけということがある。後述するHyper-Vのスナップショットのように、複数の状態を保存しておいて、そのいずれかの状態へ戻るということはできない。復元ディスクで戻せるのは、(復元ディスクオプションをオンにしてから)最初に仮想マシンを起動したときの状態だけである。つまり最初の状態へ戻るだけである。そして一度戻してしまうと、最新の状態(復元する直前の状態)へは戻すことはもうできない。復元ディスクの内容を削除して復元を実現しているからだ。

 また復元ディスクの設定は仮想マシンごとにしか行えないという制限もある。1つの仮想マシンに2つ以上の仮想ディスクを接続した場合、例えばOSを入れた仮想ディスクは復元ディスクで保護するが、データを入れた2台目の仮想ディスクは復元ディスクを使わずに直接更新する、といった使い方はできない。復元ディスクでリストアすると、2台とも元の状態に戻ってしまうのである。そのため必要ならば、例えばOS側のディスクは差分ディスクにして、オリジナルの仮想ディスクの内容を保護しながら、仮想ディスクへの書き込みを許可するといった手法を利用する必要がある。

復元ディスクの設定
復元ディスクは、仮想ディスクごとにではなく、仮想マシンごとに設定する。復元すると、すべての仮想ディスクの内容が最初の状態へ戻る。
 (1)1つの仮想PCでは、複数の仮想ディスクを利用できる。
 (2)しかし復元ディスクの設定は、仮想ディスクごとではなく、仮想マシンごとにしか設定できない。

■スナップショット
 これはHyper-Vで利用可能な機能である。復元ディスクでは過去のある1つの時点の状態にしか戻すことができなかったが、スナップショットでは、(スナップショットを作成しておいた)過去の任意の時点の状態に戻すことができる。過去のスナップショットの時点へ戻ることを「スナップショットを適用する」というが、適用前に、その時点のスナップショットを作成することも可能である。これを作成しておくと、後でまたこの時点の状態へ戻ってくることができる。また過去のスナップショットを適用して実行を再開した後、そこからまた別のスナップショットの履歴を重ねることもできるので(スナップショットの履歴ツリーを分岐して作成する)、さまざまな時点での状態を素早く保存、再現できる。

枝分かれしたスナップショット・ツリー
スナップショットの履歴は、ツリー状に構築できる。これにより、過去の任意の時点に素早く戻ったり、また最新の時点(ツリーの末端)に戻って作業を続けたり、ということが可能になっている。

 スナップショットの使い方については、以下の記事を参照していただきたい。

容量固定と容量可変の仮想ディスクの変換

 容量可変の仮想ディスクと容量固定の仮想ディスクは相互に変換可能である。パフォーマンスの問題から容量固定の仮想ディスクに変換したり、逆にディスク領域を節約するために容量固定のサイズに変更したりできる。

 この操作を行うには、管理ツールから仮想ディスクの編集ウィザードを起動し、メニューにしたがって変換するファイルを指定すればよい。特に難しい点はないだろう。

仮想ディスクの種類の変換
このツールでは、容量固定と容量可変の仮想ディスクを相互に変換できる。Hyper-Vのウィザードでは、さらにサイズの拡大も可能になっている。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。