栏目树
VM里linux挂载共享目录
在 Windows 11 + VMware + CentOS 8 环境中实现共享目录自动挂载,核心是通过 fstab 配置开机自动挂载(依赖 VMware Tools 提供的 vmhgfs-fuse 工具),步骤如下,全程实操验证可行:

前提条件(必须先完成)

  1. 已在 VMware 中设置文件夹共享(虚拟机设置 → 选项 → 共享文件夹 → 启用 → 添加 Windows 共享目录,记好共享名,比如 win_share)。
  2. CentOS 8 已安装 VMware Tools(或 Open-VM-Tools,推荐后者,兼容性更好):
    bash
    运行
    # 安装 Open-VM-Tools(CentOS 8 官方推荐替代 VMware Tools) sudo dnf install -y open-vm-tools open-vm-tools-desktop 
  3. 验证共享目录是否能被识别(确保 VMware 共享配置生效):
    bash
    运行
    vmware-hgfsclient # 执行后应输出你在 VMware 中设置的共享名(如 win_share) 
    若未输出共享名,先检查 VMware 共享文件夹是否启用、虚拟机是否重启,或重新安装 Open-VM-Tools。

步骤 1:创建 CentOS 本地挂载点

先在 CentOS 中创建一个目录作为共享目录的 “挂载入口”(路径自定义,比如 /mnt/win_share):
bash
运行
# 创建挂载点目录(权限默认即可,后续挂载后会继承共享目录权限) sudo mkdir -p /mnt/win_share 

步骤 2:测试手动挂载(验证配置可行性)

先手动挂载一次,确保 vmhgfs-fuse 工具和共享目录正常工作,避免直接配置自动挂载踩坑:
bash
运行
# 手动挂载命令(格式:vmhgfs-fuse 共享路径 本地挂载点) sudo vmhgfs-fuse .host:/win_share /mnt/win_share -o allow_other 
  • 说明:
    • .host:/win_sharehost 代表 Windows 主机,win_share 是你在 VMware 中设置的共享名(必须和 vmware-hgfsclient 输出一致)。
    • -o allow_other:允许非 root 用户访问挂载的共享目录(否则只有 root 能读写)。

验证手动挂载是否成功:

  1. 访问挂载点,查看 Windows 共享目录中的文件:
    bash
    运行
    ls /mnt/win_share 
  2. 若能看到 Windows 共享目录的文件,说明手动挂载正常;若报错(如 “权限不足”“找不到共享”),先排查:
    • 共享名是否正确(重新执行 vmware-hgfsclient 确认)。
    • Open-VM-Tools 是否安装完整(重新执行 dnf install open-vm-tools)。
    • Windows 共享目录是否设置了 “读写权限”(VMware 共享文件夹设置中选择 “读取 / 写入”)。

步骤 3:配置开机自动挂载(核心步骤)

通过修改 /etc/fstab 文件,让 CentOS 开机时自动执行挂载命令(fstab 是系统开机自动挂载配置文件)。

3.1 编辑 fstab 文件

bash
运行
# 用 vim 编辑 fstab(也可用 nano,需先安装:sudo dnf install nano) sudo vim /etc/fstab 

3.2 添加自动挂载配置

在 fstab 文件末尾添加一行(注意格式,字段用空格或制表符分隔):
plaintext
.host:/win_share  /mnt/win_share  fuse.vmhgfs-fuse  defaults,allow_other  0  0 
  • 字段说明(按顺序):
    1. .host:/win_share:共享源路径(主机 + 共享名,和手动挂载一致)。
    2. /mnt/win_share:本地挂载点(步骤 1 创建的目录)。
    3. fuse.vmhgfs-fuse:文件系统类型(固定值,依赖 VMware Tools)。
    4. defaults,allow_other:挂载参数(defaults 包含 rw、suid 等默认配置,allow_other 允许非 root 访问)。
    5. 0:dump 备份标记(0 表示不备份,1 表示备份,默认填 0)。
    6. 0:fsck 检查顺序(0 表示开机不检查,根目录填 1,其他分区填 2,默认填 0)。

3.3 保存退出 vim

按 Esc,输入 :wq,回车(若编辑错误,输入 :q! 放弃保存退出)。

步骤 4:验证自动挂载配置(关键)

修改 fstab 后,必须先测试配置是否正确,避免开机无法进入系统:
bash
运行
# 重新加载 fstab 配置,执行自动挂载 sudo mount -a 
  • 若执行后无报错,说明配置正确;
  • 若报错(如 “bad superblock”“invalid argument”),检查:
    • 共享名、挂载点路径是否写错;
    • fuse.vmhgfs-fuse 拼写是否正确;
    • 挂载参数是否多了逗号或空格。

再次验证挂载结果:

bash
运行
# 查看已挂载的文件系统,确认共享目录已挂载 df -h # 或直接访问挂载点 ls /mnt/win_share 
若能看到 Windows 共享文件,说明自动挂载配置生效。

步骤 5:测试开机自动挂载(最终验证)

重启 CentOS 虚拟机,确认重启后共享目录仍能正常访问:
bash
运行
# 重启虚拟机 sudo reboot # 重启后执行,验证挂载 ls /mnt/win_share 
若能正常看到共享文件,说明自动挂载成功!

常见问题排查

  1. 重启后挂载失败,执行 mount -a 才生效
    • 原因:CentOS 开机时,fuse 模块未加载,导致 vmhgfs-fuse 无法使用。
    • 解决:手动加载 fuse 模块并设置开机自动加载:
      bash
      运行
      # 手动加载 fuse 模块 sudo modprobe fuse # 设置开机自动加载 fuse 模块 echo "fuse" | sudo tee -a /etc/modules-load.d/fuse.conf 
  2. 非 root 用户无法访问挂载点
    • 原因:缺少 allow_other 参数,或 fuse 模块默认禁止非 root 访问。
    • 解决:
      1. 确保 fstab 中挂载参数包含 allow_other
      2. 编辑 fuse 配置文件,允许 allow_other
        bash
        运行
        sudo vim /etc/fuse.conf 
      3. 取消注释 user_allow_other 这一行(删除开头的 #),保存退出,重启虚拟机。
  3. vmware-hgfsclient 无输出(看不到共享名)
    • 检查 VMware 共享文件夹是否 “启用”(虚拟机设置 → 选项 → 共享文件夹 → 勾选 “启用共享文件夹”);
    • 虚拟机是否处于 “已开启” 状态(关闭虚拟机后修改共享配置,需重新开机生效);
    • 重新安装 Open-VM-Tools:sudo dnf reinstall open-vm-tools open-vm-tools-desktop
  4. 挂载时提示 “Permission denied”
    • Windows 共享目录的权限不足(在 Windows 中右键共享目录 → 属性 → 共享 → 高级共享 → 权限,给 “Everyone” 或当前 Windows 账号设置 “读写” 权限);
    • CentOS 挂载点目录权限不足(执行 sudo chmod 777 /mnt/win_share 临时测试,不建议生产环境用 777,可根据需求调整用户组权限)。
通过以上步骤,CentOS 8 会在每次开机后自动挂载 VMware 共享的 Windows 目录,无需手动执行挂载命令,兼顾稳定性和实用性。