禁用 64 位时 inode 值错误

禁用 64 位时 inode 值错误

最近,我们使用的 NAS 在 nfs 挂载上从 32 位 inode 切换到了 64 位。不幸的是,我们的旧代码无法很好地处理这种情况。经过一番慌乱的谷歌搜索后,我偶然发现了这篇文章,它非常有用:

https://www.mjr19.org.uk/sw/inodes64.html

按照本指南操作,添加设置"options nfs enable_ino64=0" >> /etc/modprobe.conf并强制选项(否定重新启动)echo -n N > /sys/module/nfs/parameters/enable_ino64在 31 个系统中的 28 个上运行良好。

但是其中三个最老的,不是提供 32 位 inode,而是显示双倍,我认为它们显示的是无符号的 64 位值而不是有符号的,当然也不是 32 位。

没有变化

Box1:~> $ ls -lid /hold
9269037378989466310 drwxrws--- 10 user group 12288 2021-02-24 08:32 /hold

已成功应用设置

Box2:~> $  ls -lid /hold
2162040485 drwxrws--- 10 user group 12288 Feb 24 08:32 /hold

设置已应用,故障

Box3$  ls -lid /hold
18446744071576624805 drwxrws--- 10 user group 12288 24. Feb 09:32 /hold

这是 fstab 中的挂载

server:/location/on/server/hold /hold nfs soft,bg 0 0

所有有问题的机器都运行 Suse Enterprise 11,Service Pack 1。而其余的机器要么运行 Service Pack 2,要么运行 Service Pack 4。有一个长期计划,将它们全部升级到 Service Pack 4,还有一个非常长期的计划,即移除问题软件,以便我们能够跳转到现代操作系统。但这些计划还需要很长时间。

有没有人能认出这个错误,尽管它已经存在很久了(来自维基百科:SP1,2010-06-02。SP2,2012-02-15),有没有人知道/记得不需要完全升级的修复方法?请注意,我确实有 SP0、1 和 2 安装盘。

提前致谢。

相关内容