如何在不重启的情况下卸载旧的 XenServer 内核上的 nfs(陈旧的文件句柄)?

如何在不重启的情况下卸载旧的 XenServer 内核上的 nfs(陈旧的文件句柄)?

找到这个问题的解决方案尤其困难,因为网上的大多数资源都是在鼓吹umount -fumount -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

相关内容