找到这个问题的解决方案尤其困难,因为网上的大多数资源都是在鼓吹umount -f
或umount -l
(或umount -fl
)采用这种方法。就我而言,这种方法行不通。
# uname -a
Linux nanoxen 3.10.0+2 #1 SMP Wed Mar 11 11:20:46 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux
# lsb_release -a
LSB Version: :core-4.0-amd64:core-4.0-noarch
Distributor ID: XenServer
Description: XenServer release 6.5.0-90233c (xenenterprise)
Release: 6.5.0-90233c
Codename: xenenterprise
# cat /proc/fs/nfsfs/volumes
NV SERVER PORT DEV FSID FSC
v3 c0a8035e 801 0:21 e4a6f662369dc558 no
v3 c0a80726 801 0:20 bb4ff13aad86bb0e no
v3 c0a8023f 801 0:22 e4a6f662369dc558 no
# umount -fl /var/run/sr-mount/589b5772-0c84-45df-af71-4882160b64d7
umount: /var/run/sr-mount/589b5772-0c84-45df-af71-4882160b64d7: Stale NFS file handle
据我所知,stale filehandle
当文件系统 ID 发生变化时,就会出现问题。所以我希望能够为 NFS 客户端制作一个正确的响应,该响应包含正确的文件系统 ID。我尝试这样做,但在 scapy 代码中迷失了方向。
我还发现,可以在 NFS 服务器上的 /etc/exports 文件中指定任意 fsid。但我仍然无法创建具有匹配 fsid 的导出!手册说 /etc/exports 中的 fsid 应该是 32 个十六进制数字或小整数。我从 /proc/fs/nfsfs/volumes 获得的数字是 16 个十六进制数字,所以太短了。将其转换为整数也不起作用。
编辑:
# grep /var/run/sr-mount/589b5772-0c84-45df-af71-4882160b64d7 /proc/mounts
share1:/mnt/iso/export /var/run/sr-mount/589b5772-0c84-45df-af71-4882160b64d7 nfs rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=2049,timeo=600,retrans=2,sec=sys,local_lock=none,addr=192.168.3.94 0 0