扯一扯西数冷数据掉速是啷个回事?
最近存储圈有个事,说大不大但是也不能算小,就是西数硬盘的“冷数据”门事件,大痣在11月月底,有网友爆出西数固态硬盘在打开/复制较长时间没有打开的文件速度变慢,甚至只有几十M/S。最初看到的时候因为对于这类产品特性有所了解,所以觉得并不奇怪,不过考虑到不是所有人都能理解这个事,所以就写一篇文章,解释下为啥这样。
首先,最初看到西数“冷数据”的事情,我第一反应就是类似的事情在5年前就已经上演过一次,当时的主角还是三桑,也是存在老旧文件访问速度低,经过几个月多次的固件更新,三星“解决”了这次的问题,而如今换了家厂商,问题还是那个问题。
因为两次事情是相同的原因造成,并且三星已经“解决”问题了,所以这次文章会有一些关于三星的内容,然后是关于原理部分的解释。
要理解这次事情,首先需要了解几个东东。
1.写入放大
图片来源于自用建兴S960 512G固态信息截图
写入放大其实很好解释,就是 主机对硬盘的写入 * 写入放大倍率=实际固态硬盘对NAND写入 ,原理是因为固态硬盘在写入文件之前需要将已有旧数据清除后才可写入(机械硬盘可以直接覆写,你电脑删除的文件只是在系统层面【软件】删除,实际硬盘只是将数据段标记为“删除”,待下次写入或者主控空闲时进行删除作业),而实际擦除的部分是要高于写入部分,请求写入的次数也会增加,最终导致写入数据过多。
而写入放大也并非没有解决方法,代价是会牺牲写入的速度(直说就是表面数据不好看了,不能忽悠消费者了,无视写入放大才能顺应消费主义),例如采用了压缩型主控SF2281的英特尔520,就拥有极佳的写入放大,最佳状态为0.14倍(相当于写入缩小,我之前的520写入放大倍率为0.75,图中的建兴S960写入放大倍率为43,我摸过的固态,最大倍率为143倍)。
关于写入放大部分,MLC时代还比较OK,虽然个别固态能出现上百倍的写入放大,但是仰仗MLC的寿命,基本上问题不大,但是TLC时代,问题会比较严峻(和SLC Cache有关),而TLC时代的大部分固态,因为这部分数据难看主控直接屏蔽了对NAND写入量的检测。
2.SLC Cache
图片来源于自测英特尔傲腾H10 1T测试截图
SLC Cache是目前几乎所有TLC/QLC固态必备(MLC固态选配,企业级TLC选配但最好没有),简单地说:
SLC状态为0和1,一个单元拥有两种电平状态,恢复极快、读写极快;
MLC状态为00、10、01和11,一个单元有四种电平状态,恢复较快,写入较快;
TLC状态为000、100、110、111、011、001、101和010,一个单元有八种电平状态,恢复一般、写入一般;
QLC状态为0000、1000、1100·····和1111,一个单元拥有十六种电平状态,恢复慢、写入慢。
PLC依次类推,越往后电子排布方式越复杂,因而主控在读写数据时需要更长的时间定位数据和准确识别数据,同理需要更长的时间清除数据(并且放大倍率会更大),所以实际写入速度也是依次递减(读取速度影响不太大),SLC>MLC>TLC>QLC,而在进入TLC时代后,SLC Cache的设计被广泛接受了,简单地说就是将TLC颗粒的一个单元以SLC模式运行,既写入时只写入0和1,而非TLC模式的八种电平状态,在写入完成或者超出SLC Cache容量后回归TLC模式,再将SLC Cache容量内的数据再次写回颗粒中。在写入过程中,因为电平状态的关系,实际上SLC Cache会几倍的消耗颗粒寿命,同样也需要几倍的空间才能实现SLC Cache;
MLC颗粒实现1G SLC Cache需要2G以上MLC空间,并且产生2倍以上写入放大;
TLC颗粒实现1G SLC Cache需要3G以上TLC空间,并且产生3倍以上写入放大;
QLC颗粒实现1G SLC Cache需要4G以上QLC空间,并且产生4倍以上写入放大;
SLC Cache产生的写入放大倍率,与本身写入放大倍率并存,SLC Cache容量内文件需要经过多次写入才能被存储。
而SLC Cache的加入,让TLC/QLC固态表面数据变得好看(忽悠人警告!),但是对于主控的算法等又提出了更高的要求,在840EVO旧文件掉速的事件中,就有840EVO第一批老用户表示,第一批并没有出现这么严重的掉速,而新版加入了SLC Cache的840EVO才出现了比较严重掉速/丢文件现象。
目前有一些企业级的TLC固态并没有采用SLC Cache的设计(例如东芝XD-5),主要是为了避免SLC Cache内数据转移至TLC颗粒过程中出现断电等特殊情况,会提高数据丢失的风险,所以没有采用。
对于企业级产品来说,稳定才是重中之重,表面数据是不需要的。
3.LDPC/ECC等纠错校验码
图片来源于知乎专栏,作者为@Trustintreth
这里不解释具体的原理,只说明最终结果,因为这个过程太复杂,我们只需要知道作用就可以了。
综12两点,不论是写入放大还是SLC Cache都会造成过多的写入,而LDPC和ECC等纠错编码的作用就是在写入的同时,去校验数据是否写入正确,以避免重复写入,从而优化寿命,读取时也能够用来校验数据是否正确,有一定的容错率。
一句话来说就是纠错,LDPC目前为主流,纠错能力优秀,编码简单(目前主控基本必备)。
4.西数“冷数据”事件和三星840EVO 旧文件掉速BUG事件
图片来源于:自行拍摄英特尔 傲腾H10 1T和西数SN550 1T
由于NAND闪存特殊结构决定了其用于存储数据的电子会随着时间的变化而产生电子丢失或者界限模糊的情况,换言之是所有的NAND闪存(固态)都存在的现象(傲腾除外)。
这么说可能不太好理解,以电池举例,正常状态下电池会有一个自然放电的过程,只要时间够久,即使你未曾使用,一块电池也会从满电变成亏电,同理在NAND闪存内部也发生着“自然放电”的过程,只是“电池”数量会多得多,放电过程进度不一。
而日常使用中,电池会因为设备的使用而放电和充电,等于定期会刷新电量,所以并不会短期内就“自然放电”至亏电状态,转换到NAND闪存内同样存在,如果定期读写数据,那么这个数据会被校准电压状态,等于完成一次“充电”,刷新了一次,重置了丢失电子的进度条。
而没有定期访问,或者说长时间没有读写的数据,就属于“冷数据”,就处于“自然放电”的过程中,随着“自然放电”的进度加深,读取的速度就会变慢,最终可能出现数据完全丢失的情况。而变慢的原因其实很简单,因为部分数据缺失,需要利用LDPC等纠错码进行纠错,运算后才能得出缺失的部分数据,所以对于冷数据的读取就会变慢。
简单地说就是套公式运算需要时间,在LDPC编码容错率允许的范围内,丢失数据越多则运算时间越长,读取速度越慢。
由于TLC/QLC颗粒复杂的电平状态,所以电子丢失导致数据模糊/数据丢失的情况,在TLC和QLC颗粒中出现的概率和严重程度会高于SLC/MLC颗粒,对于主控算法要求也更高,目前TLC能够维持较高的寿命也是极大的依赖于高超的主控算法,拥有极佳的“国师”才能扶得起那些阿斗,而如今QLC还没有遍地开花,其中一个原因就是主控还没有优化到那个程度。
至于解决方法,其实也简单,在固件中设置固态硬盘定期刷新数据就可以,需要主控定期将冷数据重新写入即可完成一次数据刷新,在下一次电子严重丢失之前再次刷新就可以解决,代价就是会徒增NAND写入量,降低使用寿命,不过也是没有办法的办法,而三星的解决方案大致如此,其实并不能算解决,只算缓兵之计。
实际上由于数据在存储的时候有一定的随机性,存储的文件大小不一,用户访问写入时间不一,再结合“均衡写入”等技术,对于一般固态而言,尽管用户没有进行读写操作,主控本身依旧可能会根据算法去改变数据存储位置,变相也在完成数据刷新。
而对于近期的西数“冷数据”掉速门事件来说,消费者等待西数官方更新固件就可以,或者说无视这个事情就好(所有NAND都存在这个现象,看淡就好),如果实在不放心,在固件更新之前,隔上几个月全盘复制一遍或者重要文件定期复制一次就可以解决问题了。
对于重要数据,重中之重就是多备份,备份才是王道!!!
文章有些部分解释的比较复杂,可能存在错误,欢迎指正~~~
说起来我那个吃灰多年的512G MLC的盘就存在老文件掉速的问题,甚至个别文件已经打不开了~~~
后记
图片来源于:搜狐科技区文章截图
其实冷数据这件事,归根到底我觉得还是消费者对于产品本身并没有多少了解,而消费主义时代,很多东西都没有被解释或者说曲解,当然消费者也未必有兴趣了解,这里也给自己挖个坑,以后有机会写篇文章,看看我觉得什么样的固态算是好固态。
至于上面截图,大家看着乐吧,还记得三星是最先爆出的问题吧?关于这次西数冷数据的问题,某些人就这样说起了三星~~~ 手 动 白 眼
M1版MacBook有硬伤?SSD损耗巨大到底咋回事
1SSD损耗无可避免:操作系统的Swap机制
[PConline 杂谈]M1处理器版的MacBook惊艳了很多人的眼球,有如此强劲的性能的同时,还可以实现超长续航,让很多人惊呼这就是轻薄本的终极形态。然而,最近M1版MacBook却引发了一些争议,有用户发现在使用一段时间后,SSD的写入数据量非常巨大。要知道,SSD中NAND的写入次数是有限的,M1版MacBook这还算是新机,就产生了如此写入量,为什么会这样?到底要不要紧?这就来简单谈谈。
M1版MacBook出现SSD写入量过大的问题?
SSD损耗无可避免:操作系统的Swap机制
根据反馈,出现巨大写入量的SSD,并不是经常挂机下载这样的任务引起的。在日常使用中,SSD就已经会出现此类情况。实际上,很多操作系统都会造成这样的状况,只不过可能没有M1版MacBook那么夸张。SSD的损耗在日常使用无可避免,其实这是SSD充当了内存Swap引起的。
macOS中的Swap
什么是Swap?这是一个在桌面操作系统中常见的系统机制,我们可以大致理解为硬盘充当了内存的作用。在桌面的使用环境下,PC、Mac等设备需要拥有实时运行多个大型软件的能力,这就需要内存足以存储这么多个大型软件的进程容量。然而物理内存是有限的,为此操作系统就需要调用硬盘空间,充当内存的作用。
Swap机制的简单示意图
在macOS系统中,当软件开始运行,进程即会被读取到物理内存当中。随着运行的软件越来越多,操作系统会意识到内存不够用,首先采取的措施是对内存中的数据进行压缩,这会消耗一定的CPU资源;当进入内存的数据变得更多后,操作系统就会考虑舍弃一部分内存中的数据,这时候在内存中没有被修改过的数据首先被抛弃,释放出部分内存空间——例如你打开一个软件,从未操作过,随着内存逐渐被占满,这个软件在内存的一些数据可能实际上已经被清除掉,当你重新开始操作该软件的时候,会重新从硬盘读取所需数据。在这种情况下,操作系统并不会对SSD写入大量数据。
然而,当内存中的数据被修改过,产生了“脏页”,情况就不一样了。当内存逐渐被占满时,操作系统并不能直接将“脏页”从内存中清理出去,毕竟这往往记录着软件的工作进程。这时候,macOS会将这部分“脏页”暂存到SSD中,这就产生了写入SSD的数据。
为此,macOS还建立了一个专门的VM分区,来存放这些内存数据,当物理内存越紧张、用户开启软件越多、软件需求的内存容量越大的时候,VM分区的I/O就会更加频繁,写入的数据也就更多。在这样的Swap操作之下,就算没有进行下载、传输数据之类的操作,也会有大量的数据写入SSD。
macOS中的VM分区
实际上,并非只有macOS存在Swap的机制,Windows、Android等系统均有类似设计。在Windows中,我们可以在系统高级设置中找到“虚拟内存”,这即是硬盘为内存脏页提供存储空间;在Android中,也有zRAM和Swap的机制,会对内存进行压缩和写入NAND。
Win10中的虚拟内存设置
不过,iOS倒是没有Swap机制,这或许和墓碑机制不需要占用太多RAM、苹果对iOS设备定位为非重度生产力工具等因素有关。
2M1版MacBook为何SSD写入数据尤其多?
M1版MacBook为何SSD写入数据尤其多?
Swap是一种非常常见的系统机制,Windows、Android等操作系统有类似设计。但有用户反馈,M1版MacBook的SSD写入数据就是特别多,这到底是为什么?下面是一些分析。
·和长期不关机的用户习惯有关。 Mac电脑,有其是M1版MacBook,强调“掀盖即用”,很多用户养成了长期不关机的习惯,不使用电脑时仅仅合盖休眠。操作系统没有经过重启,经过长时间持续使用,内存脏页会越来越多,写入SSD的数据也越来越多。加上macOS的休眠状态(hibernatemode)会将RAM数据写入硬盘,长期使用休眠待机,也会加大SSD的写入量。
MacBook强调“开盖即用”,长时间不关机,Swap更频繁,休眠会增加SSD的写入量
·和软件生态有关。 越新的软件,占用的内存越多,这是无可辩驳的大趋势,在业界中被称为“安迪-比尔定律”。M1版MacBook由于硬件上进行了革新,很多软件也随之发布新版,新版软件带来了更大的内存容量需求,使得操作系统更容易触发Swap。与此同时,一些X86老软件在M1版MacBook运行,需要经过Rosetta 2转译代码,这会占用更多的存储空间,安装、使用这样的老软件,这也有可能加剧对SSD的写入操作。
M1版MacBook兼容X86软件需要Rosetta 2转译,这会占用额外的硬盘容量,给SSD写入更多数据
·和RAM容量过小有关。 M1版MacBook仅提供8G和16G两种RAM容量,而多数用户都选择8G RAM的版本。物理内存越小,就越容易触发Swap,有用户反馈称,8G RAM版本的M1版MacBook的确比16G版产生了更多SSD写入数据量。
·或许和M1芯片架构有关。 M1芯片使用了片上系统的设计,RAM和CPU核心集成到了一起,这有助于提高I/O效率,但也有可能加快Swap的速度。但这只是一种可能,苹果没有公开太多M1芯片在这方面的细节,无法推定。
·或许和Spotlight有关。 Spotlight是macOS中的全局搜索机制,它会检索硬盘中的所有数据。部分用户反馈,新版macOS的Spotlight很有可能额外对SSD写入了大量数据,目前某些beta版的macOS已经停用了Spotlight的文件检索。不过Spotlight是否是真正的原因,还有待苹果官方证实。
Spotlight可能是导致SSD写入增加的原因,但这点有待证实
M1版MacBook真的有硬伤吗?
在多种因素作用下,部分用户的M1版MacBook产生了较多的SSD写入量。例如有用户反馈,使用仅仅60天,就产生了高达261TB的SSD写入量,以1000次P/E计算,则已经消耗了一块256G SSD 10%的寿命。那么M1版MacBook如此巨大的SSD写入量,真的算是缺陷吗?笔者认为需要辩证看待。
用户反馈,M1版MacBook使用仅仅60天,就产生了高达261TB的SSD写入量
·从历史来看,如果只是正常使用,SSD的损坏基本是由于硬件缺陷或者固件问题导致,SSD很少因为写入次数耗尽,而寿终正寝。很多SSD的实际寿命都高于官方标称,外媒Hardware.info曾经进行过测试,即使是TLC闪存的SSD,寿命也远超预期。SSD一般存在冗余容量,这部分容量用户不可见,可以有效延长SSD的生命周期。
·SSD很多写入行为产生于早期,例如X86软件进行Rosetta转码导致SSD写入额外数据,这样的情况只会发生一次。随着使用时间,SSD的损耗速度应该会有所回落。
如果你实在担心,可以选择购买更大RAM和SSD容量的MacBook使用。更大的RAM意味着更多数据读写发生在物理内存中,平时会触发更少的Swap;而更大的SSD容量意味着写入同样的数据量,SSD的损耗更少。当然,这样的设备价格也会更高。
至于这到底算不算硬伤,由于目前该现象尚未引发故障,因此很难说这属于设计缺陷。不过,该现象很值得大家保持关注,尤其是Spotlight的表现,大家可以暂时停用Spotlight,观察是否SSD写入数据有所减少。
总结
总的来说,M1版MacBook大量SSD写入,是由Swap机制引起的,而M1版MacBook本身的软硬件特性,让该现象尤为突出,引发了用户的注意。虽然这目前没有引发故障,但也值得重视,用户的担心是有道理的。希望苹果能尽快能出面解释,或者改进系统机制,给用户一个好交代吧。
相关问答
当iPhone遇到开机 NAND 的问题该怎么办?可能是存储方面的原因,NAND]_FindFlashmediaAndKeepout:600physicalnandblockoffset1发现媒体和隔离:600物理NAND块偏移1[...
nand写入量 有必要看吗?应该看NAND写入量,host写入量是指本机系统需要硬盘写入的总数据量,而NAND写入量是硬盘进行写操作时实际的数据写入量。NAND写入量大于host写入量是因为存在写...
为啥不建议使用 nand 启动?不建议使用nand启动。使用nand启动存在一些问题和限制。使用nand启动存在以下几个1.可靠性问题:nand启动方式在某些情况下可能会导致系统启动失败或出现错误...
三星i9100g刷机卡在 nand write start!!怎么处理-ZOL问答先让手机进入线刷模式,手机链接电脑,在电脑上下载完美刷机和对应的固件,开始刷入!我s4经常这样刷那你现在还能进入线刷那个模式么?是一点反应都没...
三星S4 I9500刷机总是出现 NAND Write Start!!-ZOL问答我换了个odin就好了……当时折腾了好久!!!换了好几个!!!会用cmd不?网上找找教程吧这个帮不了你啊那你现在还能进入线刷那个模式么?是一点反应...
固态硬盘为什么会掉速?用认真的态度与专业的情怀倾注于存储,欢迎关注我,与我交流哦!固态硬盘掉速往往会发生在写入数据的过程中,出现掉速的原因,主要有三种情况:一,固态硬盘SL...为...
三星计划何时量产基于100层V- NAND 闪存的SSD产品?三星电子刚刚宣布,其已开始生产业界首批100层V-NAND闪存,并计划在企业级PCSSD上采用。这家韩国科技巨头称,基于256Gb3-bitV-NAND闪存的SSD,已开.....
ssd 测验, 为什么 写入 这么慢?-ZOL问答我的西数MyPassport移动硬盘,用ATTO测试速度,读取写入都是100多MB/s,和电脑硬盘速度差不多。你的稍慢一点,也可以了。有用(0)回复s109131671550MB每秒比较....
M1硬盘读写 量 很高,53小时, 写入 3.15Tb这个正常吗?53个小时,写入3.15TB,也就是一个小时近0.06TB,如果你每天使用电脑4个小时,一年就是大约87TB,如果你的硬盘是256GB的,那就相当于擦写近350次,这个次数显然...53个...
如何计算nandflash的使用寿命?好像是NANDFLASH读写多少次之后就不行了,以前大概算过,好像一个片子可以用几十年呢,你可以询问厂家芯片的擦出次数,然后在看每天擦除多少次大概可以知道...