我在使用虚拟机时遇到问题,我想知道是否有办法访问虚拟磁盘文件,我听说过 OSFMount,但它不允许我访问我需要的文件夹
恢复主机上虚拟机的备份,以便系统运行,但我需要获取磁盘内的数据,我将其放在外部磁盘上,将其移至Windows计算机,然后将CentOS能够使用 vmware-mount 进行访问,但它向我发送错误“无法安装磁盘 'SERVER-04.Palmiss.local.vmdk':安装虚拟磁盘不安全。它可能正在使用中。”
答案1
有多种方法可以访问vmdk
文件。
vmware挂载
正如您已经尝试过的那样vmware-mount
。使用时请确保输入所有正确的命令。我已经参考过这个网站有关 的信息vmware-mount
。此链接已过时,但可能仍然适用于您。
可能需要仅安装特定分区或了解您的情况的正确分区号。
vmware-mount -p #list partitions
mkdir /mnt/vmdkfile #create a mountpoint for your file
vmware-mount /path/to/vmfile.vmdk 1 /mnt/vmdkfile
请注意,这1
是命令中列出的正确分区号vmware-mount -p
。这可能不起作用,因为在您的情况下vmware-mount
抱怨磁盘仍在使用中。如果可能,您可以使用 VMWare Player 或 Workstation 尝试使用您的.vmdk
磁盘创建新的 VM。或者,您可以尝试QEMU
。
QEMU
如果您只需要只读访问,QEMU 可以挂载.vmdk
文件。我正在参考这个堆栈交换帖子对于这部分。
验证您是否拥有nbd
内核模块。
sudo modprobe nbd
将 vmware 磁盘文件挂载到nbd
.
sudo qemu-nbd -r -c /dev/nbd1 ./path/to/vmfile.vmdk
然后使用以下命令将其安装到您的 Linux 主机:
mount /dev/nbd1p1 /mnt
但是,这可能不是您可用的格式。在这种情况下,我建议您尝试使用 提取文件的内容7zip
。对于我引用的最后几个选项这个网站。
7zip
验证您是否可以使用 列出文件的内容7zip
。
7z l vmfile.vmdk
如果可以并且确实看到相关目录,那么您应该能够使用以下命令提取特定文件:
7z e vmfile.vmdk FILE
这将从.vmdk
.如果需要,您可以grep
通过查找特定文件。.vmdk
如果您需要整个磁盘,只需使用7z e vmfile.vmdk
即可提取整个存档。
/dev/loop 和 guestmount
您可以使用循环设备,甚至也guestmount
可以尝试安装映像。
fdisk -l | grep /dev/loop
用或列出当前的循环设备df -h | grep /dev/loop
。
如果您的循环设备达到 20 个,则创建一个编号更高的循环设备并使用以下命令挂载您的映像:
losetup /dev/loop30 /path/to/vmfile.vmdk
这关联我之前提到过有关进行偏移的讨论,但这仅对于特定的 Windows VM 是必要的。
还有一个名为 的 Linux 实用程序guestmount
。了解更多相关信息这里在其联机帮助页上。在这里查看其中的示例:
对于主文件系统位于第一个分区的典型 Windows 客户机:
guestmount -a windows.img -m /dev/sda1 --ro /mnt
对于第一个分区上有 /boot 文件系统、逻辑卷上有根文件系统的典型 Linux 客户机:
guestmount -a linux.img -m /dev/VG/LV -m /dev/sda1:/boot --ro /mnt
要让 libguestfs 为您检测来宾安装点:
guestmount -a guest.img -i --ro /mnt
结论
为了供您参考,我还将提供一个有关 VMWare 文档的链接.vmdk 安装限制。在尝试任何命令之前,请阅读我提供的所有链接。如果某个特定的方法最适合您,我可以限制这篇文章的范围。如果您有任何疑问或我的帖子中有任何误解或问题,请发表评论,我可以根据需要进行编辑。
祝你好运!