变更记录:
2023-08-15,修正了nas挂载时的描述信息(删除线的文字为移除,加粗的为新增,正文中则以调整后的描述):
[nas盘ip或域名]:[nas盘路径别名 ] [本地nas盘路径别名] nfs 0 0
[nas盘ip或域名]:[nas盘路径别名] [本地nas盘路径别名] nfs noac 0 0
umount [本地nas盘路径别名]
mount [本地nas盘路径别名]
项目场景:
A应用生成文件,通过http请求通知B应用文件路径。A和B挂载相同的NAS共享目录。
问题描述:
A应用第一次通知B应用时,B应用报错,提示no such file。在代码无改动的情况下,过一段时间再通知,B应用正常处理文件。
{"code":9999,"result":null,"message":"【xxxx通知文件下载影像目录】不存在","success":false}
原因分析:
这是由于NAS的缓存机制导致的,具体原理参考以下链接博客。
NAS读取延时问题及NFS缓存机制 https://blog.csdn.net/qq_31896123/article/details/111161845
解决方案:
在NAS盘挂载选项中添加 noac,意思是不使用缓存机制。
原来默认是ac,默认值是可以不填的。
使用root权限vi /etc/fstab, 添加 noac选项。
修改前(ip和路径使用中文说明,避免侵权):
[nas盘ip或域名]:[nas盘路径] [本地nas盘路径别名] nfs 0 0
修改后(ip和路径使用中文说明,避免侵权):
[nas盘ip或域名]:[nas盘路径] [本地nas盘路径别名] nfs noac 0 0
修改完成后需要重新挂载NAS盘。
卸载NAS命令:
umount [本地nas盘路径别名]
挂载NAS命令:
mount [本地nas盘路径别名]
总结:
文中的链接博客里说的比我的详细,我这边是采取的不缓存,可能业务需求不同吧。
既然设计者默认采用缓存策略,一定有他的用意,只是我等低阶码农无法参透而已。