VMware 虚拟机无法正常启动后取出 vmdk 虚拟磁盘内的数据
前段时间用 Ubuntu 虚拟机写程序,调试的时候不知道怎么把虚拟机给搞坏了,虚拟机关机后就无法正常启动。但一些重要的数据还在虚拟机里面,得想办法把数据取出来。
VMware 虚拟机内的文件都存储在 vmdk 格式的虚拟磁盘文件中,打开虚拟机所在的目录,可以找到这些虚拟磁盘文件。虚拟磁盘文件的名称一般以虚拟机的名称开头,比如我的虚拟机名称为 Ubuntu01
,对应的虚拟磁盘文件就是下图中的这些。
Ubuntu01.vmdk
这个不带后缀的文件实际上是一个纯文本文件,里面存储了虚拟磁盘的各种描述信息,有了这些信息软件才可以正常读取虚拟磁盘。文件名中带有 s00x
后缀的是真正存储数据的文件。要取出虚拟机里的数据实际上就是要打开 vmdk 文件。经过我测试可行的打开 vmdk 文件的方法有两种:1. 使用 DiskGenius 软件 2. 使用正常运行的虚拟机挂载虚拟磁盘。
注意:为保障数据安全,在进行下面的操作前请对虚拟磁盘文件进行备份。
1. 使用 DiskGenius 软件(适用于 Windows 虚拟机)
可能是文件系统不同的原因,DiskGenius 只能读取 Ubuntu 虚拟机虚拟磁盘的目录结构,不能复制里面的数据。但可以正常读取和复制 Windows 虚拟机虚拟磁盘内的文件。
首先,打开 DiskGenius 软件,点击工具栏的磁盘,选择打开虚拟磁盘文件,找到 vmdk 文件打开。
打开后,在主界面左边可以看到虚拟磁盘的目录结构,右边可以对文件进行各种操作。
要取出数据,右键点击文件,复制到指定文件夹即可。
2. 使用正常运行的虚拟机挂载虚拟磁盘(适用于 Linux 虚拟机)
首先需要一台可以正常运行的 Linux 虚拟机。在 VMware 中,选择编辑虚拟机设置,添加一个硬盘。
磁盘类型选要打开的 vmdk 的类型,一般都是默认的 SCSI。
选择 “使用现有虚拟磁盘”。
选择原来的虚拟磁盘文件,注意这里要选择不带后缀的那个 vmdk 文件。完成添加磁盘。
运行虚拟机,使用 fdisk 命令查看磁盘分区。
1 |
|
在输出结果里找到新添加的磁盘,我这里是 /dev/sdb
。可以看到磁盘有三个分区,最大的 sdb3
是存储文件的分区。
1 |
|
接下来创建挂载点,挂载磁盘。
1 |
|
挂载完成后就可以在挂载目录下访问虚拟磁盘里的文件了,之后可以通过 FTP 等方式将文件传到物理机上。
数据无价,使用虚拟机的时候最好还是将重要数据进行定期备份,多多利用 VMware 的快照功能保存虚拟机状态,避免这类问题发生。