技術的雑談-VMWarePlayer ver1.0で仮想Diskのnon-persistentモード
環境
- VMWarePlayer 1.0。Linux用でもWindows用でもお好きなほうをどうぞ。
概要
VMWare5から、ヴァーチャルマシン(以下VM)上では読み書きできるが、実際の仮想ディスクファイルには変更を行わず、VMを終了させるとディスクへの変更を取り消すモード(=non-persistentモード)がある。
VMWarePlayer 1.0でもその機能が使用可能なので、それを説明する。
non-persistentモードとは?
VMWareでの仮想ディスクのマウント方法の一種で、VM実行時に行った仮想ディスクへの書き込みを別ファイル(REDOファイル)に書き出し、元の仮想ディスクには変更を加えない動作を行うモード。
用途としては、
- インストーラの繰り返し試験
- OSのバージョンアップなどの試験
- 元に戻すのが大変なデータの保全
- サービスパックを当てる前のOSをコレクションしておき、セキュリティーホールのテストに使う。
などの目的で使える。
それに対し、普通に書き込みをするとそれが永続的に残るモード(デフォルト)はpersistent(=永続的)モードという。
手順
non-persistentモードで扱いたい仮想ディスクを使っているVMの定義ファイル(.vmx)に以下の変更を加える。
- .vmxをテキストエディタで開く
- non-persistentにしたい仮想ディスクをマウントしている記述を探す。多分「ide0:0.fileName=〜」とか「scsi0.filename=〜」などで指定されているはず。
- 仮に、non-persistent化したい仮想ディスクがide0:0にアサインされていた場合、「ide0:0.mode = independent-nonpersistent」の1行を書き加える。(書き加える場所はファイルの中ならどこでもいいが、わかりやすいように元の行の1行下あたりがオススメ)
- 変更した.vmxファイルをVMWarePlayerから実行する。VMを起動しVM内のDiskに書き込みを行っても目的の.vmdkファイルのタイムスタンプが変化しなければOK。
- また、仮想ディスクにVMから変更を行った後、一旦VMを終了させ、その後もう一度VMを立ち上げ、先程行った書き込みがキャンセルされていることを確認する。
注意
- 当然ながらnon-persistentモード下で行った仮想ディスクへの変更はVM終了時に一切消去されるので注意。
- 但し、VM内のOSを再起動しただけでは仮想ディスクへの変更はキャンセルされない。
- 最高で、仮想ディスクの総容量と同じ大きさのREDOファイル(一時記憶仮想ディスク?)が作成されるのでHost PCのディスクの空き容量には注意。
- VMに対して実ディスクを割り当てている場合、そのディスクをnon-persistentにすることはできない。
- non-persistentモードにしたからといっても.vmdk/.vmxをWrite Protectしても良いわけではないようだ。実際、.vmxには変更が行われる。
- .vmx設定ファイル内で「ide0:0.redo = ""」のような設定が追記されるが、これが何を意味するのかは良くわからない。VM実行中にはここにREDOファイルのpathが入っているようだが…。
- VMWare5.5では仮想ディスクのsnapshotなどの機能があるようだが、VMWarePlayerではできるのかな?
履歴
2005/12/27 -- 初版
技術的雑談へ戻る
突っ込み
- VMwarePlayerを使っている環境には関係ないと思うけど、non-persistentモード にしておくとStoragevMotionを実行できない。これも注意のひとつかも。 - 名無し (2012年03月12日 01時40分09秒)