PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

[暂定为“个例”] 定制版静态数据出错

[复制链接]
跳转到指定楼层
1#
chungexcy 发表于 2016-1-15 19:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
点击数:29624|回复数:163
本帖最后由 chungexcy 于 2016-1-17 04:11 编辑

17日更新:
首先非常非常感谢回复我,帮我分析和建议,以及测试的坛友。

经过一天的努力,包括我和几位坛友
都在尝试复现,但均没能成功。我后面尝试在定制版ssd和机械盘上分别重做了整个操作,包括提到的两次复制问题,均未出错。

ggxuelei的分析有一定的道理,有可能我之前碰上了坏块导致数据丢失。这样来看,很有可能就只是我这个ssd的个例。
SE用什么软件做的?标准的SE只重建FTL,做增强SE才会在重建FTL之外再把所有NAND闪存擦除一遍。现在我怀疑有一种极端的可能,就是刷400G固件之后,可能会把出厂开卡时已经屏蔽的原始坏块还原出来。这次做的只是一个固件升级,而且在最后升级完的时候还有个Error提示(太快看不清楚具体错误信息),刷完之后还要SE才能初始化(容量变了,FTL估计也有大幅变动),所以仅仅是猜测,可能有坏块在刷400G固件后没有被处理掉。
如果有坏块,SSD内部做磨损均衡的时候有可能会搬运盘上已有数据,这样就有可能导致盘上没有被操作系统访问的数据发生错误。但这些理论上的猜测估计是不好复现出来的,只要坏块被替换掉了,后边不出问题了,也就找不出原因了

然而,问题被发现了是曾经发生的事实,未能主动复现也是事实。我虽然不能解释原因,但我也不会否定这个现象。我现在先把盘当成正常完好的来使用,有问题我基本会发现的。如果之后复现了,再开新帖吧。


16日更新:
出问题的工程包下载,一共10GB,需要的可以下载。链接:http://pan.baidu.com/s/1gepjI87 密码:p7l9


memtest没有问题,已过400%,我在检查是否有其他原因。


===================================

继昨天信誓旦旦的测试过我的400GB性能“稳定”以后,我开始把这个400盘作为数据处理盘来用。


今天就发现了两个非常严重的数据安全
问题。

静态数据出错!!!
写入数据丢失!!!

之前 @水银灯 的512GB,在esata和其他平台下,发现文件和文件夹丢失,大家都不以为意,这也包括我。好了,现在相似的问题发生在我身上了。。。

(P.S.之后,整个打包的文件夹,我上传完成以后会公开下载,大约今晚或者明早。)


一、静态数据出错


1. 先描述问题。


简单来说,一个正确的文件在某一时间点,被验证过是正确的;然后过一段时间再去访问,发现文件部分丢失。而文件系统记录的修改时间,依然最后一次修改时间(我这里是创建时间),这个时间点是在被验证的时间以前。即在被验证到再次被访问的这段期间,文件底层损坏,而上层文件系统对此一无所知。



2. 然后我说明一下这段时间的具体行为


首先我在用waifu2x-caffe这个图片处理软件,对一系列图片进行批量处理,源文件夹的每一个文件作为输入,计算后,把结果的图片存入目标文件夹中。看过我的第一帖的坛友,可能还对这个软件有印象



根据这张图,我的整个处理流程顺序是 1x-> 2x -> 2xn1 (?) -> 2xn1ps -> 2xn1ps2x -> 2xn1ps2xn1
例如,1x中的每个图片处理后,放在2x中;2x中的每个图片处理后,放在2xn1中。。。以此类推。

每个文件夹下,都类似这样存放生成的同名图片。

其中截图看不到2xn1,[有可能是我不小心在整理文件夹名的时候删了(当时我还是比较小心,这一点可能性不大),也有可能忘记了这一步(事实上按照时间轴来看,会空出做这部的时间),甚至文件夹直接丢失?(也说不好)]。由于我找不到这一步,我打算用一小部分重做看看,这才发现了这个大问题,之前好的文件居然损坏了。
(注:后面我在其他硬盘中重做了一遍流程,对比了最终输出md5是一样的。也就是说这一步确实做了,想了想应该我不小心PS批处理时忘记复制一个新的2xn1ps文件夹,而是直接用了这个文件夹。所以这里应该是没有问题的。之前自动生成的文件夹命名有点乱就没注意。不过多亏我的不小心才给了机会暴露了这个问题


3. 错误示例


证明一下1x中的这些图片本来是好的:8, 14, 15, 16, 18。


这是08号图片,左边作为输入,计算后输出到右边文件夹中,保存同名文件。

很明显,输入文件现在发现部分数据丢失。而输出文件确实正确的。也就是说当时处理那会儿,左边的源是没有问题的。而在后面的某个时间点,文件部分出错丢失。根据系统记录的修改日期,这个出错是文件系统不知道的。我后面会讲到可能引发问题的情境。

其他的14、15、16、18也出现了同样的问题。下面简单截图证明一下,然后我们跳过,说下一个问题。






二、写入数据丢失


1. 那么我是如何发现刚才的问题的呢?


由于我找不到中间的某个2xn1步骤,我决定拿一小部分数据直接从头跑一遍,对比一下。

我把1x中的03-53,复制到new\1x中,然后用waifu2x,运算输出到new\2x。在点击开始运算之前,我把new\1x文件夹拖入waifu2x的输入框,这里有一步读一遍所有图片的过程,不会写入新数据。这里提到这点,是因为我认为可能是这个复制过程,造成了这次错误。

当时是这样的:

然后我点击start,不一会儿发现下面的输出框提示源图片读取错误,而且不止一个。我立刻点击了cancel,这个软件会在处理完当前图片并保存后,停止继续处理下一张。

从后面生成的文件来看,这时处理了编号03-21的图片。


然后我当时以为是这软件真的出错了。又点击运行,发现依然有错误就立刻停止了,这时编号03-12的图片被新的输出覆盖(删除原来的图片,写入新的图片)。

所以这张截图中,03-12的时间偏晚,是第二次的结果,而13-21是第一次生成的。而之前复制过来,结果出错的8, 14, 15, 16, 18,就是之前报读取错误的几张图片,waifu2x直接跳过,new\2x中也就没有输出。


2. 发现的新问题


本来我以为问题只有静态数据静默出错,结果后面一检查,发现这里的输出也是有问题的。其中出错的,仅在第二次覆盖写入这部分中找到。发生错误的编号为06、09、11、12。全部在第二次覆盖写入时发生。而之前的直接创建文件是正常的(13-21)。


写入出错分析以06为例:



左边是我复制过去的new\1x\03-53,中间是重来那次new\2x中的错误写入;最右边是后面我又再次跑了一遍,存放在新的文件夹内new\2x_test。
可以看出,文件大小完全一样,也就是系统检测到写入发生了,而且写入了正确的数据。但底层数据出错。


其他 09、11、12 也是如此。而且几乎完全丢失。





3. 我的分析和猜想

首先我的计算速度是3.8s一张,也即是说每不到4s,就会覆盖一张以前的图片,图片大小 6-9MB 左右。

对于第一个“静默文件出错”,大家也许已经注意到,原来的1x中的错误图片刚好在03-21中;而在原来1x文件夹中,之外的的其他图片均未找到错误,即使是22-53这些已被复制过来的图片,也没有发生错误。

因此,我认为有两种可能:

       一是本来这5个文件就是有问题的,被复制过来了。但为什么刚好出现在我第一次运算的03-21范围中?
       二是可能出现了什么原因,在waifu2x读取复制的图片时,同时影响了被复制的对象,导致原来的1x中的文件出现了一模一样的错误。这样假设就能符合为什么问题仅出现在了03-21中。

假设2的导致的结果,能很好的符合观测结果的出现概率。

而对于第二个“写入错误”,我估计是文件删除造成的底层数据发生了冲突,而正在写入的数据,系统认为已经写入,但实际上并没有真正写到闪存中。



4. 问题重现


然而底层数据冲突,也不一定是这个原因,因为这个问题后面被我重现了,但方式有变。我强调一句,重现是后面无意中发现的,我主动尝试之后都没检查出问题。

之前截图中,被化划掉的new2文件夹,是后面我的一个测试。同样把原来1x中的的101-150复制过去,然后运行waifu2x。根据时间来看,我只运行了一次





结果,再次发生写入问题,104、105写入出错。右边是对比几小时前,我的正常流程的正确中间结果。

以上基本就是我发现的有规律性的两个问题。


补充:
在第一次发现new文件夹的错误以后,我以为是内存缓存原因,重启过电脑。

关机时间在发现问题后的5分钟。

然后new2的问题发生在重启后的尝试。memtest也是这次开机之内完成的。后面再次关机开箱检查了接线那些,觉得没什么问题。



三、 问题总结

我不认为这是软件问题。waifu2x-caffe是一个圈子内广受欢迎开源软件,已经有14个发行,而且现在依然在更新。而且,我已经在这个环境下,已经处理了超过200GB的数据,没有一张图片是出错的。存储设备有其他ssd,也有移动hdd。再说这个软件的用户也还大有人在。所以我基本可以肯定,这就是ssd自身设计的问题。

现在公布的都是掉电下,原有的数据是安全的。但我现在不掉电,数据能在特定情况下损坏。不知道之前的固件测试是不是光注意掉电问题,而忽略了数据本身的准确性检测,也是否有涉及到我这里提及到的问题。

还有一点我敢确定:就是我的任何一个中间环节,从图片被生成写入,到30分钟左右后再次被下一轮调用,这期间是没有出过任何错误的。因为我的整个流程是环环相扣的,否则我的489张的最终结果,肯定不会全部都正确。


四、最后的一个奇葩问题。

在我从未单独操作的2xn1ps文件夹中,07号图片后面不知为何损坏了,而且不是之前的没有数据变黑的问题,出错非常诡异。



而它的下家确是好的,说明当时这张图是完好的,这张的系统缩略图有的。包括之前1x中出错的5张图片,系统缩略图也是有的。

我猜想有可能是刚才的其他错误,导致nand写入溢出到这个文件的某一部分,导致整个文件的解码歪了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 3绝对值 +3 收起 理由
yukari + 1 yuukiyuuna看下去果然是友奈
Nospel + 1 我也遇到过另一未能复现的问题.
fastslz + 1 看了问题描述,就知道楼主心好细!.

查看全部评分

2#
itismemario 发表于 2016-1-15 19:16 | 只看该作者
本帖最后由 itismemario 于 2016-1-15 19:17 编辑

卧槽……我本来已经打算不说什么安安静静等256固件了……
建兴的新处理方案也可以接受.
然而你这看得我十分想要退货了.

幸好我还没刷固件,感谢建兴固件出的慢啊.
3#
chungexcy  楼主| 发表于 2016-1-15 19:20 | 只看该作者
itismemario 发表于 2016-1-15 19:16
卧槽……我本来已经打算不说什么安安静静等256固件了……
建兴的新处理方案也可以接受.
然而你这看得我十分 ...

我现在和你心情一样,好不容易等到一个看上去可以用的,结果第一轮就发现问题。我都觉得还不如花两倍价钱买intel dc s3610了。
4#
itismemario 发表于 2016-1-15 19:26 | 只看该作者
chungexcy 发表于 2016-1-15 19:20
我现在和你心情一样,好不容易等到一个看上去可以用的,结果第一轮就发现问题。我都觉得还不如花两倍价钱 ...

然而你刷过固件之后已经不可以退了.
节哀.

本来我天天刷新论坛等新固件……不过我现在决定先耗到1月底再说……
看看稳定性吧.

5#
summer78725 发表于 2016-1-15 19:26 | 只看该作者
请楼主提供一个完整的程序、数据包,并给出简要的操作过程说明,让俺等买了T9/400G者也测试一把。
6#
frontwing 发表于 2016-1-15 19:27 | 只看该作者
其中出错的,仅在第二次覆盖写入这部分中找到。发生错误的编号为06、09、11、12。全部在第二次覆盖写入时发生。而之前的直接创建文件是正常的(13-21)。
而对于第二个“写入错误”,我估计是文件删除造成的底层数据发生了冲突,而正在写入的数据,系统认为已经写入,但实际上并没有真正写到闪存中。

这不会是美光那个queued trim bug吧,已删除的数据所在的地址进入待trim队列,新写入的数据又马上写到了这个地址,最后被trim掉了……
7#
itismemario 发表于 2016-1-15 19:30 | 只看该作者
本帖最后由 itismemario 于 2016-1-15 19:35 编辑
frontwing 发表于 2016-1-15 19:27
这不会是美光那个queued trim bug吧,已删除的数据所在的地址进入待trim队列,新写入的数据又马上写到了 ...

在浴室大的三丧文里见过这个BUG,原来镁光也发生过?
发生率挺高的BUG啊,不过我记得那个长篇文里写的Linux系统因为打开了queued trim才有这个问题,WIN7应该是不支持的.
WIN10不知道,没查到相关的资料.

为了已经忘了的人提供链接
http://bbs.pceva.com.cn/thread-120448-1-1.html
有对queued trim bug这玩意详细的描写……实际是不是这个问题我就不清楚了.
8#
chungexcy  楼主| 发表于 2016-1-15 19:34 | 只看该作者
summer78725 发表于 2016-1-15 19:26
请楼主提供一个完整的程序、数据包,并给出简要的操作过程说明,让俺等买了T9/400G者也测试一把。 ...

可以倒是可以,但没有nvidia的显卡,运行会很慢。不过其实也有其他的模拟写入方式,不一定要用我这个。

下载地址在这里
https://github.com/lltcggie/waifu2x-caffe/releases

使用方法很简单,先把日语切换成英语。

然后找一个全是图片的文件夹,拖入input path,输出文件夹会自动生成,也可以再自己指定。运行start就可以了。

速度选denoise是最快的,测试用这个就好。

9#
chungexcy  楼主| 发表于 2016-1-15 19:36 | 只看该作者
frontwing 发表于 2016-1-15 19:27
这不会是美光那个queued trim bug吧,已删除的数据所在的地址进入待trim队列,新写入的数据又马上写到了 ...

我现在也搞不清楚为什么会出这种问题。

quene trim的话,依然不能解释为什么有静态数据发生损坏。而且不止有被复制的对象,连感觉无关的都有。
10#
frontwing 发表于 2016-1-15 19:37 | 只看该作者
itismemario 发表于 2016-1-15 19:30
在浴室大的三丧黑文里见过这个BUG,原来镁光也发生过?
发生率挺高的BUG啊,不过我记得那个长篇黑文里写的Li ...

美光的在这里:http://forum.crucial.com/t5/Cruc ... r-Linux/td-p/151028
当时有人也提到windows不支持queued trim所以不受影响,然而LZ这个问题确实在windows上发生了,我也不敢断定。
11#
aixiangsui 发表于 2016-1-15 19:38 | 只看该作者
好长啊,可否简单说一下?把一个文件放进去,过段时间测下MD5,变了?
12#
chungexcy  楼主| 发表于 2016-1-15 19:42 | 只看该作者
aixiangsui 发表于 2016-1-15 19:38
好长啊,可否简单说一下?把一个文件放进去,过段时间测下MD5,变了?

我没主动测md5,测出问题的,但我用图片损坏应该足够直观的表现文件变了。

计算结果是根据输入固定的。所以实际上md5已经不是原来的计算结果了。
13#
linqy 发表于 2016-1-15 19:48 | 只看该作者
我只能说,幸好在准备刷固件之前看到了你的帖子。
枉我还一个劲的给别人推荐这个,唉。
14#
石头 发表于 2016-1-15 19:54 | 只看该作者
那就接着让他们升级固件。。。。
15#
tcgg1983 发表于 2016-1-15 19:54 | 只看该作者
1个月前 还在鼓动同事买 现在庆幸当初同事说的一句话 一分钱一分货 没有卖错的
16#
itismemario 发表于 2016-1-15 19:56 | 只看该作者
石头 发表于 2016-1-15 19:54
那就接着让他们升级固件。。。。

当初我说的还会有问题……不幸的成为了现实,能不能定位一下是什么问题?
现在很关注故障原理……话说建兴真的会写固件吧?我开始怀疑这点了.
17#
石头 发表于 2016-1-15 19:57 | 只看该作者
先给个2精,不过还是需要验证,我们也测一下,然后看看是不是确实如此。1TB也测。
18#
vge 发表于 2016-1-15 19:59 | 只看该作者
这是颗粒还是固件问题?买零售产品做义务除bug?
19#
贰佰塊 发表于 2016-1-15 20:00 | 只看该作者
看来,建兴要拿原版固件出来才能正常使用呢~~
20#
石头 发表于 2016-1-15 20:01 | 只看该作者
itismemario 发表于 2016-1-15 19:56
当初我说的还会有问题……不幸的成为了现实,能不能定位一下是什么问题?
现在很关注故障原理……话说建兴真 ...

根据最新了解的情况,他们的固件是与OEM客户共同开发的,核心技术不一定在他们自己手上,所以一旦他们自己做点修改就有大概率出问题的可能
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部