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

三星8系列SSD的Trim功能存在导致用户数据出错的隐患

[复制链接]
跳转到指定楼层
#
neeyuese 发表于 2015-6-19 01:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
点击数:27965|回复数:43
1个多月前,我发了个帖子是说关于840 Evo更新固件后有用户反馈的Linux下Trim导致数据出错的问题,其实850Pro “砖头门” 这版的固件也有这个问题。 既然这2个问题的共同点是Linux,Trim,数据出错,三星SSD。那么我们今天就围绕SSD的Trim来展开。

Trim是什么?为什么需要Trim?

当初PCEVA做美光SSD专题时,有对Trim指令进行了介绍,详细可以见这里:http://www.pceva.com.cn/topic/crucialssd/index-6_6.html
简单来说,Trim就是当用户删除文件的时候,文件系统通知SSD控制器,这个逻辑地址对应的物理地址文件已经无效,你做垃圾回收时候不需要再浪费时间搬运了

Queue Trim的基本概念

在早期的SATA协议标准里,标准的Trim属于一条non-queued指令,也就是说需要先暂停所有的读写操作并释放缓存里的数据到硬盘之后才能执行Trim操作。我们知道SSD的并发性能很强,通过AHCI支持NCQ后,多QD下同一时间的IOPS非常可观。在高负载并发读写进行的时候经常的忽然进行标准的Trim指令就会严重影响性能了。表现就像下面这样:

-数据传输- -数据传输- -释放缓存到硬盘- -等待- -TRIM- -数据传输- -数据传输-



如图标准Trim指令会打断NCQ。

为了解决这个问题,在SATA协议3.2版里加入了Queue Trim的支持,就是能够在NCQ里执行Trim了,做Trim的时候不需要暂停SSD的I/O操作了。表现就像下面这样:

-数据传输- -数据传输- -TRIM- -数据传输- -数据传输- -数据传输-

目前只有新版的Linux内核下支持Queue Trim,Windows和MAC OSX这类系统并不支持。


目前已确认三星的8系列SSD新版固件开启了Queue Trim支持,但是支持的不好会导致数据损坏





如图,拿我手上的SSD来说,Intel 730 并没有Queue Trim的支持,而更新了新版固件的840 Evo却支持了Queue Trim。(看Word 77的6 - RECEIVE/SEND FPDMA QUEUED supported,如果为1就是支持Queue Trim)。很明显三星新版8系列SSD固件支持了SATA 3.2标准并且默认激活了Queue Trim功能,但是支持的却并不好,会导致用户数据出错。

三星对Queue Trim的答复与解决对策

关于Queue Trim的问题有位用户反映给三星官方客服后,第一次他提到了NCQ Trim造成数据出错,但是没提到Linux,结果客服给了如下回答



客服直接就说了三星SSD对Linux下的Queue Trim支持有问题,建议禁用。(也就是说三星内部已经知道Linux下的问题)

第二次这位用户详细解释了为什么会造成盘故障的问题,强调说盘的固件有问题。



结果依然得到了模板一样的回答

第三次他一点不提Trim的字眼,这一次客服算是看了来信并回答如下:



客服强调他们是售后支持,并不是固件开发工程师,固件开发工程师在韩国。目前的建议就是让用户更新最新的 Linux内核,而最新的内核里面是禁用全8系列三星SSD Queue Trim功能的“补丁”。

其实在2个月前我还有个帖子是关于840Pro在Linux下严重掉速的,这样看来三星客服的回答还真没错,三星对Linux这种开源系统不予支持三星要做的其实就是发布新固件关闭这个Queue Trim功能的支持,要么就是真的好好去重新做个能够完美支持Queue Trim的固件。



我在想如果三星不修复这个问题的话,万一之后的Windows 系统哪天来个补丁支持Queue Trim,或者MAC OSX支持Queue Trim的话是否全世界用三星SSD的用户就热闹了?丢数据的丢数据,变砖的变砖了?

三星SSD的Trim还有什么问题?下面是我的分析,仅与技术人员讨论

上面是已知的对Queue Trim支持问题,那么下面我再来说一下这几天新闻里说到的 ”部分三星SSD出现TRIM执行bug:数据被破坏、后果很严重。“

这个文章最近最近各处被转发,而且已经出现了新的中文标题:三星SSD 8* 等系列新firmware 存在误报支持NCQ TRIM 导致数据丢失的问题。其实我想说,这次貌似和Queue Trim又没关系了。原文出处地址:https://blog.algolia.com/when-solid-state-drives-are-not-that-solid/



原文作者已经表示他们并没有开启Queue Trim。



作者上面的图里显示,General Purpose Log 0x13 does not exist ,这个就表示Queue Trim 并没有启用。

既然不是Queue Trim的问题,那是什么导致了三星SSD Trim下去后数据出错呢?

Firmware bug造成Delay Trim (延迟Trim) 操作导致的数据出错。

这个bug是一个隐藏的很深的bug,只有在大压力测试下才会出现,原文作者是做数据库index操作,非常折磨ssd,windows做做文件系统这些小事,一般测试不出来的。数据出错的原因是做trim操作时,将有效数据trim掉了。

什么是Delay Trim ? 为什么我可以确认三星做了Delay Trim?

这个我们在2年前讨论840 Pro的Trim策略时候有过帖子: 三星840PRO垃圾回收策略探讨

总结部分我们提到说:三星在GC策略上,的确采取了非常保守的算法。因此导致前面如果在刚发送完Trim指令就执行测试的时候,由于SSD实际根本没有执行后续必要的GC操作,从而无法得到很好的测试成绩。

Trim的发送包含2个要点,1个是Trim指令本身,另一个是需要Trim的地址范围(LBA地址范围),一条Trim指令发送需要至少包含1个扇区号,也就是512字节。支持的Trim指令的地址范围取决于所使用的SSD,最大不能超过65535扇区,也就是不到32MB。

前面说过了,在不支持Queue Trim的情况下,由于Trim操作需要暂停并发读写指令,因此会影响性能。那么如果每次Trim的地址范围偏小,多次Trim的话更会影响性能。假设我们现在把每次Trim的地址范围缓存起来一段时间,如果在这段时间有更多需要Trim的地址范围加进来,那么我们就可以一次发送更大范围的Trim了,这不就降低了频繁打断并发读写操作的可能吗? 这个操作就叫Delay Trim。

Delay Trim是把双刃剑,做的不好非但会掉性能,还会有数据安全隐患。

假设SSD缓存了几次Trim地址范围但是还没有做Trim,这时候Trim的地址范围如果是放在缓存里的,此时突发掉电的话会如何?再次上电后这些Trim地址就没有了,也就是说Trim没效果了,当然这不影响数据安全,但是可想而知这会影响性能表现和垃圾回收效率吧。

那么这里说的数据安全隐患是什么呢?假设缓存的Trim地址范围在缓存里出错了,或者在缓存的这段时间里漏掉了某些SSD读写操作逻辑地址(在压力大的情况下更容易发生),造成将有效数据给Trim掉了。(这是完全有可能的,比如这个地址被文件系统标记Trim(删除操作)并发送给SSD主控,但是在之后的操作中被后来的新数据覆盖了,主控因为延迟Trim的发送将这个地址范围给Trim掉了,导致新的有效数据无效化了。



由于标准Trim的地址是512B为最小单位的,因此表现出来的就是如作者这里写的,小文件(小于512B)被清零了(Trim掉),运行文件检测的时候发现不了错误,因为文件在内存里的副本是好的,重复读取这些小文件都是访问的系统内存,而大文件内随机的地址被清零(某些地址范围被Trim掉)。用户的文件就这么出错了。

这不前几天还有网友问,为什么他的SSD做Trim或者快速格式化后,在那里卡几十秒呢?因为这些SSD不支持Delay Trim呀,所以如果Trim掉的无效数据多,之后的垃圾回收需要消耗较长时间去擦除这些数据。也就是暂停所有读写,Trim了并且直接垃圾回收,性能恢复了也以绝后患。

最终建议,企业级客户目前最好远离三星。消费电子嘛,本来就不能用于严肃的场合,换身衣服就装企业级的不算。话说阿里巴巴不是有高官因为采购三星ssd被fire掉了么,要我说数据库或者非Windows这种随大流系统还是别碰三星的SSD了,乖乖Intel之类的吧。

题外话:好像还有人蛮期待我的“长篇黑文”的。还有人对我长期“黑”三星很是不满意。但我想问问:你要是负责企业存储的技术人员,现在你会选择三星的SSD吗?没中招的还好说,换个品牌采购即可;对于已经中招的企业,怎么解决问题才是关键。这些都是切实的技术层面与每个企业的自身利益问题,跟立场毫无关系。你们这些枪手、粉丝,考虑过别人的利益吗,考虑过别人被坑后的感受没?如果没有,在给三星的问题产品洗地之前先抽自己几个耳光可能就知道了。

说点心里话,我觉得技术讨论就是技术讨论,黑不黑捧不捧的跟我有啥关系?从原理分析到实测表现再到各种功能的确认,最后能跟同好讨论点真相出来,这才是我关心的问题。现在就是互联网就有这么一堆自己带着有色眼镜的人,他们用立场角度去判断别人的价值观的是非,但自己却连事情到底怎么回事都搞不清楚,更别提分享什么有价值知识了,请问他们有享受言论自由的资格吗?还好我心里强大,常人被这样污蔑可能早就不敢说话了吧,他们的目的也就达到了不是?对他们我就一句忠告:回家把书念好了再喷,学渣是没有资格评论我的。

本帖子中包含更多资源

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

x

评分

参与人数 4绝对值 +8 收起 理由
tove + 2 评个分好像很有风险哈。。。
变开彡金钅冈 + 2 赞一个!
TouchNet + 2 我很赞同
zero8177 + 2 严重同意就事论事,问题就是问题,与属于哪.

查看全部评分

43#
wangyf5039 发表于 2015-9-25 14:26 | 只看该作者
这是不是又应了那条,没事别手痒更新固件
42#
tedsun 发表于 2015-9-24 10:42 | 只看该作者
请问 @neeyuese ,850EVO有没有这个bug,或是三星有没有修复这个问题?
41#
cws 发表于 2015-7-19 18:12 | 只看该作者
本帖最后由 cws 于 2015-7-19 18:13 编辑

请教女浴室,我刚买850EVO,办公电脑当系统盘用(运行3DMax、PS、CAD等做图软件),行不行?
或者麻烦给推荐个相对有些性价比的。谢谢~·
40#
玫瑰人生 发表于 2015-7-16 14:46 | 只看该作者
我没有那么大强度使用SSD,也用不到Linux,这些问题应该与我无关~~
39#
alom 发表于 2015-7-2 12:23 | 只看该作者
没看懂,但这个ID看着眼熟。。。。。。。
38#
包子不寂寞 发表于 2015-7-2 00:45 | 只看该作者
阐述一个观点并有证据存在且用数据方式证明,我认为已经让大部分凭空评价的人无话可说了。喜欢说空话的人多,认真钻研的人少,你大可不必与这些人计较,尽可大胆的阐述你的观点,孰对孰错我们心中有数,会做参考。我们会指出你可能有错的地方,大家共同讨论进步。我们会支持你发出言论,感谢你大胆的说出观点。
37#
s4e8 发表于 2015-6-25 12:05 | 只看该作者
可能3*直接把原先的Delay Trim改改变成支持Queue Trim,这样大大强化了Delay Trim和并发写冲突概率,然后就挂掉了。根本原因可能还是Delay Trim内部同步逻辑有问题。至于QueuedTrim bug,其实是镁光最早爆的,只是那时queued trim功能刚刚加入所以也没有大面积出问题,然后就直接被黑名单掉了。到目前为止镁光都没有修复M500的Queued Trim bug,只修复了M550及以后的产品。
36#
红色狂想 发表于 2015-6-24 20:20 | 只看该作者
sun1a2b3c 发表于 2015-6-24 20:14
这下三星的SSD是不敢买了……

任何产品都不敢买三丧的
35#
sun1a2b3c 发表于 2015-6-24 20:14 | 只看该作者
红色狂想 发表于 2015-6-19 18:12
还是坑屎盾靠谱儿,看来伦家远离三丧是没有错地

这下三星的SSD是不敢买了……
34#
zaz 发表于 2015-6-24 20:03 | 只看该作者
韩国人太投机取巧了,三星这种态度没有未来的.其实三星会做闪存,完全可以暴力法取得速度/稳定性 第一的.以前SD三星就出过大问题,依然不知道改。自强多福吧。
33#
固特异轮胎 发表于 2015-6-22 21:27 | 只看该作者
这个固件研发是需要很深的功底的,没有一定实力和水平的话是不可靠的
32#
ssshjp 发表于 2015-6-21 16:48 | 只看该作者
这样说Delay Trim够鸡肋,高负载下不可靠,家用环境价值低
31#
sun1a2b3c 发表于 2015-6-21 01:59 | 只看该作者
看来三星这个品牌以后不能考虑了……
30#
小夜叉 发表于 2015-6-20 19:34 | 只看该作者
手机也完蛋,昨天我们电信营业厅跑进去就一个大妈顾客在骂三星手机不稳定,换了三台了
29#
tove 发表于 2015-6-20 17:48 | 只看该作者
虽然不用linux,但是还是不碰三*的。。。。听浴姐的已入英特大法
28#
tomoyo 发表于 2015-6-20 16:28 | 只看该作者
mikuluka 发表于 2015-6-19 14:48
呢意思是我用850PRO只要不用linux基本暂时就没事呗 不过话说有没有办法彻底解决840EVO的BUG 三个750G的表示 ...

换掉。。。就解决了
27#
aihhyj 发表于 2015-6-20 11:25 | 只看该作者
话说以前同事配电脑,躲过了红星电源,结果没躲过三星ssd
26#
zhu890103 发表于 2015-6-19 23:51 | 只看该作者
照片又更新了呢,支持了,太专业,看不懂.喜欢实事求是
25#
5icgg 发表于 2015-6-19 23:12 | 只看该作者
在使用的ssd有两块三星的,家用的,也无所谓。什么时候买块intel的体验一下。
24#
einstein86 发表于 2015-6-19 21:20 | 只看该作者
最近三星SSD问题越来越多,真庆幸当时没被安利买840 EVO 750G @plane501
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部