描述: 我的虛擬機器使用 NFS 時遇到了一個奇怪的問題。我的兩台虛擬機器都使用 Linux。伺服器端使用 RHEL,客戶端使用 CentOS 7。
我的客戶端虛擬機器正在使用 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 的作用是擴展檔案系統以通知檔案系統的更改,並將這些更改報告給應用程式。遺憾的是,由於 bug,nodejs 無法偵測到這些更改虛擬盒子這涉及到 Linux 核心子系統 inotify。