找回密码
 加入我们
搜索
      
查看: 5693|回复: 19

[存储] SMB不是可靠传输?居然文件损坏一部分,传输过程却无报错

[复制链接]
发表于 2022-10-29 18:43 | 显示全部楼层 |阅读模式
本帖最后由 darkclown 于 2022-10-29 18:50 编辑

我多年以来一直使用SMB在家里几台windows电脑间传输数据,但是前几天偶然发现一个5G左右的视频文件和源文件不一致,通过二进制对比发现文件中有一很小的段变成了连续的0,但是传输过程却无任何报错

原来SMB不是可靠传输?居然会出现这种静默错误,那我这么多年来回用SMB同步文件,岂不是千疮百孔了??

据我了解,现在SMB好像是在TCP上的,虽然TCP的校验位数不够强,极个别情况下也会出错,但不可能出现这种连续0的错误。那么问题来自于哪呢?SMB实现问题?Win10的bug?存储我两端都是970ep,无0E什么的错误
发表于 2022-10-29 18:44 来自手机 | 显示全部楼层
什么牌子路由?之前网件有些型号好像固件有bug会这样
发表于 2022-10-29 18:45 | 显示全部楼层
要不要检查一下0E呢
发表于 2022-10-29 18:50 | 显示全部楼层
本帖最后由 a6057c 于 2022-10-29 18:52 编辑

smb有两套加密和完整性检验选项,比较推荐开启后者(加密),自带完整性校验。

客户端打开管理员powershell 输入 Get-SmbConnection | fl *,检查输出 Encrypted: True/False 以及 Signed: True/False
 楼主| 发表于 2022-10-29 18:51 | 显示全部楼层
Phil_Libra 发表于 2022-10-29 18:44
什么牌子路由?之前网件有些型号好像固件有bug会这样

现在SMB好像是基于TCP的,要是路由器有问题,那会报错的吧?
发表于 2022-10-29 18:55 | 显示全部楼层
a6057c 发表于 2022-10-29 18:50
smb有两套加密和完整性检验选项,比较推荐开启后者(加密),自带完整性校验。

客户端打开管理员powershel ...

Get-SmbConnection | fl *没有任何输出啊
发表于 2022-10-29 19:13 | 显示全部楼层
smb3.0开启加密就有数据完整性校验,不过性能要差很多的。
发表于 2022-10-29 19:15 | 显示全部楼层
tcp默认就有校验机制吧 又不是UDP     所以我觉得可能你中途路过路由器的交换导致的  交换机一般不会有这问题
发表于 2022-10-29 19:17 来自手机 | 显示全部楼层
asumi233 发表于 2022-10-29 19:15
tcp默认就有校验机制吧 又不是UDP     所以我觉得可能你中途路过路由器的交换导致的  交换机一般不会有这问 ...

udp也有checksum的
发表于 2022-10-29 19:49 | 显示全部楼层
个人更倾向于这个是SSD的问题,如果SMB这么不可靠,每天产生的错误数据不会少,但基本没有看到过类似问题。
发表于 2022-10-29 19:49 | 显示全部楼层
说起来,最近我这里也遇到了(不过重启后现象又消失了)
发表于 2022-10-29 20:08 来自手机 | 显示全部楼层
darkclown 发表于 2022-10-29 18:51
现在SMB好像是基于TCP的,要是路由器有问题,那会报错的吧?

反正之前论坛有个讨论,路由器导致文件hash对不上,最后是升级路由固件解决的,可惜那个帖子应该已经归档了
发表于 2022-10-29 20:11 来自手机 | 显示全部楼层
darkclown 发表于 2022-10-29 18:51
现在SMB好像是基于TCP的,要是路由器有问题,那会报错的吧?

不过那个好像是文件头会插入一段特定字符,和你这个又有点不一样
发表于 2022-10-29 20:14 | 显示全部楼层
折腾网络真是玄学。
发表于 2022-10-29 20:27 | 显示全部楼层
所以用fastcopy,勾上验证选择啊
发表于 2022-10-29 20:41 | 显示全部楼层
前段时间服务器内存坏了就这样,文件校验值不对
那个内存也会伪装,刚上电memtest正常,过一天再测memtest就有坏块了
在系统日志上也看出来了,有好些个trace,还有异常重启
发表于 2022-10-29 20:57 | 显示全部楼层
xsdianeht 发表于 2022-10-29 18:55
Get-SmbConnection | fl *没有任何输出啊

Get-SmbServerConfiguration
发表于 2022-10-29 21:23 | 显示全部楼层
声色茶马 发表于 2022-10-29 20:14
折腾网络真是玄学。

不过网络单纯复制也会出错,比如windows只保证把缓冲区的数据写过去时不报错,不会校验最终文件是否相同,在缓冲区的数据就已经和源数据不同是无法感知的,所以通常防止文件损坏会在复制文件后再校验一次,比如很多网站会提供一串hash值,就是给你判断文件完整性用的
发表于 2022-10-29 21:32 | 显示全部楼层
RyanLR 发表于 2022-10-29 20:57
Get-SmbServerConfiguration

看了下,我这里默认是false
发表于 2022-10-29 21:36 | 显示全部楼层
xsdianeht 发表于 2022-10-29 21:32
看了下,我这里默认是false

这个没啥用的。文件破坏应该是其他原因
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Archiver|手机版|小黑屋|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2024-12-11 17:28 , Processed in 0.011045 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表