hgfs: Transport endpoint is not connected 问题的解决方案

在vmware里跑了个centos 7虚拟机,用着用着发现vmtoolsd CPU占用率一直100%,kill -9杀掉后hgfs共享文件夹也出问题了。然后咨询了doubao,用 sudo umount -l /mnt/hgfs 解决了问题

记录一下:

当你在 Linux 系统中看到hgfs: Transport endpoint is not connected错误提示时,这通常和 VMware Tools 的共享文件夹功能(hgfs)出现故障有关。下面为你详细分析可能的原因以及对应的解决办法:

一、错误原因剖析

  1. VMware Tools 未正常运行:VMware Tools 服务可能没有启动,或者已经崩溃。
  2. 共享文件夹配置有误:在 VMware 虚拟机设置里,共享文件夹的配置可能存在问题。
  3. 内核模块缺失或不兼容:hgfs 内核模块没有正确加载,或者与当前内核版本不兼容。
  4. 挂载点状态异常:之前的挂载操作失败,导致挂载点处于不一致的状态。
  5. 系统服务启动顺序有问题:VMware Tools 服务的启动顺序可能不正确,在依赖服务启动之前就尝试挂载共享文件夹。

二、解决办法

1. 重新启动 VMware Tools 服务

 
 
# 停止并重新启动VMware Tools服务
sudo systemctl restart vmware-tools.service

# 检查服务状态
sudo systemctl status vmware-tools.service
 

2. 手动卸载并重新挂载共享文件夹

 
 
# 卸载所有hgfs挂载点(如果可能)
sudo umount -a -t hgfs

# 重新挂载共享文件夹
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=1000

# 或者使用mount命令(适用于较旧的VMware Tools)
sudo mount -t hgfs .host:/ /mnt/hgfs
 

3. 重建 VMware Tools

 
 
# 卸载现有的VMware Tools
sudo vmware-uninstall-tools.pl

# 重新安装VMware Tools
# 1. 在VMware菜单中选择"安装VMware Tools"
# 2. 挂载ISO文件
# 3. 解压并运行安装脚本
 

4. 检查并加载 hgfs 内核模块

 
 
# 检查hgfs模块是否已加载
lsmod | grep hgfs

# 手动加载模块(如果未加载)
sudo modprobe vmhgfs

# 如果加载失败,尝试重建模块
sudo vmware-config-tools.pl
 

5. 修复挂载点状态

 
 
# 强制卸载有问题的挂载点
sudo umount -f /mnt/hgfs

# 使用lazy选项卸载(如果普通卸载失败)
sudo umount -l /mnt/hgfs

# 清理挂载点目录
sudo rm -rf /mnt/hgfs/*
sudo mkdir -p /mnt/hgfs
 

6. 更新内核和 VMware Tools

 
 
 
# 更新系统
sudo yum update  # 针对CentOS/RHEL
sudo apt update && apt upgrade  # 针对Debian/Ubuntu

# 确保VMware Tools是最新版本
# 在VMware菜单中选择"检查VMware Tools更新"
 

7. 检查 VMware 虚拟机设置

  1. 关闭虚拟机,然后在 VMware 界面中选择 "虚拟机"→"设置"。
  2. 进入 "选项"→"共享文件夹",确认共享文件夹已启用,并且路径配置正确。
  3. 选择 "总是启用" 或 "手动挂载" 选项。

8. 临时解决方法(手动挂载)

 
 
# 创建挂载点
sudo mkdir -p /mnt/hgfs

# 使用fusermount手动挂载
sudo /usr/bin/vmhgfs-fuse -o subtype=vmhgfs-fuse,allow_other .host:/ /mnt/hgfs
 

三、预防措施

  1. 及时更新系统和 VMware Tools:保证系统和 VMware Tools 都处于最新状态,以避免兼容性问题。
  2. 避免内核版本不匹配:升级内核后,要重新安装 VMware Tools。
  3. 优化启动脚本:可以通过编辑/etc/rc.local文件,添加挂载命令,确保系统启动时共享文件夹能正确挂载。
  4. 使用 systemd 服务:创建自定义的 systemd 服务文件,控制共享文件夹的挂载顺序。

四、总结

解决hgfs: Transport endpoint is not connected错误,需要按照从简单到复杂的顺序逐步排查问题。首先检查服务状态,然后尝试重新挂载,接着修复内核模块,最后再考虑更新软件。只要按照上述步骤操作,通常可以解决共享文件夹挂载失败的问题。
posted @ 2025-06-16 17:09  windywater  阅读(646)  评论(0)    收藏  举报