折腾NAND

近期在折腾SSD、SD、U盘,折腾差不多来写个总结,坑不少。本文部分内容会随着时间而变化,于2021年12月编写。

常见NAND硬件

用于储存的基于NAND的硬件,有SD卡、MicroSD卡,U盘,移动固态硬盘,固态硬盘,通常来说,SD卡这类体积小的速度最慢,U盘次之,再就是移动固态硬盘,最快是固态硬盘。之所以说通常,因为还要看接口和协议速度。

颗粒品质,原片、白片、黑片

储存颗粒按品质划分可以分为三大类,原片、白片、黑片。原片就是品质最好的,原厂最严格标准下的产品,白片就是从晶圆上不及格的里面,把还相对较好的挑选出来,黑片就是白片也不如,在剩下的挑选还能用的,同时把坏区进行屏蔽后造出来的颗粒,某宝上特别便宜的U盘肯定是黑片,还有像MP3,玩具等,通常都是用的黑片。黑片寿命说不准,快的一个星期,慢的2年,看运气。

颗粒类型,SLC、MLC、TLC、QLC、3D NAND

SLC表示,一个存储单元,只存0和1,即1bit,MLC保存00、01、10、11,即2bits,同理,TLC可以保存3bits,QLC保存4bits。SLC最贵,速度最快,寿命最长,可达10W次擦除(原片颗粒的情况下,不算白片黑片,下同)。MLC次之,约3000到5000次擦除。TLC再次之,约1000次擦除。QLC速度最慢,寿命最短,约800次擦除。另外,3D NAND可以大幅度提升寿命,3D TLC可达3000到5000次擦除,3D QLC可达1000到3000次擦除。

颗粒的读取、写入、擦除

一片NAND划分为很多个Die,Die是执行指令的最小单位。每个Die分为多个Plane,每个Plane分为多个Block,Block是擦除的最小单位,每个Block分为很多Page,读取时,以Page为单位,一次性读入整个Page的内容,如果一个Page大小有8k,那就是一次性读入8k的数据。而写入有点特殊,在一个Block里,只能按顺序写入,每次写入的单位为Page,不能跳着写,也不能回头写。擦除时,每次只能把整个Block擦除,然后再按顺序写入。

主控

主控对SSD的寿命和速度处于非常主要的地位,同时也是NAND里面最容易挂掉的模块,它工作时发热很厉害,连续长时间下载写入或磁盘测速之类的可能会让主控过热烧毁。NAND是原片,多数情况下主控比NAND本身还要早挂掉。

主控还负责FTL层,即从逻辑地址映射到物理地址的映射。FTL通常包含GC算法、Wear leveling(WL)磨损平衡算法。

另外还有一个关键点,就是看主控支不支持TRIM指令(在NVME上不叫这个名字,但为了统一通常还是这么称呼),在支持TRIM指令的主控上,配合操作系统,能大大优化GC。绝大多数的MicroSD卡和SD卡都不支持TRIM,大部分低端U盘也不支持,少数移动SSD不支持。不支持TRIM的后果,是当写入量累计达到它的容量时,因为主控并不知道还有哪些地方可以写入,于是只好原地写入,磨损平衡就不存在了。当然并不是说不支持TRIM就一定没有磨损平衡,比如说,你的SD卡使用了exfat格式,SD卡主控能认出来,自己找到没有使用的地方进行GC的话,那确实不需要支持TRIM就可以达到相似的效果。如果SD卡厂商宣传上写了支持的文件系统,那有可能就是这个类型。所以,这种不支持TRIM指令的,如果没有做磨损平衡,会把它当普通硬盘一样写入(这种盘最好每次写满了再删掉,或直接做监控视频用),而如果有做,那格式化的时候就只开比如3/4的大小,保留一部分用来做磨损平衡。

查看硬件支不支持TRIM,在Windows上有很多方式,最简单的方法,插入U盘或SD卡后,右键属性,在工具页面有个优化按钮,点进去就能看到当前所有驱动器的媒体类型,识别为固态硬盘的,就是支持TRIM,如果只是显示硬盘驱动器的,就是不支持TRIM。或者还可以用DiskGenius,对驱动器右键,看有没有“TRIM优化”这一项。

也就是说,对于大多数SD卡,如果要寿命长,那么最好是老实地放相机之类的使用,就每次存资料放满了,格式化再存,不要只存一点点数据就删除了再存。除非确认它支持磨损平衡。

对于支持GC和WL的,存在写入放大的问题。比如说,要写入一个10K大小的数据,需要占用2个page,但已经没有一个block可以直接写入2个Page,这时候就需要做一次GC,把2个各有一个空余page的block里有用的数据读出,再重新写入,这样再把原本要写入的数据写入到2个空出来的page里面。于是,原本写入2个page大小的数据,结果是写入了2个block,考虑到1个block里面假设有128个page的话,那就是放大写入128倍。但是,对于不支持GC和WL的,每满一次之后每次写入都在写入放大,每次写入都是把整个block读出,然后和要写入的数据合并,再整个写入。不论你写入的数据量是1字节还是10k,本质上都写入了一个block,这就是掉速原因之一。而且这种掉速无法通过格式化恢复。

好的主控还能对过早损坏的块做屏蔽处理,比如说通常SSD标注为500G而不是512G(但SD卡会标注为512G),那一点空间一来是保存FTL的LBA/PBA表,二来是减少写入放大的次数,三是做坏块的替换品。而对于有屏蔽坏块能力的主控,即使用白片用户也很难感知(等到你能感知到的时候已经过了保修),所以SSD里用白片那是一大片,最简单可以用价格看出来,比如说,三星的SSD差不多0.9元/G,而还有西数之类的,有0.6元/G的,大概率是白片。

另外,还有一个冷数据的问题,通常你保存的数据里,有80%是存了就长期不会改动的,这些就称之为冷数据。好的主控还应该能对冷数据定期进行移动,以避免剩余空间较少时,反复写入的都是相同的位置,导致过早擦除过量。所以好的主控对寿命的影响起到关键因素。

TBW

这是个单位,比如300TBW是指累计写入300TB。在SSD产品上,写入量超过这个数量就不保修,这个数值并不代表其寿命,但可以作为其寿命的参考值。

Wintogo

所谓Wintogo,就是把Windows系统安装在移动设备上,这样要用自己安装的环境配置,直接插个U盘就可以了。不过这个对移动设备有不低的要求,有多不低呢?比如说Sandisk全线U盘没有一个能跑Wintogo,因为不支持TRIM,会导致用着用着系统很卡很慢,而且它的移动硬盘也很诡异的不支持TRIM,很多人反映会越用越慢。反过来,如果你想买优质U盘,搜索Wintogo的U盘即可,而且这种盘比同价位的Sandisk要快得多,读400M写300M是标配,性价比甩开几条大街。

而使用硬盘盒+SSD来做大号U盘也是没有问题的,主要要注意的是硬盘盒,如果你用NVME M.2的SSD,而且你没有红色的USB3.2 Gen2接口的话,那避免使用高端硬盘盒,找那些支持Gen1就可以的硬盘盒,以避免供电不足导致掉盘。当然这样就会导致速度限制在400M到500M,略微比U盘快一点点的程度吧。或者,你如果有USB typec口,就直接用这种口的硬盘盒,就没有供电上的问题。相比较厂商卖的移动硬盘比呢?个人觉得自己配的性价比更高,700块不到可以搞到一块1T的SSD+盒子,比起Sandisk不但性能更高,还更便宜,还能上Wintogo。

不过上WTG要注意的是安装最好选择离线,不然安装好后它会马上帮你更新驱动,在更新USB驱动时会可能会导致USB临时掉线,但同时你的系统盘就是USB,那后果就是突然死机,如果死机那一时刻还有别的东西正在更新(比如万恶的Windows更新),那就可能直接导致系统挂掉无法修复。可以先离线安装好并重启,再进行网络连接,避免系统在同时更新多个,外加一点运气,死机重启后就能用的话,就恭喜了。另外,WTG最好关闭休眠功能,不然有的机器唤醒时USB还没及时连上,又得死机。

缓外

所谓缓外,通常指写入超过缓存的量的时候的写入速度。现在的SSD对于使用TLC或QLC的,最大问题就是速度慢,通常是使用SLC作为缓存,有的是使用独立的SLC,有的是把TLC直接模拟为SLC。在缓存内的时候速度很好看,几百M甚至上G,而缓外才真正看出这个盘的实际水平。

选购建议

  • SD卡(含MicroSD):一定要网购,绝对不要在街上买(90%是假货而且比正品更贵),然后找那些声称终身质保的产品(单价超过1.5元/G),然后使劲用就好了。比如某迪最高端的红黑卡。
  • U盘:一定要网购,找Wintogo的U盘,推荐Chipfancier。不建议买大厂的,贵且慢。
  • 移动硬盘:如果钱不是问题,那直接上三星,其它情况的话看你的需求来选择,500M到800M的速度就够用的话用硬盘盒+SSD,100出头的盒子就够用了,一定要有typec接口的。如果要买厂家完整方案的,不要选择某迪和雷某某。至于怎么选SSD看下面。
  • SSD:一定要网购,挑质保长的,TBW除以容量大的。要品质上三星。如果是配置盒子用,盒子速度是10Gbps的,那要个大厂的便宜的就够了,最重要的是发热少。最好问清楚卖家缓外速度,缓外500M以上的是TLC,只有60到100M的肯定是QLC,在中间的说不准。貌似看不到有卖MLC的,所以只要别掉到QLC里,或者上钞能力就行。

总结,啥都不懂就盲选三星。如果你是想搞WTG,而且你的机器有雷电typec或USB 3.2 Gen2(红色),那么用硬盘盒+SSD,否则用U盘。

商家标识的坑

  • 只标识读取速度,不标写入速度(大多数SD卡):这样写入速度达不到你也没有理由要求售后,因为商家没保证写入。
  • 只标识读取和写入,不标缓外:同理,超出缓存的掉速,商家不保证其速度。商家经常在这种地方出新品的同时在降级(用更差的主控导致缓外速度更慢),以拉开商家自己其它产品的差距,避免特定型号“太香”,同时多赚钱。

其它:关于叠瓦盘SRM

叠瓦盘的原理这里就不介绍了,随便Google就有。叠瓦盘有着和NAND相似的特性,重叠区块写入如果规定必须按顺序来,那么就不存在写入特别慢的情况,否则就要按顺序一条一条磁道进行恢复,速度非常慢。为了克服这个问题,新式叠瓦盘是支持TRIM的,使用和SSD一样的管理算法来克服写入速度的问题,也就是说叠瓦是必然的发展趋势。也就是说,如果你看到磁盘上标示支持TRIM,那就是叠瓦盘。但如果你看到不支持TRIM的叠瓦盘,别买,买了就后悔。不过即使支持TRIM,磁盘还是不可避免地在长期使用后连续的数据变成碎片化,从而导致读写变慢,以及偶尔的GC可能会导致一段时间没有响应,外部表现为写入速度为0,会变多慢这完全依赖于主控。所以能买垂直式CRM就尽量用CRM,SRM的问题还不少。不过支持TRIM的SRM盘在系统里会怎么显示我还不清楚,我手上没这个可以测试。

最后

和硬件打交道,本质上就是和奸商斗智斗勇,并不是你多给钱就一定能得到应有的东西。

Avatar
抱抱熊

一个喜欢折腾和研究算法的大学生

comments powered by Disqus