资讯动态

VMware共享文件夹挂载实践:HGFS与vmhgfs-fuse详解

发布时间:2026/9/19 23:01:29 来源:尧图企业网站定制
简介面向需要在VMware虚拟机中与Linux系统互传文件的开发、测试人员这份PDF图文教程完整演示了主机与虚拟机共享文件夹的配置流程。内容从开启VMware共享文件夹功能、安装VMware Tools到挂载/mnt/hgfs目录并验证传输每一步都配有界面截图和命令示例特别说明了Linux挂载与双系统挂载的区别可帮助读者避开常见坑点。资源包仅含1个PDF文件大小675KB便于随时查阅。已有5099人学习下载适合刚接触VMware或对共享目录配置不熟悉的初中级用户作为操作手册。教程同时总结了安装vmware-install.pl时的yes/no选项处理思路读者按图索骥即可完成配置有效提升主机与虚拟机间的文件交换效率。1. 主机和VMware里的Linux实现共享文件夹远比拖拽文件靠谱在Windows主机和VMware里的Linux虚拟机之间传文件很多人第一反应是拖拽或者开一个临时HTTP服务。拖拽对大文件经常中断传完还得去临时目录里找HTTP服务只救得了一时来回修改同一批文件时效率很低。VMware的共享文件夹功能把宿主机目录直接暴露给客户机让Linux像读本地盘一样读写主机文件两边看到的是同一份数据。这套机制依赖VMware Tools里的HGFS组件配置分主机侧添加共享、客户机侧挂载两步绕不开权限映射、自动挂载和重启失效这几个坎。下面用最小命令把整个流程跑通给出VMware Workstation的设置位置、vmhgfs-fuse挂载参数、systemd自动挂载和排障步骤。适合三类人不想靠U盘拷文件的虚拟机新手、需要在Windows和Linux间共享同一份代码库的开发者、接手虚拟机后发现共享文件夹失效的运维。2. 先搞懂HGFS与vmhgfs-fuseVMware的共享文件夹为什么依赖这两个组件2.1 HGFS不是网络共享而是客户机里的一个虚拟文件系统VMware的共享文件夹底层走的是HGFSHost-Guest File System协议它不走Windows的SMB/CIFS协议栈也不占用宿主机的网络端口。在Linux客户机里HGFS呈现为一个文件系统类型早期版本用内核模块vmhgfs配合mount -t vmhgfs使用现在VMware Workstation主推FUSE用户态方案也就是vmhgfs-fuse这个命令。这套机制依赖VMware Tools中的两个关键部分vmtoolsd负责在虚拟机内部和宿主机通信告诉客户机宿主机开启了哪些共享vmhgfs-fuse负责把HGFS协议翻译成POSIX文件操作。换句话说宿主机侧只是在VMware自己的配置里加了一条共享并不弹出让Windows共享文件夹的对话框。Linux侧看到的/mnt/hgfs目录也不是手动建了个空目录而是通过FUSE挂载点映射出来的逻辑视图。这里有个容易混淆的点如果你把VMware共享文件夹和Windows网上邻居当成一回事后面排查问题的思路就会跑偏。HGFS里没有“网络凭证”这个概念不存在账号密码验证权限完全由挂载参数和宿主机文件系统的ACL决定这也是它在虚拟机场景下比SMB更省事的原因。2.2 为什么优先选open-vm-tools而不是“安装VMware Tools”菜单VMware Workstation菜单栏里的“安装VMware Tools”会向虚拟机挂载一个ISO里面是官方二进制包。日常使用中我更推荐直接装发行版自带的open-vm-tools原因有三个。第一open-vm-tools是VMware开源并随主流Linux发行版维护的版本内核升级时由发行版同步适配不会出现“内核版本太新vmhgfs模块编不过”的尴尬。第二省去每次换内核后重新编译的步骤apt、yum直接管理卸载干净。第三桌面发行版里open-vm-tools-desktop还额外带剪贴板共享、拖拽和分辨率自适应功能上覆盖了大多数人用VMware Tools的诉求。装包时注意区分基础版和桌面增强版。Ubuntu或Kali这种Debian系执行apt install open-vm-tools-desktopRHEL系执行yum install open-vm-tools-desktop。只跑命令行服务的精简系统装open-vm-tools就够。需要说明的是open-vm-tools和VMware Tools ISO版不能同时装两个服务的守护进程会抢占同一套HGFS通道症状表现为共享文件夹时有时无后面排障时先确认这一点。2.3 动手前先查几个命令确认环境是完整的配置共享文件夹之前先花一分钟确认客户机里的VMware Tools确实活着。在Linux终端里跑下面三行# 检查FUSE内核模块是否已加载有些精简系统默认没开 lsmod | grep fuse # 检查vmhgfs-fuse是否存在它属于open-vm-tools的组件 which vmhgfs-fuse # 列出宿主机已经开放的共享名没有输出则说明主机侧还没配置 vmware-hgfsclientlsmod | grep fuse有输出说明FUSE可用kernel 3.18以后基本默认开启但容器化精简内核可能被裁掉。which vmhgfs-fuse能定位到挂载命令的安装位置找不到说明open-vm-tools装得不完整或其桌面版组件缺失。最关键的是vmware-hgfsclient这个命令直接读取宿主机下发的HGFS配置如果它输出为空后面怎么挂载都是白费力气——先回宿主机侧把共享加好再回来验证。这三条命令可以作为每次排障的起点省去盲改权限的无效操作。3. 主机侧配置在VMware Workstation里启用共享文件夹并设置读写参数3.1 从虚拟机设置到共享名命名的完整路径在VMware Workstation里开启共享文件夹路径很固定。先关闭Linux虚拟机或保持在关机状态然后按下图菜单顺序操作选中虚拟机名称点击“编辑虚拟机设置”切到“选项”标签页左边列表找到“共享文件夹”右侧选择“总是启用”接着点“添加”按钮启动添加共享文件夹向导。向导会让你选宿主机路径和虚拟机内的名称。宿主机路径建议选一个独立的、专门用作交换的目录比如D:\shared\vm不要直接共享整个C盘避免客户机里的误操作波及系统文件。虚拟机内的名称字段填一个简短的小写英文名比如shared这个名字会在Linux挂载时作为路径的一部分使用。如果填了中文名或带空格的名称后面写fstab和执行vmhgfs-fuse时需要做额外转义很容易在自动挂载时踩坑。配置文件里这一步的作用是把宿主机路径和一个逻辑共享名绑定并通过vmtoolsd通知客户机。所以每次修改共享配置后最好重启虚拟机或者在系统里重启vmtoolsd服务再重新挂载。只新增共享不重启也行但对刚开始使用的人重启一次能排除掉大量“配置了但没生效”的干扰项。3.2 勾选“只读”之前想清楚你的使用场景添加向导过程中有一项“启用此共享”和可勾选的“只读”选项。默认情况是读写模式这也是日常开发最常用的方式。什么时候勾只读如果你希望客户机能读取安装包、日志产物但不允许它改动宿主机上的原始文件建议勾上只读给客户机加一道保险。读写模式下客户机所做的所有文件修改都直接落在宿主机磁盘上删除文件同样不可逆。Linux客户机里的rm -rf和宿主机上的删除效果相同不会因为它是虚拟机就给第二道确认。所以共享一个重要工程目录前先在Windows侧把这个目录加入文件历史或备份计划。VMware自己的快照只能备份虚拟机磁盘状态不能实时备份HGFS映射的宿主机目录内容这两件事不要混为一谈。3.3 共享名与挂载点的对应关系避开默认路径的坑宿主机侧配置完成后Linux客户机里通常会在/mnt/hgfs目录下看到以共享名命名的子目录。这个/mnt/hgfs是VMware Tools的默认挂载点布局vmware-hgfsclient输出的每个名字都对应这个目录下的一个条目。很多人在这一步遇到“看不到目录”的问题原因是open-vm-tools有时不会主动创建和挂载/mnt/hgfs需要手动执行挂载命令。这属于正常情况不代表配置失败。后面第四章会给出完整的手动挂载命令。这里记住一条原则/mnt/hgfs只是约定俗成的挂载点你可以把共享挂到任何空目录比如/home/你的用户名/shared挂载点完全由你决定不会被VMware限制。这一点在后续做权限隔离时特别管用比如给每个服务单独建挂载点并指定不同的uid/gid。4. Linux客户机侧挂载从最小命令到开机自动挂载4.1 安装open-vm-tools给HGFS提供用户态组件在Debian系发行版Ubuntu、Kali里执行# 更新软件源索引 sudo apt update # 安装桌面增强版包含vmhgfs-fuse和剪贴板共享 sudo apt install -y open-vm-tools-desktopRHEL系发行版Rocky Linux、AlmaLinux、Oracle Linux用# 安装桌面增强版 sudo dnf install -y open-vm-tools-desktop这里特意选择open-vm-tools-desktop而不是基础版open-vm-tools因为它额外包含拖拽、剪贴板共享和显示驱动适配这些都是桌面环境的刚需。如果你跑的是无桌面服务器装基础版即可挂载共享文件夹需要的vmhgfs-fuse两个版本里都有。安装完成后启动服务并确认sudo systemctl enable --now vmtoolsd systemctl status vmtoolsd --no-pager4.2 手动挂载vmhgfs-fuse的最小命令与参数语义装好open-vm-tools后手动挂载是最快的验证方式# 创建挂载点目录 sudo mkdir -p /mnt/hgfs # 将宿主机共享shared挂载到/mnt/hgfs # .host:/ 后面跟的是宿主机侧填写的共享名称 sudo vmhgfs-fuse .host:/shared /mnt/hgfs -o allow_other,uid1000,gid1000,umask022命令里的.host:/shared是HGFS的固定路径语法.host代表宿主机shared是Windows侧填写的虚拟机内名称。允许allow_other让非root用户也能访问挂载点如果你不写这个参数默认只有执行挂载命令的用户能访问其他用户会得到Permission denied。uid1000,gid1000把挂载点内文件的属主映射成当前普通用户umask022让目录权限为755、文件权限为644。如果当前用户不是1000先用id -u查一下真实uid再填。老内核版本也可以尝试sudo mount -t vmhgfs .host:/shared /mnt/hgfs这个命令依赖内核模块vmhgfs在kernel 4.x之后逐渐被vmhgfs-fuse替代。如果你用的是新发行版直接认准vmhgfs-fuse不要把两种方式混着用。挂载后立即验证# 查看挂载状态 mount | grep hgfs # 在共享目录里写入测试文件 touch /mnt/hgfs/hello_from_linux.txt随后回到Windows侧打开D:\shared\vm确认能看到这个测试文件。看到文件说明数据通路已经打通。4.3 开机自动挂载用systemd unit替代fstab解决重启后失效fstab里写一行vmhgfs-fuse的挂载条目看起来最省事但实际操作中经常遇到重启后挂载失败的情况。原因在于fstab在系统初始化早期阶段执行那时候vmtoolsd服务可能还没起来HGFS通道尚未建立挂载自然失败。这是共享文件夹重启后失效最常见的根源不是你的命令写错了。我推荐用systemd的mount unit来管理它可以通过After和Requires声明依赖关系确保vmtoolsd先启动再挂载。创建一个unit文件# 创建systemd挂载单元文件 sudo vim /etc/systemd/system/mnt-hgfs.mount内容如下[Unit] DescriptionMount VMware shared folder # 等vmtoolsd运行后再尝试挂载 Aftervmware-tools.service Requiresvmware-tools.service [Mount] # 这里路径里的-号代替/所以mnt-hgfs代表/mnt/hgfs What.host:/shared Where/mnt/hgfs Typefuse.vmhgfs-fuse Optionsallow_other,uid1000,gid1000,umask022 [Install] WantedBymulti-user.target启用并测试# 重新加载systemd配置 sudo systemctl daemon-reload # 立即执行挂载不要等到重启 sudo systemctl start mnt-hgfs.mount # 设为开机启动 sudo systemctl enable mnt-hgfs.mount单元文件名必须与挂载点对应/mnt/hgfs转写成mnt-hgfs.mount这是systemd的硬性规则写错会直接报单元不存在的错误。4.4 权限参数速查与多用户场景调整不同场景下挂载参数可以微调下面这张表覆盖常见需求参数作用常用值uid文件属主uid用id -u查1000gid文件属组gid用id -g查1000umask权限掩码022表示755/644022/002allow_other允许挂载点被非root用户访问固定加nonempty允许挂载点上已有文件非必要不加极少用多人共用同一台Linux虚拟机时可以再建一个共享用户组把需要访问共享目录的用户追加进组然后设置gid共享组gid,umask0007让组内用户有完整读写权组外用户完全不可见。宿主机侧的NTFS权限对Linux用户看不到但Windows设置的只读属性会映射为只读虚拟机内怎么chmod都不生效这点要先到宿主机确认属性。5. 验证与排错权限不够、共享消失、重启失效的三个处理技巧5.1 写测试文件确认双向连通别只盯着挂载输出配置完成后从Linux侧写文件、从Windows侧读回来是最稳妥的验证方式。只执行mount | grep hgfs看到挂载点不够因为FUSE挂载可能成功但读写权限映射错误导致实际不可用。# 写文件并校验内容 echo shared folder test /mnt/hgfs/verify.txt cat /mnt/hgfs/verify.txt # 检查文件权限是否符合预期 ls -l /mnt/hgfs/verify.txtWindows侧能看到verify.txt且内容正确整个链路才算真正打通。之后可以反向从Windows复制一个文件到共享目录再在Linux侧用ls /mnt/hgfs确认可见。双向验证都通过再继续做自动挂载和权限微调避免把基础问题带到后面。5.2 “共享文件夹不见了”的三个排查步骤遇到Linux里找不到共享文件夹按以下顺序排查基本能覆盖绝大多数情况第一步先跑vmware-hgfsclient。这个命令没有输出说明宿主机侧配置没下发检查虚拟机是否在VMware Workstation的共享文件夹设置里勾选了“总是启用”以及虚拟机名称和共享名是否填反。第二步确认vmtoolsd服务在线。systemctl status vmtoolsd显示非running状态时重启服务sudo systemctl restart vmtoolsd重新执行挂载命令。如果重启服务后仍然不行重启虚拟机让HGFS通道从头建立。第三步确认没有同时安装VMware Tools ISO版和open-vm-tools两个版本共存会导致HGFS服务抢占产生“宿主机地址解析正常但挂载点消失”的怪现象。5.3 “权限不够”和“重启失效”的区别处理Permission denied有两种来源挂载参数没加allow_other导致非挂载者被拒以及uid/gid映射到错误用户。前者重挂载就能解决后者需要先确认当前用户uid并调整参数调整方式在4.4节已经给出。重启失效的坑和CIFS挂载重启失效的排查思路很相似都是网络或服务依赖先于挂载点就绪导致失败。CIFS里习惯在fstab加_netdevHGFS对应的方案就是4.3节的systemd unit通过Requiresvmware-tools.service卡住启动顺序。启用后可以执行reboot实测一次重启完直接检查mount | grep hgfs看到挂载记录才算真正解决。如果你是临时使用不想引入systemd配置也可以把挂载命令写进/etc/rc.local但rc.local在新系统里默认没有执行权限需要先chmod x不如systemd方案干净。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价