You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在无root密码、无法登录Redhat Linux虚拟机的情况下,从VMware宿主机获取虚拟机内的文件?

如何在无root密码、无法登录Redhat Linux虚拟机的情况下,从VMware宿主机获取虚拟机内的文件?

嗨,这个需求太贴合“给虚拟机硬盘‘拆下来’读文件”的思路了,我之前帮朋友处理过一模一样的问题,下面分步骤给你讲清楚怎么操作,不管宿主机是Linux还是Windows都能用:

第一步:先把虚拟机彻底关机

一定要确保虚拟机是完全关闭电源状态,别用挂起!不然磁盘文件处于锁定状态,根本没法挂载读取,这步是基础前提。

第二步:找到虚拟机的磁盘文件路径

打开你的VMware管理工具(不管是Workstation还是vSphere Client),找到目标虚拟机,进入「设置」界面,找到「硬盘」选项,里面会显示磁盘文件的存储路径,一般是.vmdk格式的文件。如果虚拟机有快照,注意看最新的快照对应的磁盘文件(通常命名是虚拟机名-000001.vmdk这类),挂载它才能拿到最新的数据;要是想省事,也可以先在VMware里合并所有快照再操作。


情况一:宿主机是Linux系统

咱们用通用的qemu-nbd工具来挂载(大部分Linux发行版都能通过包管理器安装,比如Debian/Ubuntu用apt install qemu-utils,CentOS/RHEL用yum install qemu-img):

  • 加载nbd内核模块:modprobe nbd max_part=8
  • 把vmdk文件连接到nbd设备:qemu-nbd -c /dev/nbd0 /path/to/你的虚拟机磁盘.vmdk(替换成实际的文件路径)
  • 查看磁盘分区:fdisk -l /dev/nbd0,找到Redhat的根分区或存放目标文件的分区(一般是/dev/nbd0p2这类,看输出里的分区类型和大小判断)
  • 创建挂载点:mkdir /mnt/vm-disk
  • 挂载分区:mount /dev/nbd0pX /mnt/vm-disk(把X换成你找到的分区编号)
  • 现在进入/mnt/vm-disk就能看到虚拟机里的文件了,直接复制到宿主机的其他目录就行
  • 操作完别忘了卸载清理:umount /mnt/vm-disk,然后断开nbd设备:qemu-nbd -d /dev/nbd0

要是你的Redhat用了LVM分区,挂载nbd设备后还得激活卷组:先跑vgscan扫描卷组,再用vgchange -ay激活,最后挂载对应的逻辑卷(比如mount /dev/VolGroup00/LogVol00 /mnt/vm-disk

情况二:宿主机是Windows系统

用VMware自带的vmware-mount工具就行,步骤如下:

  • 以管理员身份打开命令提示符(CMD)
  • 进入VMware Workstation的安装目录,比如:cd "C:\Program Files (x86)\VMware\VMware Workstation"
  • 先查看vmdk里的分区信息:vmware-mount /p "D:\VMs\你的虚拟机目录\磁盘文件.vmdk"(替换成实际路径),输出里会列出分区编号
  • 把指定分区挂载到一个空盘符,比如:vmware-mount Z: "D:\VMs\你的虚拟机目录\磁盘文件.vmdk" /p:2(这里的/p:2是分区编号,对应你要挂载的分区)
  • 打开「此电脑」就能看到Z盘了,直接找到目标文件复制出来就行
  • 操作完卸载盘符:vmware-mount /d Z:

备注:内容来源于stack exchange,提问作者GC_

火山引擎 最新活动