'Stale file handle' macOS Catalina 上的 Vagrant 错误

'Stale file handle' error with Vagrant on macOS Catalina

将 macOS 更新到 Catalina 后,外部 SSD 上的 Vagrant 项目停止工作。尝试访问挂载文件夹中的文件列表会出现错误 - 'Stale file handle'。同时,位于本地磁盘的项目添加到挂载路径/System/Volumes/Data/后工作。有人可以帮忙吗?

我能够通过以下方式完成工作:

1 - sudo rm /etc/exports

2 - 在 Vagrantfile 上更改 synced_folder 上的配置以使用 Catalina 新模式中的绝对路径。

例如: directory = "<project_path>" config.vm.synced_folder "/System/Volumes/Data#{directory}", "/vagrant", :nfs => true, :mount_options => ['actimeo=2']

3 - 运行 vagrant destroy -f && vagrant up

一切顺利!

添加“/System/Volumes/Data”仅对本地文件系统上的项目有帮助。这个错误在上一个 Vagrant 版本中得到修复。但是对于外部驱动器上的项目,问题是实际的。

我找到了一个不太漂亮但可行的解决方案:

  1. 从 /etc/exports 中删除旧的 Vagrant 行并添加到 /etc/exports:

/Volumes/SSD/DEV/dirname/www -alldirs -mapall=501:20 192.168.33.10

  1. sudo nfsd 重启
  2. showmount -e

您必须看到正确的挂载列表: /Volumes/SSD/DEV/dirname/www 192.168.33.10

  1. 编辑 Vagrantfile

config.vm.synced_folder "/Volumes/SSD/DEV/dirname/www", "/var/www", 输入: "nfs", nfs_export: false

默认情况下 vagrant 将你的目录挂载到 /vagrant 文件夹,但如果你想挂载到其他目录,请添加到 provision 部分: sudo mount -o vers=3,udp 192.168.33.1:/Volumes/SSD/DEV/dirname/www /var/www