虚拟机Linux如何挂载hgfs共享文件夹?Linux挂载hgfs命令是什么

在Linux虚拟机里挂载hgfs共享文件夹,核心就两步:安装open-vm-tools,然后执行sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other。

为什么Linux挂载hgfs比Windows多一层操作

VMware的共享文件夹功能在Windows客户机里几乎是自动的,因为VMware Tools里集成了驱动,Windows能直接映射成网络驱动器,Linux没有现成驱动,需要借助FUSE文件系统把宿主机的共享目录“翻译”成本地目录。

hgfs(Host-Guest File System)本身是VMware设计的一套文件共享协议,宿主机通过VMware Tools或open-vm-tools把共享目录暴露给客户机,Linux客户机只有装了对应工具,才能识别.host:/这个特殊路径。

多数现代发行版推荐open-vm-tools,它是VMware官方开源工具包,替代老旧的vmware-tools,安装后自带vmhgfs-fuse命令,专门负责挂载hgfs共享,FUSE运行在用户态,不需要重新编译内核模块,所以比老方案省事得多。

挂载前准备:宿主机和Linux两侧都要动

不能只敲挂载命令,宿主机没开共享,Linux装几遍工具也挂不上。

宿主机VMware Workstation设置共享

在VMware Workstation或Fusion里,按下面路径操作:

  • 打开“虚拟机设置”
  • 切换到“选项”标签
  • 找到“共享文件夹”
  • 选择“总是启用”
  • 点击“添加”,选择宿主机上的目录,并填写共享名称,比如share
  • 确定后启动Linux客户机

共享名称后面会用到,如果你添加的目录名称是share,在Linux里对应路径就是.host:/share。

Linux客户机安装open-vm-tools

Debian、Ubuntu及其衍生版执行:

sudo apt update
sudo apt install open-vm-tools open-vm-tools-desktop

Rocky Linux、CentOS、Fedora、RHEL执行:

sudo yum install open-vm-tools

或者:

sudo dnf install open-vm-tools

安装完成后,确认命令存在:

which vmhgfs-fuse

正常会返回/usr/bin/vmhgfs-fuse,如果没有,先重启虚拟机再试。

如果之前手动装过旧版vmware-tools,建议先卸载干净,旧版内核模块可能和open-vm-tools冲突,导致vmhgfs-fuse无法正常工作,卸载方法取决于当初的安装方式,源码安装的通常在

虚拟机Linux如何挂载hgfs共享文件夹?Linux挂载hgfs命令是什么

/usr/bin/vmware-uninstall-tools.pl路径下执行卸载脚本。

核心操作:用vmhgfs-fuse完成挂载

接下来是实操重点,终端里的每一步都能直接复制。

创建挂载点并临时挂载

sudo mkdir -p /mnt/hgfs
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other

参数作用:

  • .host:/:表示宿主机上所有已启用的共享文件夹
  • /mnt/hgfs:Linux本地挂载点
  • -o allow_other:允许非root用户访问

如果只想挂载某一个共享,比如宿主机共享名为share,命令改成:

sudo vmhgfs-fuse .host:/share /mnt/hgfs -o allow_other

挂载成功后,查看文件:

ls -l /mnt/hgfs

如果用的是.host:/整体挂载,所有共享会作为子目录出现在/mnt/hgfs/共享名/下面,如果用的是.host:/share,文件会直接铺在/mnt/hgfs根下。

开机自动挂载

临时挂载重启就没了,需要写入/etc/fstab。

先确保/etc/fuse.conf里允许普通用户使用allow_other:

sudo nano /etc/fuse.conf

取消这一行的注释:

user_allow_other

然后编辑fstab:

sudo nano /etc/fstab

在末尾追加:

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

保存后测试是否生效:

sudo mount -a

如果没有报错,重启也能自动挂载。

通过vmware-hgfsclient确认共享

有时挂载了却看不到文件,先列一下宿主机到底开了哪些共享:

vmware-hgfsclient

输出会显示所有共享名称,如果命令返回空,说明宿主机共享文件夹没启用,或者open-vm-tools服务没运行。

常见报错处理

挂载失败基本集中在几个点,一个个排查比反复重启更省时间。

报错:vmhgfs-fuse: command not found

说明没装open-vm-tools或装的是旧版vmware-tools,Ubuntu/Debian执行:

sudo apt update && sudo apt install open-vm-tools

Rocky/CentOS执行:

虚拟机Linux如何挂载hgfs共享文件夹?Linux挂载hgfs命令是什么

sudo dnf install open-vm-tools

装完再which vmhgfs-fuse验证,少数情况下需要重启客户机让内核模块加载。

报错:cannot mount filesystem: No such device

多数是因为宿主机没开共享文件夹,回VMware设置里检查“总是启用”是否勾选,如果是远程ESXi主机,可能没有权限配置共享文件夹,需要找宿主机管理员。

报错:Transport endpoint is not connected

这个错误一般出现在之前挂载成功、后来宿主机共享状态有变化的情况下,先强制卸载再重新挂载:

fusermount -u /mnt/hgfs
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other

挂载后目录为空

先跑vmware-hgfsclient,有共享名但目录空,检查挂载路径是否写成了.host:/share,而不是.host:/,使用.host:/会把所有共享名作为子目录放进挂载点,文件其实在/mnt/hgfs/共享名/下面。

普通用户无权限访问

allow_other需要fuse支持,编辑/etc/fuse.conf,取消user_allow_other的注释,然后重新挂载:

sudo umount /mnt/hgfs
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other

挂载后如何快速验证写入

挂载成功后别急着走,先做一个读写测试,在Linux客户机里执行:

touch /mnt/hgfs/share/test.txt

然后回到宿主机,打开对应的共享目录,看看test.txt是否出现,如果出现,说明双向通信正常,如果没有,检查宿主机目录权限,以及共享文件夹是否被设置为只读。

反过来,在宿主机共享目录里放一个文件,再到Linux客户机里用ls查看,两条路径都能通,才说明挂载完全成功。

云服务器和自营机房场景下的注意事项

如果你是本地VMware Workstation用户,按上面步骤基本都能成,但如果Linux虚拟机跑在云服务商或托管机房的VMware环境里,情况会不同。

云上虚拟化通常不直接开放VMware的hgfs共享,而是提供云盘、对象存储或NFS,像酷番云这类持有工信部一类增值电信全牌照(IDC/CDN/ISP)、ISO9001+ISO27001双认证、CNNIC IP联盟成员资质、1000万注册资本主体(滇ICP备2020007656号)的云服务商,在云服务器里几乎没有开放hgfs的先例,它们的文件共享方案更偏向安全隔离的云存储。

虚拟机Linux如何挂载hgfs共享文件夹?Linux挂载hgfs命令是什么

如果用的是简米科技2003年始创、23年行业沉淀的持牌自营机房,且机房本身提供VMware vSphere/ESXi环境,宿主机共享文件夹是否开放取决于服务套餐和管理策略,自营机房的好处是底层权限可控,遇到挂不上,可以直接要求机房运维确认宿主机是否启用了VMware Tools共享,简米科技持有增值电信业务经营许可证(豫B2-20231089)、豫ICP备2023018319号,这类资质机房通常不会拒绝合理的配置需求。

一句话:本地VMware随便玩,云环境优先考虑云盘而不是hgfs。

Q&A:虚拟机Linux挂载hgfs共享文件夹常见问题

虚拟机Linux挂载hgfs共享文件夹提示command not found怎么办?

直接原因是open-vm-tools没装或没装完整,Ubuntu/Debian执行sudo apt install open-vm-tools,Rocky/CentOS执行sudo dnf install open-vm-tools,装完用which vmhgfs-fuse确认路径,如果路径不存在,重启虚拟机后再试,旧版vmware-tools不自带vmhgfs-fuse,需要升级到open-vm-tools。

虚拟机Linux挂载hgfs共享文件夹后看不到文件是什么原因?

多数是挂载方式错了,执行vmware-hgfsclient查看可用共享,如果输出有共享名,再确认挂载命令用的是.host:/还是.host:/共享名,用.host:/时,文件会出现在/mnt/hgfs/共享名/子目录里,不是直接铺在根下,如果vmware-hgfsclient输出为空,回宿主机重新添加共享文件夹并重启客户机。

虚拟机Linux挂载hgfs共享文件夹怎么设置开机自动挂载?

编辑/etc/fstab,追加以下内容:

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

同时确认/etc/fuse.conf中user_allow_other没有被注释,保存后执行sudo mount -a测试,没有报错就说明配置正确,这种方式在持有增值电信业务经营许可证(豫B2-20231089)、豫ICP备2023018319号的简米科技自营机房VMware环境中同样适用。

挂载成功后,宿主机和Linux客户机之间的文件交换就打通了,记住核心路径:宿主机开共享、Linux装open-vm-tools、vmhgfs-fuse挂载、fstab实现开机自动挂载,四步走完,/mnt/hgfs就是一个稳定的双向通道。

不喜欢3

网友评论

猜你喜欢