VMwareでVMDKファイルを開き、データを抽出する方法
仮想マシンで問題が発生した際、VMDKファイルを開き、その内容を抽出する方法を理解しておくと役立ちます。アプリケーションのインストール、OSのアップデート、マルウェアの攻撃、誤ってデータを削除してしまった場合など、さまざまな問題が発生すると、仮想マシンを起動できなくなることがあります。そうなると、仮想マシンの仮想ディスクにアクセスできなくなってしまいます。
幸いなことに、WinZip、Linux Reader、またはVMware Workstation Playerを使用すれば、VMDKファイルを開くことができます。 VMDK仮想ディスクファイルの内容を復元する方法については、以下をお読みください。なお、これらの方法は、仮想ディスクが暗号化されていないか、破損していない場合にのみ適用されます。
VMDKファイルとは何ですか?
VMDKは、VMwareが開発したオープンフォーマットである仮想マシンディスクファイル形式です。この仮想ディスク形式の拡張子は.vmdk ファイルの拡張子であり、以下で使用されます VMware と VirtualBox 仮想マシン。ただし、ESXiサーバー上に存在する仮想マシンは、少し異なる形式の vmdk 仮想ディスク。ESXi データストア上では、仮想ディスク記述子と、仮想ディスクの生データを含む仮想ディスクエクステントは、2つの別々のファイルとして存在します。
仮想ディスク記述子のファイル名のパターンは diskname.vmdk また、すべての生データを含む仮想ディスクエクステント名の形式は次のとおりです。 diskname-flat.vmdk. VMware Workstation形式の仮想ディスクについては、単一の diskname.vmdk ファイル(モノリシック・スパース)は、仮想ディスク記述子が埋め込まれたエクステントデータファイルです。仮想ディスク記述子は、仮想ディスクの構造、仮想ディスクのジオメトリ、仮想ハードウェアのバージョン、およびIDを定義します。
仮想ディスク記述子ファイル
仮想ディスク記述子はプレーンテキストで表されます。以下のスクリーンショットの左側には、ESXi形式の仮想ディスク記述子が表示されています(a vmdk (任意のテキストエディタで開くことができるファイル)。スクリーンショットの右側には、単一の vmdk VMware Workstation 形式のファイル。その vmdk このファイルは16進エディタで開くことができます。

ご覧の通り、埋め込まれたディスク記述子データはモノリシックに書き込まれます vmdk 0x200アドレス(最初のバイトのアドレス)から、ワークステーション形式のファイルを読み込みます。200という16進数を2進数および10進数に変換すると、次のようになります。
200 16進数 = 1000000000 2進数 = 512 10進数
つまり、埋め込まれた記述子を vmdk ファイルの場合、512バイト目から始まるデータの一部を抽出する必要があります。VMware仮想ディスク記述子ファイルに関する詳細情報や、埋め込まれた仮想ディスク記述子の抽出、編集、インポートの方法については、変換に関するブログ記事をご覧ください。 VMware仮想マシンからHyper-V仮想マシンへ.
仮想ディスクデータファイル
以下のスクリーンショットでは、2つの仮想ディスクファイルがHEXエディタで開かれています。両方の仮想ディスクには同じオペレーティングシステムがインストールされています(OSのインストールに使用された最初のパーティションは、Windowsに組み込まれているディスクユーティリティを使用して作成およびフォーマットされました)。スクリーンショットの左側には、-フラット。vmdk ファイルが表示されます(ESXi形式)。この仮想ディスクには、0x00000000から生データが書き込まれています –フラット。vmdk ファイル。スクリーンショットの右側には、Workstation形式の仮想ディスクが表示されており、データの先頭ではない0x00150000(バイト番号5376)の位置から同じデータが書き込まれています。 vmdk ファイル。

理論について理解したところで、次は実践編です。作業を進める前に、仮想ディスクが破損する可能性に備えて、データのバックアップを取ることをお勧めします。ディスクに対する操作は、すべてご自身の責任とリスクにおいて行ってください。
仮想マシンを起動してVMDKファイルを開く2つの方法
既存の仮想マシンを起動してVMDKファイルを開くには、VMware ESXi、VMware Workstation、VMware Playerなどのハイパーバイザーが必要です。 Oracle VirtualBox 物理コンピュータにインストールする必要があります。ライブDVDを使用するか、VMDKファイルを仮想ディスクとしてマウントするといった従来の方法を選択することも可能です。
方法 1:仮想マシンの OS が動作しなくなっている場合でも、ライブ DVD を使用する
この方法の考え方は、仮想マシン(VM)を用意し、DVDディスクから起動できるというものです。ISOディスクイメージは、VMの仮想DVDドライブに挿入されたDVDディスクとして使用できます。DVDメディアからオペレーティングシステムを起動した後、仮想ディスクのパーティションをマウントし、VMに接続されたUSBハードディスクやホストマシン、あるいはネットワーク経由で他のマシンに、仮想ディスクからファイルをコピーすることができます。 一部のライブDVDディストリビューションでは、ディスク(パーティション)が自動的にマウントされます。
この方法は、インストールされたオペレーティングシステムが起動できない場合に、物理コンピュータの物理ディスクからファイルをコピーする原理と類似しているため、従来の手法と言えます。この方法は、VMware ESXiおよびVMware Player/Workstation上で動作するVMのVMDKディスクからデータを抽出するために使用できます。
ライブDVDから起動したオペレーティングシステムが、アクセスしたいファイルが含まれる仮想ディスクのパーティションのファイルシステムを認識できる必要がある点に注意してください。 たとえば、Windowsはデフォルトでは、EXT3、EXT4、ReiserFSなどのLinuxファイルシステムを扱うことができません。Windows上で追加のツールを使用することで、この問題を解決できる場合があります。一方、最新のLinuxはNTFSやFAT32などのWindowsファイルシステムを認識するため、起動できないWindows VMで使用されている仮想ディスクに保存されたファイルをコピーするために、LinuxベースのLive DVDディスクを使用することができます。
例:ESXi上でVMDKファイルを開く
この手法の適用例を考えてみましょう。Windows Server 2016 がインストールされた仮想マシン(VM)があり、 ESXiホスト、VM上のOSが起動できないものの、VMDK仮想ディスクに保存されているファイルを取り出す必要がある場合です。この仮想ディスクには、ブートシステムパーティションとCドライブの2つのNTFSパーティションがあります。この例では、Ubuntu 18の公式インストールISOイメージを使用します。Ubuntuのインストールメディアは、Live DVDとして使用できます。
注: 本ブログ記事で取り上げた製品の新しいバージョンにおいても、ワークフローは同様です。VMware Workstation 17、ESXi 8.0、Windows Server 2019、Ubuntu Linux 22.04などを使用する場合でも、この記事で説明した動作原理を適用することができます。
- VMが配置されているESXiホストからアクセス可能なデータストアに、ISOイメージをアップロードしてください。
- VMware vSphere Client を開き、[
Hosts and Clusters、VMを選択し、[クリック]Edit Settings.
- VMの設定ウィンドウで、[
CD/DVD driveオプション。選択してくださいDatastore ISO FileESXiホストからアクセス可能なデータストアに必要なISOファイルがある場合は、このオプションを選択してください。次に、"CD/DVDメディア"オプションで、[クリック] をクリックします。Browseそして、データストアから適切なISOファイルを選択してください。ファイル名は ubuntu-18.04.1-desktop-amd64.iso この場合。
- VMを起動し、ISOイメージから起動して、"インストールせずにUbuntuを試す"を選択します。Live DVDメディアからUbuntuが起動したら、コンソール(ターミナル)を開きます。
- root権限を取得する:
sudo -i - 利用可能なハードディスクデバイスの一覧を表示する:
ls -al /dev/sd*パーティションは2つあります―― /dev/sda1 そして /dev/sda2
- 各パーティションのマウントポイントとして使用するディレクトリを作成します:
mkdir /mnt/win-disk1mkdir /mnt/win-disk2 - 仮想ディスクのパーティションを適切なディレクトリにマウントします:
mount /dev/sda1 /mnt/win-disk1/mount /dev/sda2 /mnt/win-disk2/ - 次に、マウントされたパーティションのファイルとディレクトリを一覧表示します:
ls -al /mnt/win-disk2/ls -al /mnt/win-disk1/
上のスクリーンショットでご覧いただけるように、 /mnt/win-disk2 WindowsでC:ドライブとして使用されるパーティションです。
- これで、ESXiホストのUSBポートにUSBハードディスクドライブ(HDD)を接続し、USBパススルー機能を使用してこのHDDを仮想マシンに接続できるようになりました。これにより、仮想マシンが仮想ディスクとして使用しているVMDKファイルに保存されている必要なファイルをコピーすることができます。 もう1つの方法は、SMB(CIFS)共有を使用し、仮想ディスク(つまりVMDKファイル)の内容をネットワーク経由で別の場所にコピーすることです。
この例では、SMB共有へのデータのコピー方法について説明します。SMB共有は、IPアドレスが 192.168.17.125、銘柄名は 192.168.17.125 共有、および ユーザー10 この共有フォルダへの書き込み権限を持っています。LinuxはWindowsとは異なり、共有フォルダに接続する際は右スラッシュ(/)を使用することを忘れないでください。
ライブDVDから起動したLinuxで、SMB(CIFS)共有をマウントしてみましょう。まず、マウント先として使用するディレクトリを作成します。
mkdir /mnt/smb-share - 次に、SMB(CIFS)共有をこのディレクトリにマウントします:
mount -t cifs -o user=user10 //192.168.17.125/share /mnt/smb-share - ユーザーのパスワードを入力してください。
- これで、LinuxシステムがSMB共有に接続されました。ネットワーク経由で、VMDKファイル内に保存されている内容をSMB共有にコピーすることができます。
SMB共有がマウントされているディレクトリに移動して、 bootmgr 仮想ディスクのマウント済みパーティション(ESXiデータストア上のVMDKファイル)から、現在のディレクトリ(SMB共有)へファイルをコピーします。
cd /mnt/smb-sharecp /mnt/win-disk-2/bootmgr .
- 次に、必要なファイルがコピーされていることを確認し、SMB共有の内容を確認してください。
ls -al /mnt/smb-share上のスクリーンショットをご覧いただければわかるように、 bootmgr この例で使用したファイルは正常にコピーされました。これで、仮想マシンにインストールされたオペレーティングシステムが起動しない場合に、VMDKファイルの内容を別の場所にコピーする最初の方法をご理解いただけたと思います。この方法をVMware PlayerやVMware Workstationで適用する場合の仕組みは同じです。
方法 2: VMDK ファイルを正常な VM(ESXi/Workstation/Player)に仮想ディスクとしてマウントする
この方法は前の方法と似ていますが、この場合は、VMDK仮想ディスクを、正常に動作しているオペレーティングシステムを搭載した既存の仮想マシンに接続する必要があります。 ESXiホスト、VMware Workstation、およびVMware Player上で実行中の既存の仮想マシンに、VMDKファイルを追加の仮想ディスクとして接続できます。
VMware WorkstationまたはPlayerでESXi仮想マシンのVMDKファイルを開く場合は、仮想ディスクとその記述子(vmdk そして –flat.vmdk ファイル)を、VMware Workstation または Player がインストールされているコンピュータからアクセス可能な物理ディスクに保存します。もし スナップショット VMのスナップショットが取得され、その後VMディスクに変更が加えられた場合は、親VMDKファイルに加えて、差分(デルタ)仮想ディスクのVMDKファイルも忘れずにコピーしてください。
2つの例を考えてみましょう:
Example 1: ESXiホスト上で、あるVMのVMDK仮想ディスクを別のVMを使用して開く方法(両VMともそのESXiホストに登録されている場合)
Example 2: ESXi VMのVMDK仮想ディスクからコンテンツを抽出する方法(仮想ディスクをVMware Workstation形式のVMに接続して行う)
注意:最初の(正常に動作している)VM上のOSは、起動不能なOSを搭載した2番目のVM(ファイルを抽出するために追加の仮想ディスクとして接続したいVMDKファイルを持つVM)の仮想ディスクで使用されているファイルシステムと互換性がある必要があります。
例 1:ESXi 上で実行中の仮想マシンに仮想ディスクをマウントする
- 抽出したいファイルが含まれる仮想ディスクを使用しているVMの電源を切ってください。
- ESXiのデータストアでこの仮想ディスクを探してください。
- 仮想ディスクのロックによるエラーを防ぐため、仮想ディスクを同じデータストア内の別のディレクトリ、または別のデータストアにコピーしてください。この例では、名前が Win-test2.vmdk (これは~の仮想ディスクです) Win-test2 (今回のケースではWindows仮想マシン)。ESXiホストはvCenterによって管理されています。vCenterを使用しないスタンドアロンのESXiホストを使用する場合でも、この例で説明した手順はそのまま適用できます。違いはユーザーインターフェースのみです。
- VMware vSphere Client を開き、[
Storage,必要なVMDKファイルが保存されているデータストアを選択します。VMDKファイルを選択し、[クリック] をクリックしますCopy to.注: スタンドアロンのESXiホストがあり、vCenterがない場合は、WebブラウザにESXiホストのIPアドレスを入力してVMware Host Clientを開き、次に
Storage > [Your datastore name] > Datastore Browser、VMDKファイルを選択して、Copy. 保存先を選択し、Copyボタンをクリックして確定します。仮想ディスクは、VMware vSphere Client および VMware Host Client の Web インターフェースでは VMDK ファイルとして表示されますが、仮想ディスクは以下の構成から成っていることに注意してください。flat.vmdk そして vmdk ファイル(仮想ディスクとその記述子)。また、サーバー上で直接ESXiコンソールを開くか、SSH経由で接続してファイルをコピーすることもできます。
- 開いたウィンドウで、コピー先の場所を選択します。VMDKファイルは、同じデータストア内の任意の場所、または別のデータストアにコピーできます。このデモでは、VMDKファイルを同じデータストアのルートディレクトリにコピーしてみましょう。両方とも vmdk そして –flat.vmdk この場合、ファイルがコピーされます。

- 次に、このVMDK仮想ディスクを、OSが正常に動作している別の正常なVMに接続する必要があります。この例では、同じESXiホスト上でWindows Server 2016を実行しているVMを使用します(VM名は Windows Server 2016). この正常なVMは、実行中の状態でも仮想ディスクを接続できます。vSphere Clientで、[
Hosts and Clusters、正常なVMを選択し、そのVMを右クリックして、[Edit Settings.
- 表示されるウィンドウで、[] をクリックします
Add New Deviceそして選択してくださいExisting Hard Disk.
- あらかじめ作成しておいたVMDKファイルのコピーを選択してください。この例では、 Win-test2.vmdk データストアのルートディレクトリにあるファイルが選択されました。

- 対象の仮想ディスクを接続した正常なVMがまだ起動していない場合は、そのVMを起動してください。実行中のWindows Server 2016 VMには、仮想ディスクが動的に追加されます。
- ゲストのWindows OSで、次の場所に移動します
Computer Management > Disk Management(または実行diskmgmt.msc(コマンドラインで)と入力し、接続された仮想ディスクを探します。デフォルトでは、新しく接続されたディスクはオフラインの状態になっています。ディスクを右クリックして、Online. 追加されたディスク上のパーティションには、自動的にドライブ文字が割り当てられます。パーティションにドライブ文字が割り当てられていない場合は、そのパーティションを右クリックし、[Change Drive Letter and Paths.
- これで、VMDK仮想ディスク内のファイルやディレクトリに対して完全な(読み書き)アクセス権が得られました。マウントされたディスクをWindowsエクスプローラーで開き、正常なVMにマウントされたVMDKファイルから必要なコンテンツをコピーしてください。 また、接続されたVMDK仮想ディスクから不要なデータ(例えば、ウイルスによって作成されたファイルなど)を削除することもできますが、マウントされたVMDKディスクに関連するスナップショットが存在する場合は、仮想ディスクを破損させないよう十分注意してください。

例 2: VMware Player または Workstation 上で実行中の仮想マシンに仮想ディスクをマウントする
この例は前の例と似ていますが、VMware Workstation上で動作する仮想マシンを使用して、ESXi仮想マシンのVMDKファイルを開きます。この方法は、たとえばESXiのデータストアに仮想ディスクをコピーするための空きディスク容量がない場合などに利用できます。の仮想ディスクを Win-test2 前の例で言及したVMを、VMware WorkstationのVMにマウントして、その内容を抽出します。
- VMware vSphere Client で、[
Storage>[Your datastore name]>Files、VMDKファイルを選択して、Download.ご存じのとおり、ESXi形式の仮想ディスクは、以下の要素で構成されています vmdk そして –flat.vmdk ファイル。VMware Workstation または VMware Player がインストールされているマシンに、両方のファイルをダウンロードする必要があります。VMware HTML5 vSphere Client を使用して ESXi データストアから仮想ディスクをダウンロードすると、これら 2 つのファイルは 1 つの ZIP アーカイブにまとめられます。
別の方法として、ESXiホストへのSSHアクセスを有効にし、データストアのディレクトリに移動して、SCPクライアントなどを使用して、両方の仮想ディスクファイルをコンピュータに手動でコピーすることもできます。 WinSCP.
注: をダウンロードすると シンプロビジョニング VMFSファイルシステムを採用したESXiデータストア上の仮想ディスクを自分のコンピュータにコピーすると、軽量な vmdk ファイルと –flat.vmdk 仮想ディスクの最大プロビジョニングサイズと同等のサイズを持つファイル(シックプロビジョニングされた仮想ディスクをダウンロードする場合と同様です)。これは、シンプロビジョニングが VMFSファイルシステム 機能。

これで、ZIPアーカイブとしてダウンロードされたESXi形式の仮想ディスクファイルが2つ表示されるはずです。VMFSデータストア上のシンプロビジョニングされた仮想ディスクのサイズが現在約2GBであるのに対し(上のスクリーンショット参照)、ワークステーションマシンにダウンロードされた同じディスクのサイズは約8GBとなっています(下のスクリーンショット参照)。
- アーカイブ内の2つのファイルを解凍してください。デフォルトでは、ファイルは Win-test2.vmdk アーカイブ名と同じ名前で、ファイル拡張子を除いたディレクトリ。

- この手順を実行するには、VMware Workstation または Player がインストールされたマシン上に、正常に動作するオペレーティングシステムを搭載したVMが用意されている必要があります。前回の例では Windows Server 2016 を実行するVMを使用しましたが、この例では Windows Server 2008 を実行する正常なVMを使用します。
VMware Workstation または VMware Player を起動し、正常に動作している仮想マシンを選択して、
edit virtual machine settings.
- その ハードウェア タブで、[
Addボタン。
- その ハードウェアの追加ウィザード 開いたら、[選択] をクリックします
Hard diskハードウェアの種類として選択します。次に、ディスクの種類を選択します(推奨値のままでも構いません)。 ディスクを選択してください 画面で、[Use an existing virtual diskオプション。
- [選択] vmdk ファイル(- ではない)flat.vmdk) ZIPアーカイブから抽出したファイルです。ファイルを参照するか、ファイルへのフルパスを手動で入力してください。

この例では、ESXi 6.5 および VMware Workstation 15 を使用しています。この例で Windows Server 2008 を実行している VMware Workstation の仮想マシンは、ハードウェアバージョン 12(VM バージョン 12)です。仮想ディスクを接続する ESXi 仮想マシンの VM バージョンは 7 です。
- VMware Workstation で、ESXi ホストからコピーした仮想ディスクがこの仮想マシンと互換性がないというエラーメッセージが表示されます:

このエラーは、ディスク記述子ファイル(軽量な vmdk (ESXi VMの仮想ディスクの場合はファイル)。テキストエディタでVMDKファイルを開き、
Ddb.virtualHWVersion文字列。この場合、13が12に変更されます。注: VMware Workstationの仮想マシンの仮想ディスクについては、仮想ディスクのVMDKファイル内に仮想ディスク記述子が組み込まれている点に注意してください(ESXi仮想マシンの仮想ディスクのように、個別の記述子ファイルは存在しません)。

ファイルの編集が完了すると、仮想ディスクが既存のVMに正常に追加されます。
- まだ電源が入っていない場合は、VMの電源を入れてください。
- 開く ディスクの管理 Windows で、仮想ディスクの状態を"オンライン"に変更し、パーティションにドライブ文字を割り当てて、ファイルを参照します。

VMを起動せずにVMDKファイルからデータを抽出する方法
仮想マシンの設定や起動を必要としない方法には、独自の利点があります。これらの方法の中には、ハイパーバイザーのインストールが不要なものもあります。VMDKファイルをホストOSに直接マウントすることができ、短時間で作業を完了できます。
Method 1: Mounting VMDK files in a host OS with VMware Workstation
この方法には VMware Workstation 物理コンピュータ上で動作するWindowsまたはLinuxオペレーティングシステムへのインストール。VMware Workstationには、VMDKファイルをホストオペレーティングシステムにマウントできる便利な機能があります。ESXi形式の仮想ディスクおよびVMのスナップショットに関連するデルタディスクがサポートされています。このブログ記事でこれまで検討してきたすべての方法と同様に、お使いのオペレーティングシステムが仮想ディスクパーティションのファイルシステムに対応している必要があります。
仮想マシンのスナップショットがある場合、各スナップショットの作成後にデルタ仮想ディスクが生成されます。 あるスナップショットを撮影した直後の仮想ディスクの状態を開きたい場合は、親仮想ディスクとデルタディスクが利用可能である必要があります。この場合、適切なデルタ仮想ディスクをホストオペレーティングシステムにマウントする必要があります。親仮想ディスクに関連する依存関係は自動的に解決されます。
スナップショットがあるものの、親仮想ディスクを開きたい場合は、親仮想ディスクを読み取り専用モードで開いてください。これは、親仮想ディスクに変更を加えると、その親仮想ディスクを使用して作成されたスナップショットやリンクされたクローンが破損する可能性があるためです。読み取り専用モードでは、ディスクをホスト OS にマウントした後、仮想ディスクへのデータの書き込みが防止されます。 この仮想ディスクを使用するVMの電源がオフになっている場合、または特定のVMがこの仮想ディスクを使用していない場合は、VMDK仮想ディスクファイルをマウントできます。
スナップショットが作成されているVMware Workstation VMのVMDK仮想ディスクをマウントする方法を見てみましょう。このVMの仮想ディスク上の1つのNTFSパーティションにWindowsがインストールされています。最初のスナップショットを作成した後、 Snapshot1.txt ファイルがC:ドライブのルートディレクトリに作成され、同様に、2回目のスナップショットを取得した後は、 Snapshot2.txt そこにファイルが作成されます。最初の例はLinux用、2番目の例はWindows用です。この例では、古いWindows XP仮想マシンの仮想ディスクファイルを使用しています。
例 1: Linux ホストへの VMDK のマウント
- Linux版 VMware Workstation を起動し、次の場所へ移動します
File>Mount Virtual Disks.
- クリック
Mount Diskすると、ポップアップウィンドウが開きます。クリックしてくださいBrowseそして、仮想ディスクのVMDKファイルを選択します。
- 2番目のVMスナップショットを作成した後に作成された、2番目の差分仮想ディスクのVMDKファイルを選択しましょう。このファイルの名前は VM_name-000002.vmdk そのような場合(WinXP-test-000002.vmdk (この例ではこれを使用しています)。

- VMDK形式の仮想ディスクをマウントするために、Linuxファイルシステム上にディレクトリを作成します。それでは、 /mnt/vmdk/ Linuxコンソール内のディレクトリ。
mkdir /mnt/vmdk/ - ユーザーの権限を設定してください(ユーザー名は ユーザー1 また、~の会員であり グループ1 (この例では):
chown -R user1:group1 /mnt/vmdk/chmod -R 0775 /mnt/vmdk/ - 次に、作成したディレクトリを保存先として選択し、"読み取り専用モードでマウントする""チェックボックスを選択し、クリックします
Mount.
- これで、 /mnt/vmdk/ Linuxのファイルエクスプローラーでディレクトリを開き、VMDK仮想ディスク上のファイルやディレクトリを閲覧できます。表示されるのは Snapshot1.txt そして Snapshot2.txt この例では、1番目と2番目のスナップショットを作成した後に生成されたファイルです。これら2つのファイルは、それぞれ別のデルタVMDK仮想ディスク上に配置されています。

- 仮想ディスクの内容に対する操作が完了したら、ホストLinuxシステムのディレクトリ(マウントポイント)からVMDK仮想ディスクをアンマウントすることを忘れないでください。

コンソールインターフェースの使用を好む場合は、次のコマンドを使用して、Linux ホスト上で VMDK ディスクイメージをマウントできます:
vmware-mount /media/user1/vms/vm_name/vm_disk_name-000002.vmdk /mnt/vmdk
場所:
vm_name これは仮想マシンの名前であり、この場合はVMディレクトリ名と同じです。 WinXPテスト これは、この例におけるVMの名前です。
vm_disk_name は仮想ディスクの名前です(WinXP-test.vmdk (この例ではこれを使用しています)。
vm_disk_name-000001.vmdk は、最初のVMスナップショットを取得した後に作成された最初のデルタ(差分)ディスクの名前です(WinXP-test-000001.vmdk (この場合)。
vm_disk_name-000002.vmdk これは、それに応じて2番目のVMスナップショットを取得した後に作成される2番目のデルタディスクの名前です(WinXP-test-000002.vmdk (この場合)。
- 仮想ディスクをマウントします。デフォルトでは、仮想ディスクは読み書きモードでマウントされます。
-rコマンドラインでこのキーを入力すると、ディスクを読み取り専用モードでマウントできます。vmware-mount /media/user1/vms/vm_name/vm_disk_name-000002.vmdk /mnt/vmdk - マウントされているすべてのVMDK仮想ディスクを表示する:
vmware-mount -L - マウントされたVMDK仮想ディスクの操作を終了する前に、すべての仮想ディスクをアンマウントしてください:
vmware-mount -x
例 2: Windows ホストで VMDK をマウントする方法
WindowsでVMDKファイルをマウントする方法も同様です。これに加えて、 File > Map Virtual Disks VMware Workstation のグラフィカルユーザーインターフェイス(GUI)でこのオプションを使用するには、以下の手順に従ってください。最初の仮想マシンのスナップショットを作成した後に作成された、最初の差分仮想ディスクの VMDK ファイルをマウントしてみましょう。この VMDK ファイルの名前は、以下の形式になっています: VM_name-000001.vmdk (WinXP-test-000001.vmdk (このチュートリアルで開かれます)。
- Windows エクスプローラーで VMDK ファイルを右クリックし、[
Map Virtual Disk.
- VMDKファイルをマウントするためのパラメータを選択してください。データ書き込み後にスナップショットチェーンに属する仮想ディスクが破損するのを防ぐため、VMDKファイルは読み取り専用モードで開くことをお勧めします。この場合のデフォルトのドライブ文字はZ:です。また、該当するチェックボックスが選択されている場合、マッピング後にWindowsエクスプローラーで自動的にドライブが開きます。[クリック]
OK続行するには。
- これで、仮想ディスクがWindows上でZ:ドライブとしてマウントされ、vmdkファイルの内容を読み取ることができます。下のスクリーンショットでは、 Snapshot1.txt 最初のスナップショットを取得した後に作成されたファイル。その Snapshot2.txt このファイルは、2番目のVMスナップショットを取得した後に作成されたため存在せず、1番目のVMスナップショットに関連するデルタ仮想ディスクを開いています。

- マッピングされたVMDK仮想ディスクでの作業が終了したら、ディスクの接続を解除することを忘れないでください。該当するVMDKファイルを右クリックし、次に
Disconnect Virtual Disk仮想ディスクを切断した後、その仮想ディスクを使用しているVMの電源を入れることができます。
方法 2:7-Zip を使用して VMDK ファイルからコンテンツを抽出する
仮想マシンを起動せずにVMDKファイルを開く方法をお探しなら、7-Zipをインストールして、仮想ディスクイメージから内容を抽出することができます。7-Zipは、ファイルのアーカイブ化や、アーカイブやその他のイメージからのファイルの解凍を目的とした無料ツールです。7-ZipをVMDK抽出ツールとして使用できます。このツールは、LinuxおよびWindowsマシンで利用可能です。
7-Zipは開くことができます vmdk そして –flat.vmdk ファイル(このユーティリティは1つのファイルを—flat.vmdk 記述子がファイルの場合 vmdk (ファイルが見つかりません) – 7-Zipは実際にはESXi形式の仮想ディスク用です。7-Zipでは、VMのスナップショット作成後に生成されるデルタVMDKファイルを開くことはできません。
How to open VMDK files with 7-zip on Linux
- Linuxマシンに7-Zipのフルパッケージをインストールしてください。この例ではUbuntuを使用しています。
apt-get install p7zip-full - のリストの内容 vmdk 7-Zipで圧縮したファイル:
7z l vm_name.vmdk - ""を含むファイルを探してみましょう起動名前に"。"が含まれているもの、例えば:
7z l /media/user1/vms/WinXP-test/WinXP-test.vmdk | grep boot[.]どこ ユーザー1 は、私たちのLinuxユーザーの名前です。 l – リスト。

- (を)抽出してみましょう
e) その boot.ini VMDKイメージからのファイル:7z e /media/user1/vms/WinXP-test/WinXP-test.vmdk boot.iniVMDKファイルから他のファイルやディレクトリも、同じ方法で抽出できます。
How to open VMDK files with 7-zip on Windows
- 対応するバージョンの7-Zipを 公式サイト そして、Windowsマシンにアプリケーションをインストールしてください。より手軽にインストールするには、EXEインストーラーをご利用ください。
- Windowsに7-Zipをインストールすると、Windowsエクスプローラーでファイルやフォルダーを右クリックした際に、コンテキストメニューに7-Zipの新しいオプションが追加されます(下のスクリーンショットを参照)。これらのオプションを使用して、VMDKファイルをアーカイブとして開いたり、ファイルをすぐに抽出したりできます。

- 以下のスクリーンショットでは、スタンドアロンの Win-test2-flat.vmdk ファイルは、Windowsで使用される7-ZipのGUIに表示されます。必要なVMDKの内容を抽出することができます。

LinuxでVMDKファイルをマウントする方法(その他の方法)
Linuxの最大の強みのひとつは、組み込みツールだけでもコンソール上で非常に多くの操作を実行できる点です。これらのツールを使えば、VMDKファイルをマウントし、仮想ディスクに保存されたデータにアクセスすることができます。以下の例ではUbuntu Linuxを使用しています。
Method 1: How to mount VMDK files by using /dev/loop
ループデバイスは、Linuxにおける疑似デバイスであり、ファイルをブロックデバイスとしてアクセス可能にし、ファイルシステムを含むディスクイメージをマウントするために使用できます。ループデバイスの名前は /dev/loopX ここで、X はループデバイスの番号です。この方法は、マウントに最適です –flat.vmdk ファイルは、仮想ディスク記述子がない場合でもアクセス可能です。
例として、LinuxでVMDKファイルをマウントし、仮想ディスク内のファイルにアクセスする方法を見てみましょう。ここに、1つのパーティションを含むESXi形式の仮想ディスクがあります。ただし、記述子ファイルは欠落しています。かなり昔、この仮想ディスクにはWindows XPがインストールされていました。
- Linux システム上に存在するループデバイスの数を確認するには、次の 2 つのコマンドのいずれかを使用してください。
fdisk -l | grep /dev/loopdf -h | grep /dev/loop - 今回のケースでは、1から21までの番号が付いたデバイスがすでに存在しています(/dev/loop1 – /dev/loop21). そこで、ループデバイス番号30を作成しましょう。この番号は空きです。このデバイスを-flat.vmdk ファイル。
losetup /dev/loop30 /vms/Win-test2-flat.vmdk - オフセットを設定します:
losetup -o 32256 /dev/loop31 /dev/loop30ここで、32256 は、Windows XP/Server 2003 およびそれ以前の Windows バージョンでフォーマットされたディスクの場合のオフセット(63 × 512)です(63 はパーティションの最初のセクタ番号、512 バイトはセクタサイズです)。Windows 7/Server 2008 およびそれ以降の Windows バージョンでは、オフセット 105906176 を試してみてください。
次のコマンドを使用すると、セクタサイズや、ブート開始に使用される最初のセクタに関する情報を取得できます:
fdisk -l /dev/loop30 /vms/Win-test2-flat.vmdk
あるいは、複数のパーティションを含む仮想ディスクの場合、parted を使用して各パーティションの開始位置と終了位置を確認することもできます:
parted /dev/loop30その 別れた コンソールで、次のコマンドを入力してください:
unitBprint
- VMDKイメージのマウントポイントとして使用するディレクトリを作成します:
mkdir /mnt/vmdk-image - VMDKイメージに関連付けられたループバックデバイスを、作成したディレクトリにマウントします:
mount /dev/loop31 /mnt/vmdk-image - マウントされたイメージの内容を表示します:
ls -al /mnt/vmdk-image - 仮想ディスクの内容への操作が完了したら、vmdkイメージをアンマウントし、ループデバイスを切断してください:
umount /mnt/vmdk-imagelosetup -d /dev/loop31
方法 2: kpartx を使用して VMDK ファイルをマウントする方法
Kpartx これは、イメージファイル内のパーティションを実際のLinuxファイルシステムのディレクトリにマウントできるツールです。このツールを使用すると、ブロックデバイスのパーティションに対するデバイスマッピングを設定できます。この方法は、マウント時にも有効です。flat.vmdk ESXiサーバーで使用されるイメージ。では、そのマウント方法を見てみましょう。flat.vmdk 前の例で使用したファイル。
- kpartx をインストールします:
apt-get install kpartx - 詳細モードでVMDKイメージのパーティションマッピングを追加します:
kpartx -av /vms/Win-test2-flat.vmdk - パーティションを /mnt/vmdk-image 事前に作成されたディレクトリ:
mount /dev/mapper/loop30p1 /mnt/vmdk-image/どこ loop30 はループデバイスの番号であり、 p1 は、イメージ内のパーティション番号です(ディスクイメージ上の最初のパーティション)。
- マウントした仮想ディスクパーティションの内容を表示してください:
ls -al /mnt/vmdk-image/
- VMDKイメージのファイルに対する操作が完了したら、VMDK仮想ディスクイメージをアンマウントしてください:
umount /mnt/vmdk-imagekpartx -d /vms/Win-test2-flat.vmdk
結論
VMDKの内容を抽出する複数の方法を把握しておけば、状況に応じて最適な方法を選択できるため、柔軟性と信頼性が向上します。さらに、その知識に加えて、仮想マシンのバックアップも用意しておくと、より万全です。
NAKIVO Backup & Replication VMware vSphere上で稼働している仮想マシンを最適な方法でバックアップおよび復元できます。バックアップから仮想マシン全体、特定の仮想ディスク、または個別のファイルを復元し、任意の場所に保存することができます。