news 2026/10/14 16:15:22

VMware共享文件夹配置全攻略:Linux与Windows虚拟机实操指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VMware共享文件夹配置全攻略:Linux与Windows虚拟机实操指南

1. 为什么共享文件夹这件事值得单独拿出来讲

但凡在虚拟机里跑过开发环境的人,大概率都经历过这样的场景:宿主机上写好代码,想传到虚拟机里编译测试,结果发现两边像隔了一堵墙。用U盘拷来拷去太蠢,用网盘又慢又绕,配个网络共享吧,还得折腾防火墙和权限。这时候VMware Tools自带的共享文件夹功能,其实就是最省事的方案——它不需要网络连通,不依赖外部服务,直接在宿主机和虚拟机之间架了一条内部通道。

这个功能的核心价值在于:让宿主机上的某个目录,在虚拟机里像本地文件夹一样直接访问。你改宿主机上的文件,虚拟机里立刻能看到变化;虚拟机里往共享目录写东西,宿主机上也同步出现。对于需要频繁在两边倒腾代码、数据、配置文件的人来说,这几乎是必备操作。

但问题在于,很多人第一次配的时候会卡在各种奇怪的地方:VMware Tools装了但共享文件夹不显示、/mnt/hgfs目录是空的、挂载命令报错、重启后共享又没了。这些坑我基本都踩过一遍,所以这篇文章不只是告诉你“点哪里”,而是把背后的机制、不同系统的差异、以及那些文档里不会写的细节都讲清楚。

适合谁看?如果你刚开始用虚拟机做开发、测试、数据分析,或者你已经在用但共享文件夹总是出问题,这篇内容应该能帮你省下不少查资料的时间。下面我会从整体思路开始拆,然后分Linux和Windows两条线讲具体操作,最后把常见问题和排查方法整理出来。

2. 共享文件夹的整体设计与方案选型

2.1 为什么选VMware Tools共享文件夹而不是其他方案

在虚拟机与宿主机之间传文件,常见方案无非这么几种:网络共享(SMB/NFS)、SSH传输(scp/sftp)、云同步盘、U盘挂载、以及VMware Tools共享文件夹。每种方案都有适用场景,但共享文件夹在“本地开发调试”这个场景下优势很明显。

先看网络共享。SMB或NFS需要虚拟机和宿主机在同一网段,虚拟机网络模式得是桥接或NAT,然后还要配防火墙规则、用户权限。一旦网络模式改成Host-Only或者网络出问题,共享就断了。而且Windows和Linux之间的SMB权限问题经常让人抓狂。

SSH传输适合一次性拷贝,但如果你需要频繁修改文件、实时看到变化,每次scp就很烦。云同步盘更不用说了,延迟高、依赖外网、还可能涉及数据安全问题。

VMware Tools共享文件夹的原理不一样。它走的是VMware自己的**HGFS(Host-Guest File System)**协议,通过VMware Tools在虚拟机内部实现了一个文件系统驱动,直接和宿主机的VMware进程通信。不经过网络栈,不依赖IP配置,只要VMware Tools正常运行,共享通道就在。

注意:HGFS是VMware的私有协议,只在VMware虚拟化环境下可用。如果你用的是其他虚拟化平台,方案会完全不同。

2.2 共享文件夹的工作机制简析

理解机制对排查问题很有帮助。整个链路大概是这样:

  1. 宿主机上,VMware Workstation(或Player)进程负责管理你配置的共享目录。
  2. 虚拟机配置文件中记录了共享文件夹的映射关系(名称、宿主机路径、读写权限)。
  3. 虚拟机启动后,VMware Tools里的HGFS驱动会向宿主机请求共享列表。
  4. Linux系统下,共享文件夹通常挂载在/mnt/hgfs/下;Windows系统下,会以网络驱动器或文件夹形式出现在“网络”或“此电脑”中。

关键点在于:共享文件夹的配置是存在虚拟机设置里的,但实际访问依赖VMware Tools在虚拟机内部的工作。所以如果VMware Tools没装好、没运行、或者版本不匹配,共享文件夹就不会出现。

2.3 读写权限的设计取舍

配置共享文件夹时,有一个选项是“只读”还是“读写”。很多人直接选读写,觉得方便。但这里有个细节:读写权限的控制是在宿主机侧生效的,虚拟机里的用户权限是另一层。

举个例子:你在宿主机上以用户A的身份运行VMware,共享了一个目录,设置了读写。虚拟机里你用root往共享目录写文件,实际写入时用的是宿主机用户A的权限。如果宿主机上那个目录对用户A没有写权限,虚拟机里就会写失败。

所以我的建议是:共享目录尽量放在宿主机用户有完全控制权的位置,比如用户主目录下的某个文件夹,避免放在系统盘根目录或需要管理员权限的地方。这样能省掉很多权限相关的诡异问题。

另外,如果只是需要虚拟机读取宿主机的文件,比如看文档、读数据集,那直接设只读更安全,避免虚拟机里的误操作影响到宿主机。

3. Linux虚拟机下的完整实操流程

3.1 前置检查:VMware Tools是否已正确安装

在配置共享文件夹之前,先确认VMware Tools的状态。很多人跳过这一步,结果后面共享文件夹不显示,白白浪费时间。

打开终端,执行:

systemctl status vmware-tools

或者对于较新的发行版,可能是:

systemctl status open-vm-tools

如果看到active (running),说明工具在运行。如果提示Unit vmware-tools.service could not be found,那可能是没装,或者装的是open-vm-tools但服务名不同。

另一种检查方式是看内核模块:

lsmod | grep vmw

正常应该能看到vmw_vmci、vmwgfx、vmw_balloon等模块。如果完全没有输出,说明VMware Tools的内核模块没加载。

实操心得:现在很多Linux发行版(Ubuntu 18.04+、CentOS 8+、Debian 10+)推荐直接用open-vm-tools,而不是VMware官方的那套安装脚本。open-vm-tools是开源实现,集成在发行版仓库里,更新更方便,兼容性也更好。

安装open-vm-tools的命令:

# Ubuntu/Debian sudo apt update sudo apt install open-vm-tools open-vm-tools-desktop # CentOS/RHEL/Fedora sudo dnf install open-vm-tools open-vm-tools-desktop

open-vm-tools-desktop包含了桌面环境下的支持,比如分辨率自适应、剪贴板共享等。如果只装open-vm-tools,共享文件夹功能也能用,但桌面体验会差一些。

装完后重启虚拟机:

sudo reboot

3.2 在VMware中配置共享文件夹

这一步在虚拟机的设置界面操作。虚拟机关机或开机状态下都可以配置,但建议关机后配置,避免一些奇怪的缓存问题。

操作路径:虚拟机菜单 → 设置 → 选项 → 共享文件夹 → 选择“总是启用” → 添加 → 选择宿主机上的目录 → 命名 → 选择读写或只读。

几个细节:

  • 名称:这个名称就是虚拟机里看到的文件夹名。建议用英文、不带空格,比如shared、workspace、data。中文名在某些系统下会出现编码问题。
  • 宿主机路径:选一个你确定有权限的目录。Windows下比如D:\vm_share,Linux下比如/home/yourname/vm_share。
  • 启用此共享:勾选。
  • 只读:按需选择。

配置完成后,如果虚拟机是开着的,需要重启VMware Tools服务或者重启虚拟机才能生效。

3.3 验证共享文件夹是否可见

重启后,打开终端,检查/mnt/hgfs/目录:

ls /mnt/hgfs/

如果能看到你配置的共享文件夹名称,说明HGFS驱动已经识别到了。如果目录为空或者/mnt/hgfs根本不存在,说明有问题,需要排查。

另一种验证方式是直接查询HGFS共享列表:

vmware-hgfsclient

这个命令会列出当前虚拟机能看到的所有共享文件夹名称。如果这个命令输出为空,那基本可以确定是VMware Tools侧的问题,而不是挂载问题。

3.4 手动挂载与自动挂载的配置

如果/mnt/hgfs/下能看到文件夹,但里面是空的,或者你想挂载到其他位置,就需要手动挂载。

先安装open-vm-tools的挂载工具:

sudo apt install open-vm-tools

然后手动挂载:

sudo mkdir -p /mnt/hgfs/shared sudo mount -t vmhgfs .host:/shared /mnt/hgfs/shared

或者对于较新的open-vm-tools版本,可能用的是fuse:

sudo mount -t fuse.vmhgfs-fuse .host:/shared /mnt/hgfs/shared -o allow_other

allow_other选项很重要,它允许非root用户访问挂载点。不加这个选项,普通用户可能进不去目录。

但手动挂载重启后就失效了。要持久化,需要写进/etc/fstab:

.host:/shared /mnt/hgfs/shared fuse.vmhgfs-fuse allow_other,defaults 0 0

或者用更现代的方式,在/etc/systemd/system/下创建一个mount unit。不过fstab方式更简单直接,大多数场景够用。

注意:fstab里写.host:/shared这种格式时,如果共享名称有变化,挂载会失败。而且fstab挂载失败可能导致系统启动变慢或进入紧急模式。建议先手动测试挂载命令没问题后,再写入fstab。

3.5 权限与用户组配置的细节

挂载完成后,普通用户可能还是无法访问。这是因为HGFS挂载点的默认权限通常是root所有。

检查挂载点权限:

ls -ld /mnt/hgfs/shared

如果显示drwxr-xr-x root root,普通用户只能读不能写。解决方法有几种:

第一种,挂载时指定uid和gid:

sudo mount -t fuse.vmhgfs-fuse .host:/shared /mnt/hgfs/shared -o allow_other,uid=1000,gid=1000

把1000换成你的用户uid和gid。用id命令可以查看。

第二种,把用户加入fuse组:

sudo usermod -aG fuse $USER

然后重新登录。

第三种,如果只是临时用,直接sudo chmod改权限也行,但重启后可能失效。

我个人的习惯是:在fstab里直接写好uid和gid,一劳永逸。这样每次开机自动挂载,权限也对,不用每次手动折腾。

4. Windows虚拟机下的共享文件夹配置

4.1 VMware Tools的安装与确认

Windows虚拟机下,VMware Tools的安装相对简单。在VMware菜单里选择“虚拟机 → 安装VMware Tools”,然后在Windows里打开光驱,运行安装程序,一路下一步就行。

安装完成后,系统托盘会出现VMware Tools的图标。右键点击可以看到“共享文件夹”相关的选项。

确认VMware Tools正常运行:打开任务管理器,看是否有vmtoolsd.exe进程。或者右键“此电脑” → 管理 → 设备管理器,看是否有VMware相关的设备且没有黄色感叹号。

实操心得:Windows下有时候VMware Tools装了但共享文件夹不显示,重启一次基本能解决。如果还不行,在VMware Tools的托盘图标右键菜单里,检查“共享文件夹”是否被禁用。

4.2 共享文件夹在Windows中的访问方式

Windows虚拟机访问共享文件夹有两种方式:

第一种,通过“网络”位置。打开文件资源管理器,在地址栏输入:

\\vmware-host\Shared Folders\

回车后就能看到所有共享文件夹。这种方式不需要映射驱动器,临时用很方便。

第二种,映射网络驱动器。右键“此电脑” → 映射网络驱动器 → 选择一个盘符 → 文件夹位置填:

\\vmware-host\Shared Folders\shared

勾选“登录时重新连接”,这样每次开机自动映射。

两种方式各有优劣。直接访问\\vmware-host\更轻量,但每次都要输路径;映射驱动器更方便,但有时候网络位置变化会导致映射失效,需要重新连接。

4.3 常见权限问题与解决

Windows下共享文件夹的权限问题通常表现为:能看到文件夹,但打不开,或者提示“你没有权限访问”。

这通常是因为宿主机上的目录权限设置问题。VMware Workstation在Windows上运行时,是以当前登录用户的身份访问宿主机目录的。如果那个目录对当前用户没有完全控制权,虚拟机里就会访问失败。

解决方法:右键宿主机上的共享目录 → 属性 → 安全 → 编辑 → 确保当前用户有“完全控制”权限。

另一个常见问题是:虚拟机里用管理员账户访问共享文件夹时,反而提示权限不足。这是因为VMware的HGFS在Windows下是以虚拟机当前用户的身份去请求宿主机资源的,如果虚拟机用户和宿主机用户不匹配,就可能出问题。这种情况下,试试用虚拟机里的普通用户账户访问,或者调整宿主机的共享权限为“Everyone”可读写(仅限测试环境,生产环境不建议)。

5. 常见问题与排查技巧实录

5.1 共享文件夹不显示的排查路径

这是最高频的问题。排查顺序建议如下:

排查步骤检查内容可能结果与处理
1VMware Tools是否运行未运行则启动服务或重装
2vmware-hgfsclient是否有输出无输出说明HGFS通道未建立
3虚拟机设置里共享文件夹是否启用未启用则勾选“总是启用”
4共享文件夹名称是否含特殊字符改为纯英文数字下划线
5宿主机目录是否存在且有权限检查宿主机侧权限
6重启虚拟机解决大部分缓存问题

如果vmware-hgfsclient有输出但/mnt/hgfs/下看不到,那问题出在挂载环节,而不是HGFS通道。这时候检查挂载命令和fstab配置。

5.2 挂载失败与fstab报错处理

fstab写错可能导致系统启动时卡住。如果遇到这种情况,在启动时进入恢复模式,把fstab里相关行注释掉,重启后再排查。

常见的fstab挂载失败原因:

  • 共享名称拼写错误
  • 挂载点目录不存在
  • fuse.vmhgfs-fuse模块未加载
  • 缺少allow_other选项导致权限问题

一个更稳妥的做法是:不用fstab,而是写一个systemd服务,在VMware Tools启动后再执行挂载。这样能确保依赖顺序正确。

创建/etc/systemd/system/mnt-hgfs-shared.mount:

[Unit] Description=Mount VMware Shared Folder After=vmware-tools.service Requires=vmware-tools.service [Mount] What=.host:/shared Where=/mnt/hgfs/shared Type=fuse.vmhgfs-fuse Options=allow_other,defaults [Install] WantedBy=multi-user.target

然后启用:

sudo systemctl enable mnt-hgfs-shared.mount sudo systemctl start mnt-hgfs-shared.mount

这种方式比fstab更可控,出问题也容易排查。

5.3 文件同步延迟与缓存问题

有时候在宿主机上改了文件,虚拟机里看不到变化,或者反过来。这通常是缓存导致的。

HGFS本身有一定的缓存机制。如果遇到同步延迟,可以尝试:

  • 在虚拟机里执行sync命令强制刷盘
  • 重新挂载共享文件夹
  • 检查VMware Tools是否为最新版本

另外,某些编辑器(如vim)在保存文件时会先写临时文件再重命名,这种行为在HGFS上可能导致宿主机侧看到的是临时文件。如果遇到这种情况,可以调整编辑器的保存策略,或者直接用echo测试写入是否正常。

5.4 大文件传输的性能问题

HGFS的传输性能不如原生磁盘IO,尤其是大文件。如果你需要频繁传输几个GB的数据,共享文件夹可能不是最优选择。

实测下来,HGFS在小文件(几KB到几MB)的读写上表现还行,但大文件传输速度明显低于网络共享或直接磁盘挂载。如果只是配置文件、代码、小数据集,共享文件夹完全够用。如果是大数据集,建议用其他方式传输,或者把数据放在虚拟机本地磁盘上。

实操心得:我一般会把共享文件夹当作“交换区”,放一些临时文件、配置、脚本。真正的大数据还是走scp或者直接挂载物理磁盘。这样既享受了共享文件夹的便利,又避开了性能瓶颈。

6. 一些让共享文件夹更好用的小技巧

6.1 用符号链接简化访问路径

/mnt/hgfs/shared这个路径有点长,每次cd进去很麻烦。可以在用户主目录下建一个符号链接:

ln -s /mnt/hgfs/shared ~/shared

这样直接cd ~/shared就能进共享目录。对于Windows虚拟机,可以把映射的驱动器固定为某个盘符,比如Z:,然后直接在命令行里cd /d Z:\。

6.2 在共享目录里放一个测试文件

配置完成后,建议在共享目录里放一个测试文件,比如test.txt,然后在两边分别修改,确认双向同步正常。这个习惯能帮你快速确认共享是否真正生效,而不是等到实际使用时才发现问题。

6.3 定期检查VMware Tools版本

VMware Workstation和VMware Tools的版本匹配很重要。如果宿主机升级了VMware Workstation,建议也更新一下虚拟机里的VMware Tools。open-vm-tools的话,通过系统包管理器更新即可。

版本不匹配可能导致共享文件夹功能异常,而且这种问题往往没有明显报错,只是“不工作”。所以定期更新是个好习惯。

6.4 共享文件夹的替代方案储备

虽然共享文件夹很好用,但也不是万能的。如果遇到HGFS驱动崩溃、性能瓶颈、或者跨平台兼容性问题,手头最好有备选方案。比如:

  • 对于Linux虚拟机,可以用sshfs把宿主机目录挂载过来(需要宿主机运行SSH服务)
  • 对于Windows虚拟机,可以用SMB共享
  • 对于临时传输,scp或rsync依然是最可靠的

多掌握几种方式,遇到问题时不至于卡死。我自己就是共享文件夹为主,scp为辅,基本覆盖了所有场景。

6.5 快照与共享文件夹的配合

VMware的快照功能不会影响共享文件夹的配置,但快照恢复后,虚拟机里的挂载状态可能需要重新检查。如果你经常用快照做实验,建议在快照恢复后确认一下共享文件夹是否正常挂载。有时候fstab挂载在快照恢复后会失败,需要手动mount -a一下。

这个细节很少有人提到,但在实际使用中确实会遇到。尤其是做测试的时候,频繁快照恢复,共享文件夹偶尔会“掉线”,重新挂载就好。

7. 关于共享文件夹,我踩过的那些坑

第一次配共享文件夹的时候,我按照网上教程一步步操作,结果/mnt/hgfs/下死活看不到东西。查了半天,发现是VMware Tools装的是官方版本,但系统里已经有open-vm-tools的残留,两个版本冲突了。卸载重装open-vm-tools后问题解决。这个经历告诉我:装VMware Tools之前,先确认系统里有没有预装的open-vm-tools,避免版本冲突。

还有一次,共享文件夹突然不工作了,vmware-hgfsclient有输出,但挂载点里是空的。排查了半天,发现是宿主机上的共享目录被我不小心改了权限,导致VMware进程无法访问。把权限改回去就好了。所以宿主机侧的权限检查不能忽略。

另外,fstab里写挂载配置时,一定要先手动测试挂载命令。我有次直接写进fstab,结果共享名称拼错了,系统启动时卡在挂载环节,进了紧急模式。虽然能修复,但很浪费时间。现在我的习惯是:手动挂载成功 → 确认重启后自动挂载 → 再写入fstab。

最后说一个Windows下的坑。有次在Windows虚拟机里映射了网络驱动器,用了一段时间后突然提示“网络驱动器不可用”。检查发现是VMware Tools更新后,共享文件夹的路径变了。重新映射一次就好了。所以Windows下如果映射驱动器失效,先检查VMware Tools的状态和共享文件夹配置,大概率是那边的问题。

这些经验看起来琐碎,但实际遇到的时候,能帮你快速定位问题,少走弯路。共享文件夹这个功能本身不复杂,复杂的是各种环境差异和版本兼容性。把原理搞清楚,遇到问题按排查路径走,基本都能解决。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/14 16:15:21

【10.25截稿 | 院士领衔 | 中国·江门】第八届数智交通与物流供应链管理国际学术会议(DILSCM 2026)暨广东省运筹学会交通物流分会年会

第八届数智交通与物流供应链管理国际学术会议(DILSCM 2026)暨广东省运筹学会交通物流分会年会 2026 8th International Academic Conference on Digital and Intelligent Transportation and Logistics Supply Chain Management 2026年11月6-8日&…

作者头像 李华
网站建设 2026/10/14 16:15:08

Apache Mesos linux/seccomp 隔离器:为容器配置 Seccomp 系统调用过滤

云原生 【免费下载链接】mesos Apache Mesos 项目地址: https://gitcode.com/gh_mirrors/mesos2/mesos 点击查看 免费下载 Mesos 的 linux/seccomp 隔离器允许在 MesosContainerizer 启动的每个容器内安装 Linux Seccomp 过滤器,通过只放行白名单内的系…

作者头像 李华
网站建设 2026/10/14 16:14:35

机器学习面试优化器高频考点:从SGD到AdamW的深度解析

1. 面试官问优化器时,到底在考察什么如果你正在准备机器学习方向的面试,优化器算法几乎是一道绕不开的坎。不管是校招还是社招,只要岗位描述里出现了“深度学习”“模型训练”“算法工程”这些词,面试官大概率会在某个环节抛出一个…

作者头像 李华
网站建设 2026/10/14 16:14:00

GT911触摸芯片I2C双地址机制与驱动适配实战

1. 项目缘起与核心问题拆解1.1 一个让人抓狂的触摸失灵现象前段时间在调试一块带触摸屏的嵌入式板子,主控通过I2C总线挂了一颗GT911电容触摸芯片。硬件焊接没问题,供电正常,复位时序也按手册走了,但主控死活读不到触摸坐标&#x…

作者头像 李华
网站建设 2026/10/14 16:13:49

Android端RTSP播放:FFmpeg+MediaCodec选型与避坑实践

简介:面向Android开发者的RTSP播放示例工程,演示通过MediaPlayer播放RTSP实时流媒体的完整链路,适合需要对接监控摄像头、网络摄像机或直播流的移动端开发者,也适合刚接触流媒体播放的新手作为自定义视频播放器的参考起点。压缩包…

作者头像 李华
网站建设 2026/10/14 16:13:42

OpenHarmony HDF驱动实战:MAX30100血氧心率传感器开发

做了几年嵌入式,最近正好在一款开源鸿蒙(OpenHarmony)开发板上跑健康监测类外设,手头这块MAX30100血氧心率传感器模块算是同期调过比较有代表性的器件。网上关于这个芯片的资料很多,但大多停在Arduino和STM32平台上&am…

作者头像 李华