linux – 从NFS服务器读取时文件不同

前端之家收集整理的这篇文章主要介绍了linux – 从NFS服务器读取时文件不同前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我有一个备份服务器,我们已经使用了一段时间,它是一个运行zfs的FreeBSD服务器,并通过NFS提供服务.导出很简单:/ backup / vm -maproot = root -alldirs.如果相关,那是通过zfs配置的:
zfs get sharenfs
backup/vm sharenfs  -maproot=root -alldirs  local

它运行良好,我们甚至还原了这些备份.今天我完全是偶然发现,从nfs共享中读取的文件与写入的文件(以及服务器上的内容)不匹配.

为了演示:我们在服务器上

pg11.txt (downloaded on the server)
pg11.txt.1 (uploaded by a client over nfs)

两者都是爱丽丝梦游仙境,从这里下载:http://www.gutenberg.org/cache/epub/11/pg11.txt

在nfs服务器上:

md5 pg11.txt*
MD5 (pg11.txt) = eff1e5d84df1d3a543d1c578192a2367
MD5 (pg11.txt.1) = eff1e5d84df1d3a543d1c578192a2367

到现在为止还挺好.现在在客户端:

md5sum pg11.txt*
4d79d99b8eebe364cddf5ce42949bc3e  pg11.txt
eff1e5d84df1d3a543d1c578192a2367  pg11.txt.1

什么?从客户端读取pg11.txt我可以很容易地找到如下行:

Alice started to her feet,for it flashed across her <80>^A^@<80>^V<A0>R+^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^A^@^@^A<A4>^@^@^@^A^^@^@^@^@^@^@^@^@^@^@^@^@^B<8E>^^@^@^@^@^@^B^B^@^@^@^@f7<D9>^@^@^@^@^@^@^V^V<EE>3^@^@^@^@^@^@^BFT^B<8C<FF>^E<D9>m(T^B<8C><E7>^]<CE>[<95>T^B<8C><E7>^]<CE>[<95>^@^A^@^@^@^@^@^@^@^A^@^@<U+FEFF>Project Gutenberg's Alice's Adventures in Wonderland,by Lewis Carroll

现在在不同的客户端:

md5sum pg11.txt*
eff1e5d84df1d3a543d1c578192a2367  pg11.txt
b9c4076a85a151e730b9a9077fd6023b  pg11.txt.1

第二个客户端,但通过tcp:

md5sum  pg11.txt*
d80ce8c17092b1b759295e27a3c0af60  pg11.txt
14cde84fd05bd39845c9bb8fc0042eda  pg11.txt.1

如果我尝试使用Ubuntu系统,以前的客户端都是XenServer 6.2:

md5sum pg11.txt*
eff1e5d84df1d3a543d1c578192a2367  pg11.txt
81ca4f5b9b334d00a07fcb16f444a60a  pg11.txt.1

因此,每个客户似乎都有不同的图片,通常不是正确的图片.我希望有人能给我一些线索,了解这里发生了什么,以及如何解决它,因为我很难过.

编辑:

各种文件,包括diff,可以在这里找到:https://gist.github.com/Whoops/0fbe1751675d5e344d43.文件的开头似乎重复了几(7)次,每次都有相同的二进制字符串.
另外有趣的是,每个客户端的损坏似乎都是一致的,即每个客户端总是看到相同的损坏版本,而不是每次读取时的不同损坏.

EDIT2:

NFSv3和4都会出现问题.它似乎只发生在Linux客户端上,而不是其他FreeBSD上.经过测试的客户端是XenServer 6.2和Ubuntu 10.04,这意味着如果它是客户端错误,它跨越内核版本2.6 – 3.11.我目前没有另外的FreeBSD服务器来测试.

解决方法

好的,事实证明这是FreeBSD 10.0-Release中bxe驱动程序的一个错误

The bxe(4) driver can cause packet corruption when TSO (TCP Segmentation Offload) feature is enabled. This feature is enabled by default and can be disabled by using a -tso parameter of ifconfig(8). It can be specified in rc.conf(5) like the following:

ifconfig_bxe0=”DHCP -tso”

This bug has been fixed on FreeBSD 10.0-STABLE.

非常感谢Junovitch在FreeBSD论坛上搞清楚这一点.

猜你在找的Linux相关文章