1. 为什么需要共享文件夹?
在虚拟化环境中工作时,主机和虚拟机之间的文件共享是一个高频需求。作为一名长期使用VMware Workstation的开发者,我深刻体会到共享文件夹的重要性。想象一下这样的场景:你在Windows主机上用Visual Studio编写代码,但需要在Ubuntu虚拟机中编译和测试。如果没有共享文件夹,你就得反复通过U盘、网络传输或者邮件附件来搬运文件,效率极其低下。
VMware提供的共享文件夹功能完美解决了这个问题。它允许你将主机上的任意目录映射到虚拟机中,就像访问本地文件一样方便。这种机制基于VMware Tools中的HGFS(Host-Guest File System)驱动实现,性能远高于传统的Samba或SFTP共享。
2. 环境准备与基础配置
2.1 确认VMware Tools安装
在开始之前,必须确保Ubuntu虚拟机已安装最新版VMware Tools。打开终端执行:
bash复制vmware-toolbox-cmd -v
如果显示版本号(如12.1.5),说明已安装。若未安装,可以通过以下命令安装:
bash复制sudo apt update
sudo apt install open-vm-tools open-vm-tools-desktop
注意:老版本教程可能推荐使用
vmware-install.pl安装,但在现代Ubuntu上open-vm-tools是官方推荐方案。
2.2 创建主机共享目录
在Windows主机上创建一个专门用于共享的文件夹,例如D:\VM_Share。右键点击文件夹 > 属性 > 共享 > 高级共享,勾选"共享此文件夹"。
3. VMware虚拟机设置详解
3.1 配置共享文件夹
- 关闭Ubuntu虚拟机(重要!运行时修改可能不生效)
- 在VMware界面右键虚拟机 > 设置 > 选项标签页
- 选择"共享文件夹" > 点击"总是启用"
- 点击"添加"按钮,向导会引导你选择主机目录
- 输入共享名称(如
ubuntu_share),建议使用英文无空格命名 - 勾选"启用此共享"和"只读"(按需选择)
专业提示:如果需要在虚拟机中修改主机文件,务必取消"只读"选项。但要注意这可能导致意外覆盖重要文件。
4. Ubuntu端挂载配置
4.1 验证共享可见性
启动Ubuntu后,打开终端输入:
bash复制vmware-hgfsclient
这个命令会列出所有可用的共享文件夹名称。如果看到你设置的名称(如ubuntu_share),说明基础配置正确。
4.2 手动挂载共享文件夹
创建一个挂载点目录:
bash复制sudo mkdir -p /mnt/hgfs
执行挂载命令:
bash复制sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=1000 -o gid=1000 -o umask=022
参数解析:
allow_other:允许非root用户访问uid=1000和gid=1000:映射到你的主用户(通过id命令可查)umask=022:设置文件权限掩码
验证挂载:
bash复制ls /mnt/hgfs
应该能看到你的共享文件夹名称。
5. 实现开机自动挂载
5.1 修改fstab文件
编辑/etc/fstab配置文件:
bash复制sudo nano /etc/fstab
在文件末尾添加:
bash复制.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,uid=1000,gid=1000,umask=022 0 0
重要安全提示:确保uid和gid与你的用户匹配(通常1000是第一个创建的用户)。
5.2 验证自动挂载
重启虚拟机后,执行:
bash复制mount | grep hgfs
应该能看到类似输出:
code复制.host:/ on /mnt/hgfs type fuse.vmhgfs-fuse (rw,relatime,user_id=0,group_id=0,allow_other)
6. 高级配置与故障排除
6.1 权限问题解决方案
如果遇到权限不足的问题,可以尝试:
bash复制sudo chown -R $USER:$USER /mnt/hgfs
对于特定共享文件夹:
bash复制sudo chmod -R 755 /mnt/hgfs/ubuntu_share
6.2 常见错误排查
问题1:执行vmware-hgfsclient无输出
- 解决方案:确认VMware Tools已正确安装,虚拟机设置中共享文件夹已启用
问题2:挂载后显示"Transport endpoint is not connected"
- 解决方案:先卸载再重新挂载
bash复制sudo umount /mnt/hgfs sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other
问题3:开机自动挂载失败
- 解决方案:检查/etc/fstab语法是否正确,特别是逗号后不能有空格
7. 性能优化建议
- 对于大型项目文件,建议在虚拟机中直接工作,避免频繁跨系统访问
- 可以设置排除列表,避免同步临时文件和构建目录
- 定期清理.host:/下的缓存文件
经过多年使用,我发现这套配置在Ubuntu 18.04到22.04各版本上都能稳定工作。最关键的是确保VMware Tools版本与Workstation版本匹配。当升级VMware主程序后,最好也同步升级Tools。