VMDK ファイルを開き、マウントし、データを抽出する方法
VMDKファイルには、仮想マシンのハードディスクの内容が保存されています。OSの破損、更新の失敗、マルウェア、または設定ミスなどの理由で仮想マシンの起動に失敗した場合でも、その仮想ディスク内のデータにはアクセスできる可能性があります。</p>
<p>このガイドでは、Windows および Linux 環境で、VMware Tools やその他の方法を使用して VMDK ファイルを開き、マウントし、データを抽出する方法について説明します。これらの方法を用いれば、仮想マシンの電源を入れなくてもファイルにアクセスすることができます。なお、ここで説明する方法は、暗号化されていない、または深刻な破損がない VMDK ファイルにのみ適用されることにご注意ください。
VMDKファイルとは何ですか?
VMDK(Virtual Machine Disk)は、VMwareが開発したオープンな仮想ディスクファイル形式です。この形式のファイルは、 .vmdk 拡張機能であり、以下のものによってサポートされています VMware と VirtualBox.
VMware ESXi サーバーでは、VMDK は通常、データストア上に 2 つの別々のファイルとして保存されます。1 つは小さな仮想ディスク記述子ファイル、もう 1 つは生のディスクデータを含む仮想ディスクエクステントファイルです。記述子ファイルのファイル名は通常、次のような命名規則に従います。 diskname.vmdk、一方、実際のデータを含むエクステンションファイルの名前は diskname-flat.vmdk.
VMware Workstation では、仮想ディスクは多くの場合、単一の diskname.vmdk ファイル(モノリシック・スパース形式)。この場合、記述子情報はディスクデータを格納するファイル内に埋め込まれています。仮想ディスク記述子は、ディスクの構造、ジオメトリ、仮想ハードウェアのバージョン、および一意の識別子を定義します。
仮想ディスク記述子ファイル
仮想ディスク記述子はプレーンテキストとして保存されます。以下のスクリーンショットの左側には、ESXi形式の記述子ファイルが表示されています(a .vmdk (任意のテキストエディタで開くことができるファイル)。右側には、単一の .vmdk VMware Workstation 形式で作成されたファイル。この場合、そのファイルはHEXエディタで開かれます。

図に示すように、モノリシックなワークステーション形式に埋め込まれた記述子データは .vmdk ファイルはオフセット 0x200(バイトアドレス)から始まります。0x200 を 16 進数から 10 進数に変換すると、0x200 (16 進数) = 512 (10 進数) となります。つまり、VMDK ファイルから埋め込み記述子を抽出するには、バイト 512 から始まるデータ部分をコピーする必要があります。
注: 変換に関するブログ記事をご参照ください VMware仮想マシンからHyper-V仮想マシンへ 埋め込みディスク記述子の抽出、編集、およびインポートに関する詳細な手順については、以下をご覧ください。
仮想ディスクのデータファイル
以下のスクリーンショットでは、2つの仮想ディスクファイルがHEXエディタで開かれています。両方のディスクには同じオペレーティングシステムがインストールされており、最初のパーティションはWindowsの組み込みディスクユーティリティを使用して作成・フォーマットされました。スクリーンショットの左側には、 -flat.vmdk ファイル(ESXi形式)が表示されます。このファイルでは、生のディスクデータはオフセット 0x00000000 から始まります。
右側には、VMware Workstation形式のVMDKが表示されています。この場合、実際のディスクコンテンツの前に記述子やメタデータが埋め込まれているため、同じディスクデータはファイルの先頭ではなく、オフセット0x00150000から始まります。

VMDK ファイルを開いてマウントする前に、ディスクの破損を防ぐため、データのバックアップが確実に取られていることを確認してください。
VMを起動してVMDKファイルを開く2つの方法
まずは、仮想マシンの電源を入れてVMDKファイルを開く方法から見ていきましょう。これらの方法は簡単で、幅広い場面で活用できます。ただし、ホストシステムにハイパーバイザー(VMware ESXi、VMware Workstation、VMware Player、またはOracle VirtualBox)がインストールされている必要があります。
方法 1:仮想マシンの OS が動作しなくなっても、Live DVD を使用する方法
この方法では、仮想マシンが依然として外部メディアから起動できることを前提としています。物理的なDVDの代わりに、ISOイメージを仮想マシンの仮想DVDドライブにマウントし、そこから起動することも可能です。
Live DVDからオペレーティングシステムを起動した後、VMDKファイルのパーティションをマウントし、VMに接続されたUSBドライブ、ホストマシン、あるいはネットワーク経由で別のシステムにデータをコピーすることができます。一部のLive DVDディストリビューションでは、パーティションが自動的にマウントされます。
この方法は、インストールされているオペレーティングシステムが起動しなくなった際に、物理コンピュータからファイルを復元する場合と似ています。VMware ESXi および VMware Workstation/Player 上の VMDK ファイルからデータを抽出する際に利用できます。
ライブOSが、仮想ディスク内で使用されているファイルシステムに対応していることを確認してください。たとえば、WindowsはEXT3、EXT4、ReiserFSなどのLinuxファイルシステムをネイティブではサポートしていません。一方、Linuxベースのライブディストリビューションは、通常、NTFSやFAT32などのWindowsファイルシステムに対応しているため、起動できないWindows仮想マシンからデータを復旧する際に実用的な選択肢となります。
例:ESXi上でVMDKファイルを開く
次のようなシナリオを考えてみましょう。Windows Server 2016 を実行している仮想マシンが、 ESXiホスト 起動に失敗したが、そのVMDKファイルに保存されているファイルを取り出す必要がある。この仮想ディスクには、システム(ブート)パーティションとプライマリのC:ドライブという2つのNTFSパーティションが含まれている。この例では、Ubuntu 18の公式インストール用ISOをライブDVDとして使用し、仮想ディスクにアクセスして必要なデータをコピーする。
注: このアプローチは、VMware Workstation 17、ESXi 9.0、Windows Server 2025、Ubuntu Linux 24.04 などの新しい製品バージョンにも適用されます。インターフェースの具体的な要素は若干異なる場合がありますが、基本的なワークフローは変わりません。
- VMを実行しているESXiホストからアクセス可能なデータストアに、ISOイメージをアップロードしてください。
- VMware vSphere Client を開き、”ホストとクラスタ”に移動して、対象の仮想マシンを選択し、”設定の編集”をクリックします。

- VMの設定ウィンドウで、CD/DVDドライブのオプションに移動します。データストアに必要なISOファイルがある場合は、”データストアのISOファイル”を選択します。次に、”参照”をクリックして、該当する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-disk1 mkdir /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-disk2Windows で C: ドライブとして使用されるパーティションです。ESXiホストにUSBハードディスクドライブ(HDD)を接続し、USBパススルー機能を使用して仮想マシンに接続することで、マウントされたVMDKから必要なファイルをコピーすることができます。あるいは、SMB(CIFS)共有を使用して、ネットワーク経由でファイルを転送することも可能です。
この例では、192.168.17.125 でホストされている SMB 共有にデータがコピーされます。共有パスは \192.168.17.125share であり、ユーザー user10 には書き込み権限があります。
- ライブ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共有がマウントされているディレクトリに移動し、仮想ディスクのマウントされたパーティション(ESXiデータストア上のVMDKファイル)からbootmgrファイルを現在のディレクトリ(SMB共有)にコピーしましょう。
cd /mnt/smb-share cp /mnt/win-disk-2/bootmgr
- 必要なファイルがすべてコピーされていることを確認し、SMB共有の内容を確認してください。
ls -al /mnt/smb-share
上のスクリーンショットに示されているように、bootmgr ファイルのコピーは正常に完了しました。これは、仮想マシンのオペレーティングシステムが起動できない場合に、VMDK ファイルからデータをコピーする最初の方法の例です。この方法は、VMware Player および VMware Workstation でも同様に利用できます。
方法 2:VMDK ファイルを、正常に動作している VM(ESXi/Workstation/Player)に仮想ディスクとしてマウントする
この方法は前の方法と似ていますが、外部メディアから起動する代わりに、正常に動作しているオペレーティングシステムを搭載した既存の仮想マシンにVMDKファイルを接続します。VMDKファイルは、VMware ESXi、VMware Workstation、またはVMware Player上で実行中の仮想マシンに、追加の仮想ディスクとして追加することができます。
VMware Workstation または Player で ESXi 仮想マシンから VMDK ファイルを開く必要がある場合は、記述子ファイルとエクステントファイルの両方(vmdk および -flat.vmdk) を、Workstation または Player がインストールされているホストからアクセス可能なローカルディスクに保存します。ソース VM に スナップショット、親ディスクファイルに加えて、関連するデルタ(差分)VMDKファイルも必ずコピーしてください。
このアプローチを示す例を以下に挙げます:
- 例 1:ある仮想マシンの VMDK ファイルを、同じ ESXi ホスト上の別の仮想マシンにアタッチして開きます。
- 例 2:ESXi 仮想マシンの VMDK ファイルを、VMware Workstation で実行中の仮想マシンに接続して、そこからデータを抽出する。
正常に動作しているVMのオペレーティングシステムが、接続されたVMDKファイルで使用されているファイルシステムに対応していることを確認してください。対応していない場合、パーティションにアクセスできない可能性があります。
例 1:ESXi 上で実行中の仮想マシンに仮想ディスクをマウントする
- ファイルを抽出するために仮想ディスクにアクセスしたいVMの電源を切ってください。
- ESXiのデータストア内で仮想ディスクを探してください。
- ディスクのロックに関連する問題を回避するために、仮想ディスクを同じデータストア内の別のディレクトリ、または別のデータストアにコピーしてください。この例では、
Win-test2.vmdk、これはWin-test2 Windows VMに属しています。ESXiホストは、 vCenter. vCenter を使用しないスタンドアロンの ESXi ホストを使用している場合でも、ワークフローは同じです。異なるのはユーザーインターフェースのみです。 - VMware vSphere Client を開き、”ストレージ”に移動して、必要な VMDK ファイルが保存されているデータストアを選択します。VMDK ファイルを選択し、”コピー先”をクリックします。
注: vCenter を使用せずにスタンドアロンの ESXi ホストを利用している場合は、Web ブラウザに ESXi ホストの IP アドレスを入力して VMware Host Client を開きます。その後、”ストレージ”に移動します。 > [Datastore Name] > “データストアブラウザ”でVMDKファイルを選択し、”コピー”をクリックします。保存先を選択し、操作を確認します。
また、ESXiコンソールに直接アクセスするか、SSH経由で接続して、ファイルをコピーすることもできます。

- 開いたウィンドウで、コピー先を選択します。VMDK ファイルは、同じデータストア内の場所、または別のデータストアにコピーできます。この例では、ファイルを同じデータストアのルートディレクトリにコピーします。両方の
.vmdk記述子ファイルと-flat.vmdkファイルがコピーされます。
- VMDKファイルを、正常に動作しているオペレーティングシステムを搭載したVMに接続します。この例では、同じESXiホスト上でWindows Server 2016を実行しているVM(WinServer2016)を使用します。VMが実行中の状態でも、仮想ディスクを接続することができます。
vSphere Client で、”ホストとクラスター”に移動し、正常に動作している仮想マシンを選択して右クリックし、”設定の編集”をクリックします。

- 表示されるウィンドウで、”新しいデバイスの追加”をクリックし、”既存のハードディスク”を選択します。

- 以前に作成したVMDKファイルのコピーを選択してください。この例では、
Win-test2.vmdkデータストアのルートディレクトリにあるものが選択されました。
- 仮想ディスクが接続されている正常なVMがまだ実行されていない場合は、そのVMの電源を入れます。この例では、Windows Server 2016 VMの実行中に仮想ディスクが追加されます(ホット追加)。
- ゲストの Windows OS で、”コンピュータの管理”→” > “→”ディスクの管理”に移動します(または、
diskmgmt.msc(コマンドラインで)添付された仮想ディスクを探します。デフォルトでは、新しいディスクはオフラインになっています。ディスクを右クリックし、”オンライン”を選択します。パーティションには自動的にドライブ文字が割り当てられますが、割り当てられていない場合は、パーティションを右クリックし、”ドライブ文字とパスの変更”をクリックしてください。
これで、マウントされたVMDKファイル内のファイルやディレクトリに対して、完全な読み取り・書き込みアクセス権が与えられました。Windowsエクスプローラーでマウントされたディスクを開き、必要なデータをコピーしてください。
不要なファイル(マルウェア関連のファイルなど)を削除することもできますが、その際は慎重に行ってください。VMDK ファイルに関連付けられたスナップショットがある場合、データを変更または削除すると、スナップショットの整合性に影響が出る可能性があります。

例 2:VMware Workstation または Player で実行中の仮想マシンに仮想ディスクをマウントする
この例は前の例と似ていますが、VMware Workstation で実行中の仮想マシンを使用して、ESXi 仮想マシンの VMDK ファイルを開きます。この方法は、ESXi データストアに仮想ディスクのコピーを作成するための空き容量が不足している場合に役立ちます。
この場合、前述のWin-test2仮想マシンの仮想ディスクをVMware Workstationの仮想マシンにマウントし、そのデータを抽出します。
- VMware vSphere Client で、”ストレージ”に移動します > [Datastore name] > “ファイル”からVMDKファイルを選択し、”ダウンロード”をクリックしてください。
前述の通り、ESXiの仮想ディスクはディスクリプタ(
.vmdk) ファイルとエクステント (-flat.vmdk) ファイル。VMware Workstation または VMware Player がインストールされているマシンに、両方のファイルをダウンロードする必要があります。HTML5 vSphere Client を使用して ESXi データストアから仮想ディスクをダウンロードする場合、これらのファイルは自動的に 1 つの ZIP アーカイブにまとめられます。あるいは、ESXiホストでSSHアクセスを有効にし、データストアのディレクトリに移動して、SCPクライアントなどを使用して、両方のディスクファイルをコンピュータに手動でコピーすることもできます。 WinSCP.
注: をダウンロードする際は、 シンプロビジョニング VMFSデータストア上の仮想ディスクの場合、その結果として
-flat.vmdkファイルは、シックプロビジョニングされたディスクと同様に、プロビジョニングされた最大サイズまで拡張されます。これは、シンプロビジョニングが VMFSファイルシステム レベル。
これで、ダウンロードした 2 つの ESXi 仮想ディスクファイルが ZIP アーカイブとして表示されるようになりました。VMFS データストア上のシンプロビジョニングされたディスクのサイズは約 2 GB ですが(上のスクリーンショットを参照)、ワークステーションにダウンロードされた同じディスクのサイズは約 8 GB です(下のスクリーンショットを参照)。
- アーカイブから2つのファイルを解凍してください。デフォルトでは、これらは
Win-test2.vmdk, これはファイル拡張子を除いたアーカイブ名と一致するものです。
- この手順では、VMware Workstation または VMware Player がインストールされたマシン上で、正常に動作するオペレーティングシステムを搭載したVMが必要です。前の例では Windows Server 2016 を実行しているVMを使用しましたが、この例では Windows Server 2008 を実行しているVMを使用します。Windows の新しいバージョンでも、手順は同じです。
VMware Workstation または VMware Player を起動し、正常に動作している仮想マシンを選択して、仮想マシンの設定を編集します。

- [ハードウェア] タブで、[追加] ボタンをクリックします。

- “ハードウェアの追加ウィザード”で、ハードウェアの種類として”ハードディスク”を選択します。次に、ディスクの種類を選択します(推奨値のままにしておいても構いません)。”ディスクの選択”画面で、”既存の仮想ディスクを使用する”を選択します。

- vmdk ファイルを選択してください(- ではなく
flat.vmdk) ZIPアーカイブから解凍したファイルです。ファイルを参照するか、ファイルのパスを手動で入力してください。
この例では、ESXi 6.5 および VMware Workstation 15 を使用しています。Windows Server 2008 を実行している VMware Workstation の仮想マシンはハードウェアバージョン 12(VM バージョン 12)を使用していますが、仮想ディスクが接続されている ESXi の仮想マシンは VM バージョン 7 を使用しています。このワークフローは、より新しいバージョンでも同様です。
- VMware Workstation で仮想ディスクをマウントしようとすると、次のような互換性のエラーメッセージが表示されます:
選択した仮想ディスクは、この Workstation 12.x 仮想マシンと互換性がありません。このディスクを追加すると、この仮想マシンは以前のバージョンの VMware 製品と互換性がなくなります。

このエラーは、ディスク記述子ファイル(ESXi VMの仮想ディスクの場合は軽量VMDKファイル)を編集することで修正できます。テキストエディタでVMDKファイルを開き、
Ddb.virtualHWVersion文字列。この例では、13が12に変更されます。注: VMware Workstation の仮想マシンについては、仮想ディスク記述子が VMDK ファイル内に埋め込まれていることに注意してください(ESXi の仮想ディスクは、別の記述子ファイルを使用するのとは異なります)。

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

VMの電源を入れずにVMDKファイルからデータを抽出する方法
仮想マシンの電源を入れる必要のない方法には、いくつかの実用的な利点があります。場合によっては、ハイパーバイザーがまったく不要になることもあります。その代わりに、VMDKファイルをホストOSに直接マウントして、その内容に素早くアクセスすることができます。
方法 1:VMware Workstation を使用してホスト OS に VMDK ファイルをマウントする
この方法では、以下が必要となります。 VMware Workstation Windows または Linux ホストにインストールされます。VMware Workstation には、VMDK ファイルをホスト OS に直接マウントできる機能が含まれています。ESXi 形式のディスクや、スナップショットに関連付けられたデルタディスクがサポートされています。前述の方法と同様、ホスト OS は仮想ディスクパーティションで使用されるファイルシステムに対応している必要があります。
スナップショットが作成されると、デルタ(差分)仮想ディスクが生成されます。特定のスナップショット時点でのVMの状態にアクセスするには、親ディスクと対応するデルタディスクの両方が利用可能である必要があります。この場合、適切なデルタディスクをホストOSにマウントする必要があります。親ディスクへの依存関係は自動的に解決されます。
スナップショットが存在する場合でも、親ディスクを直接マウントしたい場合は、読み取り専用モードを使用してください。親ディスクを変更すると、そのVMから作成されたスナップショットやリンククローンが破損する可能性があります。読み取り専用モードでは、ディスクのマウント後に書き込み操作が行えないようになっています。VMDKファイルは、そのファイルを使用しているVMの電源がオフになっている場合、またはそのディスクをアクティブに使用しているVMがない場合にのみマウントできます。
次の例では、スナップショットが作成されている VMware Workstation の仮想マシンから VMDK ファイルをマウントする方法を示します。このシナリオでは、Windows が単一の NTFS パーティションにインストールされています。 最初のスナップショット作成後、ドライブ C: のルートディレクトリに”Snapshot1.txt”という名前のファイルが作成されました。2 回目のスナップショット作成後には、”Snapshot2.txt”が作成されました。1 つ目の例では Linux を、2 つ目の例では Windows を使用しています。ここでは古いバージョンの Windows XP 仮想マシンの仮想ディスクファイルを使用していますが、他の Windows バージョンについても同様の原理が適用されます。
例 1:Linux ホストへの VMDK のマウント
- Linux 版 VMware Workstation を起動し、[ファイル] > [仮想ディスクのマウント] の順に選択します。

- [ディスクのマウント] をクリックします。表示されるウィンドウで、[参照] をクリックし、VMDK ファイルを選択します。

- 2番目のVMスナップショットの後に作成された2番目のデルタ(差分)ディスクのVMDKファイルを選択してください。このような場合、ファイル名は次のパターンに従います。
VM_name-000002.vmdk(例えば、WinXP-test-000002.vmdk).
- VMDK ファイルのマウントポイントとして使用するディレクトリを、Linux ファイルシステム上に作成します。それでは、
/mnt/vmdkLinuxコンソールの / ディレクトリ。mkdir /mnt/vmdk/ - ユーザーに適切な権限を設定します(この例では、ユーザー名は user1 で、group1 に所属しています):
chown -R user1:group1 /mnt/vmdk/ chmod -R 0775 /mnt/vmdk/ - 次に、作成したディレクトリをターゲットディレクトリとして選択し、”読み取り専用モードでマウントする”チェックボックスにチェックを入れ、”マウント”をクリックします。

- これで、
/mnt/vmdkLinuxのファイルエクスプローラーで / ディレクトリを開き、マウントされた VMDK ファイルに保存されているファイルを参照してください。この例では、1回目と2回目のスナップショット作成後に生成された Snapshot1.txt および Snapshot2.txt というファイルが表示されます。各ファイルは、それぞれ別のデルタ VMDK ディスク上に格納されています。
- 操作が完了したら、Linuxホスト上のディレクトリ(マウントポイント)からVMDKファイルをアンマウントすることをお忘れなく。

この例では、VMware Workstation 17.0 を使用して、Ubuntu 22.04 上で VMDK ファイルのマウントとアンマウントが正常に行われました。
注: Ubuntu 24.04 では、より新しい Linux カーネル(6.8 以降)が使用されており、これが VMware の独自カーネルモジュールとの互換性に影響を与える可能性があります。場合によっては、”VMware-fuseUI が応答していません”というエラーが発生することがあります。
これは、Linux で VMDK ファイルをマウントする際、ユーザースペースファイルシステム (FUSE) レイヤーと連携する VMware のコンポーネントに依存しているためです。必要な FUSE モジュールまたはヘルパープロセスの初期化が正常に行われない場合、マウントインターフェースが応答しなくなる可能性があります。
互換性の問題が発生した場合は、サポート対象のカーネルバージョン、または以前のバージョンの VMware Workstation の使用をご検討ください。ディスクマウントのサポートに関する最新情報については、VMware の公式ドキュメントをご確認ください。
コンソールインターフェースの使用を好む場合は、次のコマンドでVMDKファイルをマウントできます:
vmware-mount /media/user1/vms/vm_name/vm_disk_name-000002.vmdk /mnt/vmdk
場所:
vm_name は仮想マシンの名前です(VM ディレクトリ名と同じです)。この例では、VM 名は WinXP-test です。
vm_disk_name は仮想ディスクの名前です(WinXP-test.vmdk (この例では)。
vm_disk_name-000001.vmdk これは、最初のVMスナップショット作成後に作成された最初のデルタ(差分)ディスクです(WinXP-test-000001.vmdk).
vm_disk_name-000002.vmdk これは、2番目のスナップショットを取得した後に作成された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 ファイルをマウントする手順も同様です。VMware Workstation では、グラフィカルユーザーインターフェイス(GUI)の [ファイル] > [仮想ディスクのマッピング] を使用できます。あるいは、Windows エクスプローラーで VMDK ファイルを右クリックし、コンテキストメニューから [仮想ディスクのマッピング] を選択することもできます。
この例では、最初のスナップショット作成後に作成された最初のデルタ(差分)ディスクの VMDK ファイルがマウントされています。このようなファイルの命名規則は次の通りです。 VM_name-000001.vmdk ( WinXP-test-000001.vmdk (この例では)。
注: Windows 向け VMware Workstation 17.0 では、仮想ディスクをディスクドライブとしてマウントする機能が削除されました。この機能をサポートする Windows 向け VMware Workstation の最新バージョンは 16.1.2 です。この機能は、Linux 向け VMware Workstation の最新バージョン(17.5 以降)には搭載されています。
- Windows エクスプローラーで VMDK ファイルを右クリックし、”仮想ディスクのマッピング”をクリックします。

- VMDK ファイルをマウントするには、適切なパラメータを選択してください。スナップショットチェーン内の仮想ディスクが破損するのを防ぐため、ディスクを読み取り専用モードで開くことをお勧めします。
デフォルトでは、ドライブ文字は Z: に設定されており、対応するチェックボックスがオンになっている場合、マッピング後に Windows エクスプローラーでディスクを自動的に開くことができます。”OK”をクリックして続行してください。

- これで、仮想ディスクが Windows で Z: ドライブとしてマウントされ、その内容を読み取ることができます。下のスクリーンショットでは、最初のスナップショットを撮影した後に作成された Snapshot1.txt ファイルを確認できます。Snapshot2.txt ファイルは、2 回目のスナップショット後に作成されたものであり、マウントされているデルタディスクは最初のスナップショットに対応しているため、表示されていません。

- マッピングされたVMDKファイルでの作業が終了したら、ディスクの接続を解除することを忘れないでください。該当するVMDKファイルを右クリックし、”仮想ディスクの接続を解除”を選択します。仮想ディスクの接続を解除した後、そのディスクを使用しているVMの電源を入れることができます。

方法 2:7-Zip を使用して VMDK ファイルからコンテンツを抽出する
仮想マシンを起動せずにVMDKファイルを開く必要がある場合は、7-Zipを使用して仮想ディスクイメージからデータを抽出することができます。7-Zipは、さまざまなアーカイブ形式やディスクイメージを開いて内容を抽出できる無料のファイルアーカイバです。WindowsとLinuxの両方のシステムで使用できます。
7-Zipでは開くことができます .vmdk そして -flat.vmdk ファイル(スタンドアロン版を含む -flat.vmdk (記述子ファイルが見つからない場合はファイルを開こうとします)。これは通常、ESXi形式のディスクに当てはまります。ただし、7-Zipでは、VMのスナップショット後に作成されたデルタ(差分)VMDKファイルを開くことはサポートされていません。
Linuxで7-Zipを使ってVMDKファイルを開く方法
- Linuxマシンに7-Zipのフルパックをインストールしてください。この例ではUbuntuを使用しています。
apt-get install p7zip-full - 7-Zip を使って VMDK ファイルの内容を表示する
7z l vm_name.vmdk - ファイル名に”boot.”が含まれるファイルを探してください。
7z l /media/user1/vms/WinXP-test/WinXP-test.vmdk | grep boot[.]user1 はこの Linux ユーザーの名前で、l はリスト表示を意味します。

- (e) を抽出してみましょう。
boot.iniVMDKイメージからのファイル:7z e /media/user1/vms/WinXP-test/WinXP-test.vmdk boot.ini
同様の方法で、VMDKファイルから他のファイルやディレクトリを抽出することもできます。
Windowsで7-Zipを使ってVMDKファイルを開く方法
- 7-Zipの互換性のあるバージョンを以下のサイトからダウンロードしてください。 公式サイト そして、Windowsマシンにアプリケーションをインストールしてください。より手軽にインストールするには、EXEインストーラーをご利用ください。

- 以下のスクリーンショットでは、スタンドアロンの
Win-test2-flat.vmdkファイルが7-ZipのGUIに表示されます。必要なVMDKの内容を抽出することができます。
また、この動画をご覧いただければ、VMwareでVMDKファイルを開き、VMDKデータを抽出する方法をご確認いただけます:
Linux で VMDK ファイルをマウントする方法(その他の方法)
Linux には、コンソールから直接高度なディスク操作を実行できる強力なコマンドラインツールが用意されています。これらの組み込みユーティリティを使用すると、VMDK ファイルをマウントしたり、仮想ディスクに保存されたデータにアクセスしたりすることができます。以下の例では、Ubuntu Linux を使用しています。
方法 1:VMDK ファイルをマウントする方法 /dev/loop
ループデバイスは、Linuxにおける疑似デバイスであり、ファイルをブロックデバイスとしてアクセスできるようにするものです。これらは、ファイルシステムを含むディスクイメージをマウントするために一般的に使用されます。ループデバイスには、次のような名前が付けられます。 /dev/loopX、ここで X はデバイス番号を表します。この方法は、取り付けに適しています -flat.vmdk ファイル。たとえ記述子ファイルが存在しない場合でも。
以下の例では、Linux で VMDK ファイルをマウントしてその内容にアクセスする方法を示します。この例では、単一のパーティションを持つ ESXi 形式の仮想ディスクを使用しており、記述子ファイルは利用できません。このディスクには、もともと Windows XP がインストールされていました。
- Linux システム上に存在するループデバイスの数を確認するには、以下の 2 つのコマンドのいずれかを使用してください。
fdisk -l | grep /dev/loop df -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、Windows Server 2003 およびそれ以前のバージョンでフォーマットされたディスクについて、63 × 512 として計算されたオフセットです。この場合、63 はパーティションの開始セクタ、512 バイトはセクタサイズです。Windows 7、Windows Server 2008 およびそれ以降のバージョンでは、オフセットとして 105906176 を使用してください。
次のコマンドを使用すると、セクタサイズや、起動時に使用される最初のセクタに関する情報を取得できます:
fdisk -l /dev/loop30 /vms/Win-test2-flat.vmdk
あるいは、複数のパーティションを含む仮想ディスクの場合、parted を使用して各パーティションの開始位置と終了位置を特定することもできます:
parted /dev/loop30コンソールを開いたら、次のコマンドを入力してください:
unit B print
- VMDK イメージのマウントポイントとして使用するディレクトリを作成します:
mkdir /mnt/vmdk-image - VMDK イメージに関連付けられたループバックデバイスをマウントします:
mount /dev/loop31 /mnt/vmdk-image - マウントされたイメージの内容を一覧表示します:
ls -al /mnt/vmdk-image - 完了したら、VMDKイメージをアンマウントし、ループデバイスを切断します:
umount /mnt/vmdk-image losetup -d /dev/loop31
方法 2:kpartx を使用して VMDK ファイルをマウントする方法
Kpartx は、イメージファイル内のパーティションを実際の Linux ファイルシステムのディレクトリにマウントできるツールです。このツールを使用すると、ブロックデバイスのパーティションに対するデバイスマッピングを設定できます。この方法では、マウントも可能です –flat.vmdk ESXiサーバーで使用される画像。
- 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仮想ディスクイメージをアンマウントしてください。
umount /mnt/vmdk-image kpartx -d /vms/Win-test2-flat.vmdk
方法 3:QEMU ネットワークブロックデバイス (NBD) の使用
この方法では、QEMUユーティリティを使用して、VMDKを標準のブロックデバイスとして公開します /dev/nbdN、これによりLinuxカーネルがネイティブにマウントできるようになります。この方法を利用するためにVMware Workstationをインストールする必要はありません。root権限が必要です。
- 仮想ディスクの破損を防ぐため、仮想マシンをシャットダウンしてください。
- qemu-nbd を含む QEMU ユーティリティパッケージをインストールしてください。
sudo apt install qemu-utils - ネットワークブロックデバイスカーネルモジュールを読み込みます:
sudo modprobe nbd - VMDK ファイルをネットワークブロックデバイスにマッピングします。例えば、
/dev/nbd0. 読み取り専用にするには、-r フラグを使用してください。sudo qemu-nbd -r -c /dev/nbd0 /path/to/your/disk.vmdkこの例では、コマンドは次のとおりです:
sudo qemu-nbd -r -c /dev/nbd0 /media/user1/data/vms/WinXP-test/WinXP-test.vmdk - マウントされた仮想ディスク上のパーティションを特定します:
sudo fdisk -l /dev/nbd0出力には、次のようなパーティションが表示されるはずです。
/dev/nbd0p1,/dev/nbd0p2、など。 - マウントポイントを作成します:
sudo mkdir -p /mnt/vmdk必要に応じて、特定のユーザーの権限を設定してください。
- パーティションをマウントします。この例では、パーティション 1 にデータが格納されています:
sudo mount /dev/nbd0p1 /mnt/vmdk
- VMDKの内容には、以下の場所からアクセスできるようになりました。
/mnt/vmdk/. - 完了したら、ボリュームをアンマウントし、NBDデバイスを切り離します:
sudo umount /mnt/vmdk sudo qemu-nbd -d /dev/nbd0
方法 4:guestmount を使用して VMDK ファイルをマウントする
guestmount は、パーティションや論理ボリュームを含むディスク構造を適切に処理するため、Linux 上で VMDK の内容にアクセスするための信頼性の高いツールです。このツールでは、次のような古いツールで必要とされていた手動によるオフセット計算を行う必要がありません。 /dev/loop. この方法を使用するには、root権限が必要です。
- libguestfs-tools をインストールしてください。このパッケージには、guestmount ユーティリティが含まれています。
sudo apt install libguestfs-tools - マウントしたい仮想ディスクを持つVMをシャットダウンしてください。
- Linux ホスト上で、ディスクの内容にアクセスするためのディレクトリを作成します:
mkdir /mnt/vmdk注: root ユーザーではなく、一般ユーザーとして VMDK ファイルの内容にアクセスしたい場合は、追加の設定を行うことができます。
- FUSEの設定ファイルを編集します。次のファイルを開いてください。
/etc/fuse.confroot権限でテキストエディタを使用してファイルを編集します:sudo nano /etc/fuse.conf - のコメントを外してください
#user_allow_other設定ファイルでこの行を有効にするには、行の先頭にある”#”を削除してください。 - 変更を保存してファイルを閉じます(テキストエディタを終了します)。
- 必要に応じて、一般ユーザーを fuse グループに追加することもできます:
sudo usermod -aG fuse $USER
- FUSEの設定ファイルを編集します。次のファイルを開いてください。
- VMDK を確認します。マウントする前に、VMDK 内のパーティションを確認しておくと便利です。virt-filesystems ユーティリティを使用します:
virt-filesystems -a /path/to/your/disk.vmdkこの場合:
virt-filesystems -a /media/user1/data/vms/WinXP-test/WinXP-test.vmdk出力には、パーティションが表示されます(
/dev/sda1,/dev/sda2、など)およびそれらのファイルシステム。 - guestmount を使用して VMDK をマウントします。guestmount には、主に”自動検査”と”手動パーティションマウント”の 2 つの使用方法があります。ここでは、手動パーティションマウント(特定のパーティションを対象とする方法)を使用してみましょう。
パーティションが1つだけでよい場合は、直接指定することができます:
sudo guestmount -a /path/to/your/disk.vmdk -m /dev/sdaN --ro /mount_point/この例では、具体的なコマンドは次のとおりです:
sudo guestmount -a /media/user1/data/vms/WinXP-test/WinXP-test.vmdk -m /dev/sda1 --ro /mnt/vmdk/一般ユーザーとしてマウントされたVMDKファイルの内容にアクセスし、Linuxのグラフィカルユーザーインターフェースからファイルにアクセスしたい場合は、次のコマンドを使用してください:
sudo guestmount -a /media/user1/data/vms/WinXP-test/WinXP-test.vmdk -m /dev/sda1 --ro -o allow_other /mnt/vmdk/ - Linuxコンソール上で、VMDK内のファイルをあたかもローカルディレクトリであるかのように表示、移動、コピーできるようになりました:
ls -al /mnt/vmdk - 完了したら、仮想ディスクをアンマウントしてください:
sudo guestunmount /mnt/vmdk/
“別のFUSE方式を使用することもできます”
sudo fusermount -u /mnt/vmdk/
結論
仮想マシンが故障したり、アクセスできなくなったりした場合、VMDKファイルを開いてデータを抽出する方法を理解しておくことは不可欠です。VMDKの内容にアクセスする方法をいくつか知っておけば、状況に応じて最適な手法を選択できるため、柔軟性が高まります。同時に、データの可用性を確保し、復旧作業を簡素化するためには、仮想マシンの信頼性の高いバックアップを維持することも同様に重要です。