在AI和深度学习的本地开发环境中,我们经常使用VMware Workstation或Fusion运行Ubuntu虚拟机来训练或测试模型。将宿主机(Host,通常是Windows/macOS)上的数据集或配置文件快速传输到客户机(Guest,Ubuntu)的最佳方式就是使用VMware的共享文件夹功能(Shared Folders)。然而,许多用户启用该功能后,却发现预期的文件夹路径
1 | /mnt/hgfs |
根本是空的,或者压根就没有该目录。
这个问题通常不是由于VMware设置错误,而是Ubuntu客户机中缺少必要的驱动或自动挂载服务未正确启动。
1. 确认基础环境:VMware Tools
VMware Tools(在现代Linux系统中通常以
1 | open-vm-tools |
的形式存在)是实现共享文件夹功能的核心。如果只安装了基础工具,可能缺少桌面或文件系统所需的组件。
首先,确保安装了完整的工具集,尤其是
1 | open-vm-tools-desktop |
,它包含了必要的GUI和文件共享功能。
1
2
3
4
5 sudo apt update
sudo apt install open-vm-tools open-vm-tools-desktop -y
# 安装完成后,重启系统以确保所有服务启动
sudo reboot
2. 检查默认挂载点和驱动状态
重启后,共享文件夹理应出现在
1 | /mnt/hgfs |
目录下。如果该目录不存在或为空,说明文件系统驱动
1 | vmhgfs |
没有正确工作或自动挂载失败。
步骤 2.1:创建挂载点
确保
1 | /mnt/hgfs |
目录存在,如果不存在,手动创建它。
1 sudo mkdir -p /mnt/hgfs
步骤 2.2:使用
1 | vmhgfs-fuse |
进行手动挂载(最可靠的解决方案)
由于旧版
1 | vmhgfs |
内核模块在某些新版Ubuntu内核上可能出现兼容性问题,VMware推荐使用基于FUSE(Filesystem in Userspace)的解决方案
1 | vmhgfs-fuse |
。
如果共享文件夹名为
1 | DevData |
(在VMware设置中定义的名称),你可以使用以下命令手动挂载它:
1
2
3
4
5 # 格式: sudo mount -t fuse.vmhgfs-fuse .host:/<共享文件夹名称> <挂载点> -o allow_other
# 示例:挂载名为 'DevData' 的共享文件夹到 /mnt/DevData
sudo mkdir -p /mnt/DevData
sudo mount -t fuse.vmhgfs-fuse .host:/DevData /mnt/DevData -o allow_other,uid=$(id -u),gid=$(id -g)
注意:
1 -o allow_other选项确保非root用户也能访问,
1 uid和
1 gid选项则保证了文件的读写权限与当前用户匹配,这对于AI工程师读写数据集至关重要。
3. 设置永久自动挂载(Fstab 配置)
手动挂载在系统重启后会失效。为了方便部署和持续开发,我们需要将其配置到
1 | /etc/fstab |
文件中,实现开机自动挂载。
警告: 错误配置
1 | /etc/fstab |
可能导致系统无法启动,请务必谨慎操作,并在编辑前备份文件。
1
2
3
4
5 # 备份 fstab
sudo cp /etc/fstab /etc/fstab.bak
# 使用 nano 或 vim 编辑 fstab
sudo nano /etc/fstab
在文件末尾添加以下一行配置,假设你的共享文件夹名为
1 | DevData |
,并希望挂载到
1 | /mnt/DevData |
:
1
2 # VMware Shared Folder Entry (DevData)
.host:/DevData /mnt/DevData fuse.vmhgfs-fuse defaults,allow_other,uid=1000,gid=1000 0 0
提示: 请将
1 uid=1000,gid=1000替换为你当前用户的实际UID和GID。在终端中运行
1 id -u和
1 id -g即可获取。
保存并关闭文件后,执行以下命令测试配置是否正确,它会尝试重新挂载所有
1 | fstab |
中定义的项:
1 sudo mount -a
如果命令没有报错,并且你在
1 | /mnt/DevData |
中看到了宿主机的文件,那么恭喜你,问题已彻底解决,你的AI开发环境现在可以高效地在Host和Guest之间共享数据了。
汤不热吧