描述: 我在使用 NFS 的虚拟机上遇到了一个奇怪的问题。我的两个虚拟机都使用 Linux。服务器端使用 RHEL,客户端使用 CentOS 7。我的主机运行的是 Windows 7。
我的客户端 VM 正在使用 nodejs 启动或初始化网站。我创建了一个文件夹目录,服务器端和客户端都可以使用 NFS 共享文件。
问题: 当我从客户端的共享目录创建文件/文件夹时,网站能够检测到共享目录的变化并在网站上发布该变化。
然而,在服务器端,当我在共享目录中创建文件/文件夹时,网站无法检测到更改。尽管从客户端可以看到共享目录中创建的文件/文件夹。
NFS 配置: 我将粘贴我为服务器和客户端所做的配置:
/etc/exports 上的服务器端 NFS 配置:
/home/awsim2/config 192.168.56.101(rw,sync,no_root_squash,no_all_squash,no_subtree_check)
/home/awsim2/scenarios 192.168.56.101(rw,sync,no_root_squash,no_all_squash,no_subtree_check)
#/home/awsim2/config 192.168.56.101(rw,sync,all_squash,anonuid=503,anongid=502)
#/home/awsim2/scenarios 192.168.56.101(rw,sync,all_squash,anonuid=503,anongid=502)
注意:我尝试了其他方法来解决这个问题......
/etc/fstab 上的客户端 NFS 配置:
192.168.56.102:/home/awsim2/config /var/nfs_awsim_share/ nfs rw,sync,user,auto,bg,hard,intr,nolock 0 0
192.168.56.102:/home/awsim2/scenarios /var/nfs_awsim_scenarios_share/ nfs rw,sync,user,auto,bg,hard,intr,nolock 0 0
我希望这些信息足以解释我的问题。
感谢您的时间!
答案1
我做了足够的研究,发现 NFS 和共享目录方法不是一个可行的解决方案,因为 Linux 内核子系统 inotify 之间存在问题。inotify 的作用是扩展文件系统以通知文件系统的更改,并将这些更改报告给应用程序。遗憾的是,nodejs 无法检测到这些更改,因为虚拟框与Linux内核子系统inotify有关。