在我的桌面上,在 autofs NFS 挂载的主目录中,我尝试运行:
sw@client:~$ rm -fr ~/libraries/receiver/
rm: cannot remove '/home/sw/libraries/receiver/src/arduino/i2c-module/channels': Directory not empty
sw@client:~$ ls -al /home/sw/libraries/receiver/src/arduino/i2c-module/channels
total 8
drwxr-xr-x 2 sw users 4096 Nov 3 13:06 .
drwxr-xr-x 4 sw users 4096 Nov 3 13:06 ..
sw@client:~$
所以rm -rf
不会删除我的目录。如果我查看服务器,我可以看到它的问题:
sw@server:~$ ls -la ~/libraries/receiver/src/arduino/i2c-module/channels/
total 16
drwxr-xr-x 2 sw users 4096 Nov 3 13:06 .
drwxr-xr-x 4 sw users 4096 Nov 3 13:06 ..
-rw-r--r-- 1 sw users 7608 Nov 3 13:06 I2cChannel.hpp
sw@server:~$
所以有一个文件,客户端认为自己已经删除了,但是服务器却没有遵守。如果我等待 10 分钟,没有任何变化 - 这表明这不是缓存问题,除非我错过了一些东西。
如果我vi
在客户端上有问题的目录上使用,vi ~/libraries/receiver/src/arduino/i2c-module/channels
我可以看到I2cChannel.hpp
.然后,rm
工作正常 - 修复,直到下次。问题是,它发生在很多(但不是全部)目录中,例如当我执行 a 时make clean
,所以它把事情搞砸了。
或者,我可以使用touch
目录。这也解决了它。
显然,客户端和服务器之间出现了不同步。但是,什么?
有什么想法吗?
补充笔记:
sw@client:~$ mount | grep home
auto.home on /home type autofs (rw,relatime,fd=11,pgrp=1283,timeout=300,minproto=5,maxproto=5,indirect,pipe_ino=21134)
server:/export/home/sw on /home/sw type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.26.2,local_lock=none,addr=192.168.26.254)
sw@client:~$ uname -a
Linux client 5.15.0-84-generic #93-Ubuntu SMP Tue Sep 5 17:16:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
在服务器上:
sw@server:~$ uname -a
Linux server 5.10.0-23-686-pae #1 SMP Debian 5.10.179-1 (2023-05-12) i686 GNU/Linux
这种情况已经发生了几个月,但我一直在努力解决它,今天我已经厌倦了!以前没有发生过这种情况——我已经使用这种配置有一段时间了。几个月前,我将这个客户端的 HD 升级为 SSD,克隆了根文件系统 - 也许我搞砸了?但其他一切都很好。我正在尝试其他桌面之一,看看它是否发生在其他地方,所以我会报告我发现的情况;它很频繁,但间歇性的,所以意识到它可能不是可靠的证据。