最近在 XFS 文件系统上使用 NFS 时发现一些比较老的 Linux 客户端在挂载时会提示 stale file handle 错误,这似乎是服务器端的 NFS 共享文件夹信息不正确了,比较奇怪为什么新的 Linux 系统又是可以挂载使用的,准备一探究竟。
首先登录到服务器端(也是 Linux 系统,RHEL6 x86_64 服务器),查看 NFS 共享文件夹的状态(NFS 共享路径为 /nfs/share2):
/nfs # ls -dil *
259 drwxrwxrwx 2 root root 6 Jul 15 15:31 share1
4294967616 drwxrwxrwx 3 root root 24 Jul 15 16:09 share2
/nfs # ls -dil share2/*
8589934912 drwxrwxrwx 2 root root 24 Jul 15 16:09 share2/ppp
/nfs # ls -dil share2/ppp/*
8589934913 -rwxrwxrwx 1 root root 15 Jul 15 16:15 share2/ppp/ooo
上面的 ls 命令特别增加了 -i 参数用于显示文件的 inode 值,这时就发现 /nfs/share2、/nfs/share2/ppp 这两个文件夹和 /nfs/share2/ppp/ooo 文件的 inode 值非常大,已经超过了一般的 32 位 inode 值限制,分别为:4294967616、8589934912、8589934913,而 /nfs/share1 文件夹的 inode 值则是 259。
查看运行 mount 命令发现 XFS 文件系统在挂载时使用了 inode64 参数指定使用 64 位的 inode 值来存储文件,使用 64