通过NFS v3的ZFS – 空文件的“无效参数”

我有OpenSolaris 2009.06服务器通过NFS v3向Linux 2.6.26服务器提供ZFS。 通过NFSv4访问文件时不会发生。

很高兴。 它在我们的LSI san中捕获了无声的数据损坏。 很好的performance;很好的绩效。 有快照。 有压缩。 事务日志重放备份。 最重要的是,我们不再有FScaching问题,并冻结发生在Linux服务器上。

有一件奇怪的事情:Linux NFS客户端无法访问空文件。 当我尝试了ls,cat或者stat时,我得到:

stat: cannot stat `/srv/zpools/a/write.lock': Invalid argument 

Rsync备份报告:

 rsync: readlink "/srv/zpools/a/write.lock" failed: Invalid argument (22) rsync: readlink "/srv/zpools/userX/.netbeans/6.9/var/cache/mavenindex/netbeans/write.lock" failed: Invalid argument (22) rsync: readlink "/srv/zpools/userX/.netbeans/6.9/var/cache/mavenindex/local/write.lock" failed: Invalid argument (22) rsync: readlink "/srv/zpools/userX/javaPrograms/mavenProjects/thesis/libbn/target/test-classes/.netbeans_automatic_build" failed: Invalid argument (22) rsync: readlink "/srv/zpools/userX/javaPrograms/mavenProjects/scalaCommon/target/test-classes/.netbeans_automatic_build" failed: Invalid argument (22) 

我无法通过只为一些旧文件创build新的空文件来重现它。

谁能告诉可能的原因是什么?

编辑:在ZFS服务器,当stat'ing奇怪的文件时,我发现修改时间是在1927年。:)接触到服务器上的文件,解决了NFS客户端上的问题。

这些文件是在NFSv4中创build的,并且获得了一些不寻常的属性(例如修改时间是1970年Unix时代之前的40年),现在它们在NFSv3下是无效的。