
简介
在随机IO访问方案中,固态驱动器(固态驱动器,称为SSD)比传统的硬盘驱动器(硬盘驱动器,称为HDD)快约2至3个数量级。随着闪存价格的下降,越来越多的企业使用固态硬盘作为存储介质,这大大提高了企业的IOPS。许多KV系统要求将它们用作存储介质,例如TiDB。在机器的操作和维护方面,我希望服务器配备有固态驱动器(SSD),但是很少或没有动力去了解SSD的基本原理。我将列出SSD的一些功能。接下来阅读这篇文章。
名词(名词)描述
要获得更好的解释,请列出一些令人困惑的概念并进行解释。
以下是NVMe磁盘和SAS磁盘与CPU之间的连接关系:

闪存简介
如上所述,闪存广泛用于固态驱动器,因此在解释固态驱动器的各种算法之前,我们需要重点介绍闪存的特性。
概念和原则
闪存使用三端设备作为存储单元,即源极,漏极和栅极。电场效应主要用于控制源极和漏极之间的导通和截止;在栅极和硅衬底之间添加浮置栅极。浮栅可以存储电荷,并可以使用电荷存储来存储内存。

擦除:释放浮动栅极的电荷,使其变为“ 1”。此操作称为“擦除”。
编程:将电荷注入到浮栅中,使其变为“ 0”。此操作称为“编程”。

2.内部组织结构
闪存颗粒通常由数千个相同大小的块组成,并且块大小通常为数百KB到几MB。每个块的内部分为相同大小的几页(Page),该页的大小通常为4KB或8KB。

3.数据写入
4.数据读出
5. Flash存储器分类


SSD简介
如上所述,闪存是特定的存储介质,但是仅闪存颗粒是不够的。还有一个控制器,即SSD控制器。同时,为了运行各种算法,还需要一定数量的内存空间。 SSD由控制器,内存,闪存颗粒和其他单元组成。
SSD没有机械部件,例如HDD音圈电机,悬臂等,因此具有出色的抗冲击性。更重要的是,它可以实现多个并发和低延迟,因此其IOPS可以比HDD高出两个数量级。下图是真实的SSD。

提高SSD可靠性的方法
如前所述,闪存颗粒受到P / E次的限制。超过它会影响SSD存储数据的可靠性。从提高SSD可靠性的角度考虑了以下方法或措施。
地址空间虚拟化
2.容量冗余
为避免整个SSD因部分闪存损坏而发生故障,SSD设计为具有容量冗余。例如,对于100GB SSD,实际内部闪存物理容量通常超过110GB。超过额定容量的零件与额定容量之比称为冗余比。一般来说,冗余度越大,SSD的可靠性,寿命和性能就越好。企业级存储产品的冗余率通常超过28%。
3.磨损平衡

损耗平衡(WL)的作用是记录每个块的P / E时间,然后在需要擦除或写入数据时,尝试选择P / E时间相对较少的零件。经过磨损均衡的SSD的使用寿命可以最大化。
4.坏块管理
在使用SSD的过程中,尽管有各种机制和算法可以最大程度地延长使用寿命,但闪存的损坏仍然不可避免。容量冗余为解决闪存损坏问题提供了基本保证。闪存的损坏取决于页面的粒度,即一个块包含多个页面,某些页面可能处于正常状态,而某些页面处于损坏状态。实际上,当一个块中出现多个损坏的页面时,该块中的其他大多数页面都处于损坏的边缘。有鉴于此,SSD固件通常以块粒度来管理闪存的损坏:当发现由于损坏而无法读取的块内页数超过某个阈值时,确定该块为损坏,然后将该块中的有效数据迁移到其他可用块,并将该损坏的块标记为已损坏。从那时起,它将不再用于存储任何业务数据。
SSD固件有两种查找坏块的方法:主机IO触发和内部检查。在SSD生命周期中,大约1. 5%的块将成为坏块。
5.数据冗余保护
SSD使用多种冗余检查方法来保护用户数据免受位翻转,操纵或丢失。
在SSD控制器内存中使用纠错码(ECC)和循环冗余校验(CRC)来防止数据更改或操作。在闪存颗粒中使用低密度奇偶校验(LDPC)和CRC,以防止由于闪存颗粒错误而导致数据丢失。闪存颗粒之间使用XOR冗余,以防止由于闪存故障而导致数据丢失。 SSD使用寿命
SSD的使用寿命可以直接反映在写入的数据量中

SSD垃圾收集

地址空间虚拟化避免了重复擦除和写入相同的物理区域,同时还引入了垃圾数据和垃圾页面。解释如下:
主机访问LBA 100并写入数据AA。可以假设SSD使用页码401来存储数据AA。一段时间后,主机再次访问LBA 100并写入数据BB。由于闪存的特性,页号401除非已被擦除,否则无法直接写入,但SSD擦除是以块为单位的。是的,因此您需要使用地址空间虚拟化机制将数据BB写入另一页。假设该页数为623。经过上述两次写操作,第401页保存数据AA,第623页保存数据BB,第401页上保存的数据无效。仅保存在第623页的数据有用。存储在页面401中的数据称为垃圾数据,而页面401被称为垃圾页面。
垃圾收集(GC)的目的是清除垃圾数据并将垃圾页转换为可以写入数据的干净页。在SSD的内部实现中,垃圾回收通常是一项后台任务,它不断监视SSD内的块和页面的使用情况。当垃圾页面过多时,它将:
选择包含更多垃圾页面的那些块,然后将有效数据迁移到其他块中的干净页面。对不再包含有效数据的那些块执行擦除操作。将已擦除的块放入可用资源池中以写入新数据。
尽管垃圾回收继续净化SSD,但它还会在SSD内部创建更多写入操作,因此闪存所承载的写入数据量超过了主机写入的数据量。这种现象称为写入缩放。固定业务模型后,闪存写入的数据量与主机写入的数据量之比不会随时间变化,而是会在固定值附近的较小范围内波动。我们将此中心点称为写放大因子,值越小越好。
行业主流水平的写入放大系数如下。可以看出,尽管SSD能够进行随机IO访问,但如果业务允许,最好能够访问顺序IO。这样可以有效降低写入放大倍数,从而减少闪存的P / E时间,最终将增加固态硬盘的使用寿命。
摘要
在日常开发过程中,我们很少关注存储层。一方面,存储品牌进行了各种屏蔽和包装,另一方面,对各种公司的存储系统(关系和非关系)进行了处理。类型)为企业提供了高QPS和低延迟访问。仅在为这些存储系统选择机器资源时才考虑。选择那些配备SSD硬盘的服务器。
根据以上介绍,尽管SSD硬盘是基础硬件,但它也涉及许多软件算法。真正处理硬件的地方只有两个:一个是外部接口协议规范,另一个是闪存。擦除和写入粒子的界面。存储集中,虚拟化和云应用程序方案依赖于磁盘阵列,而磁盘阵列涉及更多算法,包括SmartQoS,SmartPartition,SmartVirtualization,SmartMulti-Tenant等。
该文章首次发表在微信公众号“ jameswhale的技术生活”上。由于精力有限,文章将不时同步到Zhihu平台。存储是一个相对较大的话题,欢迎交流!

本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/dianqi/article-314081-1.html
该出去玩就出去玩
可是浙商历史上