ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

VMware虚拟机与主机共享文件:Tools安装、拖拽、共享文件夹与SMB网络共享

VMware虚拟机与主机共享文件:Tools安装、拖拽、共享文件夹与SMB网络共享 很多人第一次玩VMware虚拟机时最先被劝退的其实不是系统安装而是文件传不进去。刚装好一个Windows虚拟机想从电脑主机拖个安装包过去结果鼠标卡在虚拟机窗口里出不来文件拖了半天没反应最后只能干瞪眼。这个场景我太熟了当年我也是这么折腾过来的。后来把VMware Tools装好、共享文件夹配明白之后才发觉所谓“电脑主机与VMware虚拟机共享文件”本质上就那么几条路每一条都有它的脾气。这篇教程不扯没用的直接把我实际试过的几种共享方案全部摆出来包括VMware Tools拖拽、复制粘贴、共享文件夹、网络SMB共享以及对应的配置步骤和踩坑点。不管你是刚装好虚拟机的新手还是正在为“虚拟机里看不到共享盘”发愁的老手照着操作基本都能解决。1. 先理清思路主机和虚拟机之间传文件的几种主流方案1.1 为什么VMware Tools是共享文件的前提虚拟机是一个独立完整的系统默认情况下电脑主机和虚拟机之间是隔离的。主机看不到虚拟机内部的文件结构虚拟机也看不到主机的磁盘它们之间的“物理隔离”很有必要否则虚拟机的稳定性就无从谈起。但这也带出一个现实问题我们装虚拟机的目的往往是要在两个系统之间传递文件比如把Windows里的安装包传进Linux虚拟机或者把虚拟机里生成的数据拷贝回主机。VMware Tools就是打破这层隔离的关键组件。它是一整套驱动和工具负责实现鼠标平滑进出、屏幕分辨率自适应、剪贴板共享、拖拽复制以及最核心的Shared Folders共享文件夹功能。换句话说没有VMware Tools你就只剩网络共享、ISO镜像、U盘重定向这些“外部通道”可以用装上VMware Tools之后才能真正体会到虚拟机“融入主机”的那种顺手感。我见过有人装了虚拟机半年都不知道要装VMware Tools每次传文件都是开一个网盘中转。不是不行但效率确实低。所以不管你最终打算用哪种方式共享先把VMware Tools装上这是后面所有便捷操作的基础。1.2 几种常见共享方式怎么选以下是我实际用过的几种共享方式各有优劣先放在一起做个对比。共享方式是否依赖VMware Tools稳定性适合场景拖拽/复制粘贴依赖一般大文件容易失败偶尔传小文件、复制文本共享文件夹Shared Folders依赖很稳定大量文件、日常持续共享网络SMB共享不依赖较稳定依赖网络和权限配置多虚拟机、跨物理机共享ISO镜像挂载不依赖很稳定一次性传大安装包、驱动U盘/USB设备重定向不依赖很稳定临时插U盘传给虚拟机如果你问我的建议日常使用优先考虑共享文件夹这是VMware最推荐、也最符合直觉的方式。少量零碎文件用拖拽就够了不用开任何额外设置。如果虚拟机里没有安装VMware Tools或者你想在宿主机和远程服务器之间传文件那再考虑网络共享。2. VMware Tools安装所有共享功能的地基2.1 安装前的环境确认安装VMware Tools有几个前置条件需要确认否则很容易装上之后功能不全或者安装过程报错。虚拟机电源需要处于开启状态客户机操作系统必须已经运行到桌面。菜单位置“虚拟机 - 安装VMware Tools”如果显示灰色最常见原因就是没有选中虚拟机窗口或者虚拟机没有真正启动起来。虚拟机安装介质会自动挂载。VMware会把对应的windows.iso或linux.iso挂到虚拟光驱进到虚拟机里的“此电脑”能看到一个DVD驱动器。尽量避免使用过度精简版系统。有些精简版Windows或Linux为了减小体积会阉割掉Visual C运行库、.NET Framework等基础组件导致VMware Tools安装程序跑一半就中断。我之前踩过这个坑最后老老实实换回官方原版系统镜像才顺利装上。确认完这些之后就可以开始安装了。2.2 Windows虚拟机里安装VMware Tools的完整步骤在Windows虚拟机里安装VMware Tools流程其实很常规启动虚拟机并登录到Windows桌面。在VMware菜单栏点击“虚拟机” - “安装VMware Tools”。如果此前装过旧版本这里会显示“更新VMware Tools”。虚拟机的光驱会自动挂载Tools安装盘打开“此电脑”能看到一个带有VMware图标的DVD驱动器双击进入找到setup.exe或64位系统的setup64.exe右键以管理员身份运行。安装程序启动后选择“典型安装”一路下一步。除非你需要自定义安装路径否则不用动其他选项。安装完成后会提示重启虚拟机建议立即重启确保驱动完全生效。这里有一个容易被忽略的细节安装过程中杀毒软件可能会拦截VMware Tools写驱动文件。如果你电脑上装了第三方安全软件建议先把实时防护临时关掉等Tools安装完再打开。不要问我怎么知道的我曾经在一个企业版安全软件管控的机器上装Tools前前后后试了五次都提示脚本失败关了防护之后一次通过。2.3 Linux虚拟机里安装VMware Tools的两种方式Linux虚拟机装VMware Tools有两条路我更推荐第一种。使用系统自带的open-vm-tools包。这是从VMware Tools衍生出来的开源版本已经集成到大多数Linux发行版的软件源里。Debian/Ubuntu用sudo apt install open-vm-toolsCentOS/RHEL用sudo yum install open-vm-tools。安装完成后重启虚拟机即可。它的好处是不需要自己编译更新跟着系统源走省心。使用VMware自带的官方Tools包。在VMware菜单栏点击“安装VMware Tools”在Linux虚拟机内挂载光驱然后解压VMwareTools-x.x.x-xxxx.tar.gz进入解压目录后执行sudo ./vmware-install.pl全程按提示输入yes回车。这种方式在老系统上可能遇到内核头文件缺失的问题需要先安装kernel-devel和gcc编译器相对折腾。我现在的习惯是能装open-vm-tools就尽量用它只有遇到个别特殊情况比如某发行版源里没有这个包才会用官方Tools包。2.4 安装后怎么确认Tools生效Tools装完不要急着关页面先确认它真的生效了。Windows虚拟机可以在“控制面板 - 程序和功能”里看到VMware Tools的条目任务栏右下角也会出现VMware Tools的图标。更直接的办法是同时按CtrlAlt鼠标如果能自动从虚拟机窗口里“跑”回主机说明驱动已经正常加载。Linux虚拟机可以运行vmware-toolbox-cmd -v查看Tools版本或者运行systemctl status vmtoolsd查看服务状态。如果之前用open-vm-tools还能看到vmtoolsd服务处于active状态。如果发现Tools装完但仍然不能拖拽或共享文件夹不生效别急着卸载重装先重启一下虚拟机。很多时候驱动没完全加载重启就好了。3. 共享文件夹功能配置最稳定的方式3.1 在虚拟机设置里添加共享文件夹共享文件夹是VMware里最稳定的文件共享方式它的原理不是模拟U盘而是通过VMware Tools提供的hgfs文件系统驱动让虚拟机直接访问主机上的某个目录。配置步骤如下在VMware工作台左侧选中目标虚拟机点击“编辑虚拟机设置”。切换到“选项”选项卡找到“共享文件夹”。将文件夹共享策略选择为“总是启用”。这里要特别注意不要选“下次关机或挂起前启用”否则虚拟机重启后共享就失效了。点击“添加”按钮弹出添加共享文件夹向导。在“主机路径”中点击浏览选择电脑主机上要共享的目录。在“名称”中填写一个共享名称比如share。勾选“启用此共享”然后完成。添加完成后可以在共享文件夹列表中看到这一项。如果“共享文件夹”设置页整体是灰色不可点基本可以确定是VMware Tools没有装好回头先把Tools搞定再说。关于共享路径的选择我个人的建议是不要在主机上共享系统盘里的一整个目录比如C:\Users\xxx\Desktop这种。一方面权限容易出幺蛾子另一方面也不安全。最好单独建一个专门用于虚拟机的共享目录比如D:\Share然后给虚拟机一个独立的盘符访问它这样两边都清爽。3.2 在Windows虚拟机里访问共享文件夹共享文件夹配置好之后Windows虚拟机里最直接的访问方式是在文件资源管理器地址栏输入\\vmware-host\Shared Folders\共享名称比如你刚才设置的共享名称是share就输入\\vmware-host\Shared Folders\share回车就能看到主机上对应的目录内容。这样每次手动输地址毕竟麻烦我更推荐把它映射成一个网络驱动器。操作方式是打开“此电脑”点击顶部菜单的“映射网络驱动器”。选择一个磁盘驱动器比如Z盘。在“文件夹”输入框中填写\\vmware-host\Shared Folders\share。勾选“登录时重新连接”。点击完成。之后在虚拟机的“此电脑”里就会多出一个Z盘使用起来跟本地磁盘没什么区别。很多程序员喜欢把代码工程放在这个共享盘里主机和虚拟机共用一套文件主机改代码虚拟机里编译非常方便。3.3 Linux虚拟机里共享文件夹的挂载方式Linux虚拟机访问共享文件夹和Windows不太一样默认挂载路径通常是/mnt/hgfs/共享名称。如果安装的Tools正常进入/mnt/hgfs就能看到你配置的共享目录。但我在实际使用中发现某些Linux发行版下/mnt/hgfs不会自动出现或者出现目录但里面是空的。这时候需要手动挂载。对于使用vmhgfs-fuse的现代版本可以执行sudo mkdir -p /mnt/hgfs sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid1000如果你的系统还在使用传统的vmhgfs模块也可以写成sudo mount -t vmhgfs .host:/ /mnt/hgfs挂载之后/mnt/hgfs下面就能看到你添加的共享名称。如果开机之后不想每次手动挂载可以把挂载命令写入/etc/fstab但具体写法因发行版而异新手可以先用手动挂载方式确认功能没问题再考虑开机自动挂载。3.4 共享文件夹的权限和常见坑共享文件夹在配置时有几个坑都是我自己遇到过或者帮别人排查时碰到的。你添加共享文件夹时如果向导里勾选了“只读”虚拟机里就只能读不能写。很多人配置完说虚拟机没法往共享目录里保存文件十有八九是这个“只读”勾上了。“启用此共享”复选框一定记得勾选。不勾选的话虽然列表中能看到共享项但虚拟机里实际访问不到。主机上的共享目录如果放在UAC保护的特殊目录下虚拟机中的普通程序可能因为权限问题无法正常写入。尽量把共享目录放在非系统盘根目录下的普通文件夹里。如果虚拟机里某些程序以管理员身份运行而映射的网络驱动器是普通权限下映射的可能会出现程序看不到Z盘这种情况。解决办法是用完整UNC路径\\vmware-host\Shared Folders\share直接访问或者修改注册表开启EnableLinkedConnections来让管理员和普通进程共享登录凭据。主机上的安全软件可能会把虚拟机对共享目录的写入当成外部进程访问特别是开启“受控文件夹访问”功能的Windows安全中心有时候会拦截。如果发现主机上无法正常生成虚拟机写入的文件可以检查一下安全中心的保护记录。4. 拖拽复制与剪贴板共享最方便但需要调教4.1 打开拖拽复制功能的两个开关安装好VMware Tools后正常情况下VMware默认就开启了拖拽和复制粘贴。但也有例外有些虚拟机配置文件或者组策略会禁用这个功能所以需要手动检查两个地方。第一个地方是“编辑虚拟机设置 - 选项 - 客户机隔离”里面会看到“启用拖拽”和“启用复制粘贴”两个复选框。勾选之后主机和虚拟机之间的拖拽、复制粘贴才被允许。第二个地方是VMware全局偏好设置点击菜单栏“编辑 - 首选项 - 输入设备”具体版本可能叫法不同里面也有关于拖放和复制粘贴的全局选项。如果你发现只有某一台虚拟机不能拖拽先看虚拟机设置如果所有虚拟机都不行再看全局偏好。开启之后直接从主机桌面选中一个文件按住鼠标拖到虚拟机窗口内松开文件就会自动复制到虚拟机的桌面或者当前打开的文件管理器目录。文本内容也可以双向复制粘贴非常方便。4.2 大文件拖拽容易失败的原因与补救拖拽复制虽然方便但它不是万能的尤其传大文件的时候经常翻车。原因是VMware Tools的拖拽功能在后台会把源文件先复制到一个临时目录再由目标系统移动到指定位置。这个临时目录一般位于系统盘如果文件很大、系统盘空间又紧张就很容易在复制过程中卡住甚至直接报错无响应。我实际测试下来的经验是几百MB以内的小文件拖拽基本上没问题偶尔传一个一两百MB的安装包也能跑完。但超过1GB的大文件或者包含几千个小文件的文件夹拖拽就非常吃力。这种情况下老老实实走共享文件夹通道速度和稳定性都会好很多。还有一个经验之谈如果你是在虚拟机里通过UAC弹出的管理员窗口拖拽文件很可能会失败。因为UAC权限隔离的存在普通权限的Shell窗口里的拖拽操作无法传递到管理员进程。遇到这种情况先把文件放到桌面再从桌面拖一次。4.3 拖拽失效的排查清单我整理了一份拖拽失效时的排查清单按顺序执行基本能覆盖大多数问题。确认VMware Tools已经安装并且版本和VMware Workstation对应。Tools版本过老容易出现拖拽协议不兼容。检查“虚拟机设置 - 选项 - 客户机隔离”的“启用拖拽”和“启用复制粘贴”是否勾选。在虚拟机内重启VMware Tools服务。Windows虚拟机打开任务管理器找到vmtoolsd.exe右键结束进程VMware Tools会自动拉起来一个全新的进程。Linux虚拟机可以运行sudo systemctl restart vmtoolsd。如果上述都不行卸载VMware Tools后重新安装一次安装时选择“修复”模式也可以。如果虚拟机里运行的是Windows 7这种老系统注意先打系统补丁否则Tools安装完功能不完整。偶尔是VMware Workstation版本自身的Bug可以考虑升级到最新版。特别是17.x的用户新版本在拖拽传输上做了不少修复。5. 主机与虚拟机网络共享另一种思路5.1 什么时候需要走网络共享如果不想装VMware Tools或者你的虚拟机只是临时用一下又或者你需要让多台虚拟机、多台物理机之间共享同一个目录那就可以考虑走标准网络共享这条路。它不依赖VMware Tools完全是系统层面的文件共享协议最常用的是Windows的SMB/CIFS。这种方式的缺点是配置相对繁琐涉及网络连通性、防火墙、共享权限、账号凭据等不像共享文件夹那样一键搞定。但优点也很明显没有VMware版本限制同样一套共享方法不仅能用在主机和虚拟机之间还能用在虚拟机和其他局域网设备之间。5.2 Windows主机设置共享文件夹的关键步骤在电脑主机上设置共享文件夹以Windows 10/11为例选择你要共享的文件夹比如D:\Share右键 - 属性 - 共享 - 高级共享。勾选“共享此文件夹”点击“权限”默认会把Everyone账户加进去。要想让虚拟机读写就把Everyone的权限设为“读取和写入”。到“控制面板 - 网络和共享中心 - 更改高级共享设置”确保当前网络配置文件中“网络发现”和“文件和打印机共享”都处于启用状态。如果想要免密访问在“所有网络”里选择“无密码保护的共享”。否则访问时需要输入主机的用户名和密码。在主机上打开命令行运行ipconfig记下当前网卡的IPv4地址比如192.168.1.100。这一步的难点往往不是配置本身而是Windows的网络共享被各种因素干扰。很多人在“两台电脑之间共享文件出现无法访问需要共享的电脑”这个问题上卡住大部分原因是网络发现没开、防火墙拦截了“文件和打印机共享”或者当前网络类型被识别成了“公用网络”。把这些全部理顺之后问题基本消失。还有一些细节值得注意Windows默认关闭了SMB1.0协议。如果你的共享访问对象是老旧的Windows 7或者更早的设备可能会报错需要手动在“可选功能”里开启SMB1.0/CIFS文件共享支持。但如果不是为了兼容旧设备我建议保持关闭毕竟SMB1.0安全性差容易成为勒索软件攻击入口。5.3 虚拟机访问主机共享路径虚拟机和主机的网络连通性决定了你用哪个IP来访问主机。如果虚拟机的网络模式是桥接模式虚拟机与主机在同一局域网内直接访问主机的局域网IP即可。如果虚拟机的网络模式是NAT模式虚拟机的默认网关是VMware虚拟网卡VMnet8的IP这个IP通常也是主机在虚拟机里的“入口”也就是主机IP。可以在主机上运行ipconfig找到VMware Network Adapter VMnet8的IPv4地址比如192.168.x.1然后在虚拟机里访问\\192.168.x.1\Share。在虚拟机里打开文件资源管理器地址栏输入\\192.168.x.x\Share回车后会弹出凭据输入框填主机的用户名和密码建议勾选“记住我的凭据”。下次再访问就不用反复输入了。这里我遇到过最多的问题是“找不到网络路径”或者“0x80070035”。排查时先在虚拟机里ping一下主机IP能通说明网络没问题然后重点看主机防火墙有没有放行文件共享以及网络发现是否开启。如果ping不通先查VMware虚拟网络编辑器的NAT设置把VMnet8网段和虚拟机网卡网段调成一致。5.4 反向共享主机访问虚拟机里的文件反过来如果电脑主机想读取虚拟机内的文件也可以采用同样的思路在虚拟机系统里配置文件共享然后从主机访问虚拟机的IP。以Windows虚拟机为例在虚拟机里把某个文件夹设置为共享查看虚拟机当前IP在主机文件资源管理器地址栏输入\\虚拟机IP\共享名即可。前提是两台机器网络互通、防火墙放行和上面讲的流程基本对称。不过说实话如果你只是想从虚拟机里拷文件出来完全没必要这么绕。共享文件夹功能天然支持双向访问主机共享的目录虚拟机能看到虚拟机放到共享目录里的文件主机也能看到。除非你是在用别人做好的虚拟机模板里面没有VMware Tools才能用到这种反向网络共享。6. 常见问题与排查技巧实录6.1 菜单里“安装VMware Tools”是灰色的这个问题在VMware论坛上被问烂了。修复方式很简单在VMware左侧列表里单击选中目标虚拟机确保它处于开机状态并且虚拟机的操作系统已经完成启动再点击“虚拟机 - 安装VMware Tools”。如果虚拟机开机时卡在启动画面菜单也会是灰色的。还有一种情况是你打开了全屏模式菜单栏被自动隐藏按CtrlAlt把鼠标切出来恢复窗口模式再操作。6.2 VMware Tools安装提示“继续运行脚本未能在虚拟机中成功运行”这个问题是热词说明遇到的人不少。我在安装过程中也遇到过。它的出现通常有三个原因杀毒软件拦截了Tools进程写系统目录。系统缺少必要的运行库比如Visual C Redistributable。安装时没有以管理员权限运行。解决办法先关闭虚拟机里的杀毒软件实时防护然后右键setup.exe选择“以管理员身份运行”。如果提示已经在系统里安装过旧版本先到“程序和功能”中卸载干净再重新安装。也可以从VMware安装目录里手动找到windows.iso解压后单独运行目录里的安装程序往往能绕过一些权限问题。6.3 共享文件夹设置后虚拟机里还是看不到这种情况我排过很多次原因一般集中在几个地方虚拟机设置里的共享方式没有选择“总是启用”而是选了“下次关机或挂起前启用”。添加共享文件夹时没有勾选“启用此共享”。虚拟机里的VMware Tools未正常启动。Linux虚拟机里没有挂载hgfs目录或者挂载点权限不对。解决方法也很简单逐一检查上述配置。Windows虚拟机可以用\\vmware-host\Shared Folders\共享名称直接访问看是否报错。Linux虚拟机优先检查/mnt/hgfs目录如果不存在先mkdir -p /mnt/hgfs再手动挂载。如果仍然不行重启虚拟机后再试。6.4 虚拟机开机后拖拽和复制粘贴失效拖拽功能正常用了一阵子某天重启虚拟机后突然失效这是典型的VMware Tools服务没有随系统启动。Windows虚拟机按下WinR输入services.msc在服务列表里找到“VMware Tools”或“VMware Tools Service”把启动类型改为“自动”并确保服务状态是“正在运行”。然后再去“虚拟机设置 - 选项 - 客户机隔离”里把“启用拖拽”关闭再重新打开很多时候就能恢复。如果服务已经是自动状态但启动后仍然失效那可能是Tools版本和虚拟机系统不匹配。直接把VMware Workstation升级到最新版一般能解决这类玄学问题。6.5 无法访问主机上的网络共享Windows错误码速查网络共享访问失败时Windows会弹出一堆让人摸不着头脑的错误码。我整理了一份常见错误速查表遇到问题时直接对照排查。错误码/提示可能原因解决办法0x80070035 找不到网络路径防火墙拦截、网络发现关闭、相关服务未启动启用网络发现和文件和打印机共享放行防火墙规则启动Function Discovery等依赖服务0x80070043 找不到网络名共享名输入错误、共享已被删除确认共享路径和主机IP大小写是否正确重新共享目标文件夹提示没有权限访问用户名密码错误、没有相关权限检查主机登录凭据在共享权限中添加Everyone或指定用户并给予读写权限提示网络错误指定的网络名不再可用主机重启后IP变化、网络状态不稳定重新查看主机IP尽量使用静态IP或者主机名访问另外也提醒一句如果你在手机或其他设备上连Windows共享失败比如“iphone smb连接电脑共享文件失败”很多时候和虚拟机遇到的SMB问题同源无非是协议版本不兼容、访客访问被禁用、防火墙拦截这几个原因排查思路可以通用。6.6 其他容易被问到的周边问题热词里还有两个问题虽然不直接属于共享文件但经常和VMware使用混在一起顺带说两句。一是“WSL2无法启动因为此计算机上未启用虚拟化”。这个情况在虚拟机里嵌套WSL2比较典型需要先确保物理机BIOS中开启了Intel VT-x或AMD-V。如果是Windows虚拟机里用WSL2还要在虚拟机设置中开启“虚拟化Intel VT-x/EPT”或“虚拟化AMD-V/RVI”否则嵌套虚拟化不会生效。二是“如何删除虚拟机目录”。在VMware库中右键虚拟机选择“从库中移除”只是把虚拟机从列表中去掉不会删除磁盘文件。要彻底清理需要手动到虚拟机所在目录把整个文件夹删掉。注意先把虚拟机从库中移除否则文件可能被占用删不干净。共享文件这个事说难其实不难说简单也有一堆细节。我个人的习惯是主力用共享文件夹并映射成Z盘拖拽只用来传小文件和复制文本。这样既稳又方便还不容易被临时文件占满系统盘。还有个小建议共享目录不要直接选整个硬盘分区单独做一个D:\Share这种目录归属清晰后面备份虚拟机时也好排除。按照上面操作走一遍主机和虚拟机之间的文件传递就能彻底顺畅起来。
返回列表