如何实现SSD系统级的可靠性?

前传中讲到的Read disturb与Program disturb 属于架构级的可靠性,Data Retention与P/E Endurance属于物理级的可靠性,这些基本可以归纳为NAND闪存相关的可靠性。

看完前传,咱们进入正传,介绍一下SSD系统级可靠性的实现手段。

也许你有个疑问:SSD中存放数据的部分不就是NAND闪存吗?直接优化NAND闪存就可以提高SSD的可靠性了啊,那为什么还要优化SSD系统级的可靠性?

如果只是针对我们个人电脑的应用,只有一个块SSD,而且对数据安全的要求也不是太苛刻,也就没有了系统级优化的概念了。

但是在企业级数据中心,不单单是一块SSD,而是一个庞大的SSD阵列,并且对数据安全性要求很严格,这个时候系统级可靠性的优化显得灰常重要。

目前SSD系统级可靠性的优化主要有两个手段:RAID系统 和 高速缓存(Caching)。

其中,RAID=Redundant Arrays of independent Disks,中文含义为“独立磁盘冗余数组”,简称“磁盘数组”。

1. RAID系统
RAID技术在基于HDD机械硬盘发展起来的,RAID技术主要实现把数据分散存储在不同的硬盘,增加磁盘数组对失效信息的容忍度。把RAID技术移植到SSD阵列中同样适用。

虽然SSD内部的Wear-leveling和ECC技术已经可以解决大部分的失效信息,但是只能局限于属于NAND相关的失效信息。如果是系统造成的失效信息呢?这就需要RAID这个大神出场了。

根据对数据安全性能不同要求,RAID也可以分为不同的级别:

(1) RAID0级别
RAID 0 是速度最快的一种 RAID 模式。它需要至少两个驱动器,并且会将数据分条到每个磁盘。所有磁盘的可用容量合在一起,成为计算机上的一个逻辑卷。
一旦阵列中有一个物理磁盘发生故障,所有磁盘的数据都将不可访问,因为有部分数据已被写入所有磁盘。
如何实现SSD系统级的可靠性?RAID 0 是要求最高速度和最大容量的用户的理想选择。要处理超大型文件的视频编缉人员可以使用 RAID 0 来编辑视频的多个流,以达到最佳播放效果。RAID 0 阵列更适于在频繁的文件处理(例如视频编辑)中使用,不宜用作唯一的存储备份解决方案,也不宜在关键任务系统中使用。

(2) RAID1级别
RAID 1 是一种安全的 RAID 模式,它至少需要两个驱动器,并且驱动器成对工作。计算机上将安装一个逻辑卷,两个驱动器合并后的可用容量限制为不超过最小磁盘的容量。如果其中一个物理磁盘出现故障,可以立即从第二个磁盘上获取数据。即使一个磁盘出现故障,也不会丢失任何数据。
如何实现SSD系统级的可靠性?在一个磁盘出现故障时,RAID 1 可提供最高的数据安全性,但由于数据需写入两次,因此在写入时性能会略有下降。在更注重安全性而非速度的情况下,RAID 1 是理想选择。
(3) RAID2级别
与RAID3相似,都是将数据条块化分布于不同硬盘上,条块单位为位或字节。使用一定的编码技术提供错误检索及恢复。由于海明码的特点,它可以在数据发生错误的情况下将错误校正,以保证输出的正确。数据传送速率相当高。
天下没有免费的午餐,要利用海明码,必须要付出数据冗余的代价。输出数据的速率与驱动器组中速度最慢的相等。
RAID2还有个致命的缺点就是需要多个磁盘存放检查及恢复信息,使得RAID2技术实施更复杂。因此在商业环境中很少使用。
(4) RAID3级别
RAID 3 使用字节级别的条带化技术,并采用专用的奇偶校验磁盘(下图中的磁盘 4),因此计算机上会安装一个卷。RAID 3 阵列能在一个磁盘出现故障的情况下确保数据不丢失。如果一个物理磁盘出现故障,该磁盘上的数据可以重建到更换磁盘上。如果数据尚未重建到更换驱动器上,而此时又有一个磁盘出现故障,那么阵列中的所有数据都将丢失。

如何实现SSD系统级的可靠性?RAID 3 在要读取连续的长文件(如视频文件)的环境中可提供良好的数据安全性。由于数据是从奇偶校验块中读取,因此磁盘故障不会导致服务中断。
RAID 3 适用于那些追求性能并要求持续访问数据的用户(如视频编辑人员)。对于密集使用不连续文件的用户来说,RAID 3 并非理想之选,因为专用的奇偶校验磁盘会影响随机读取性能。
(5) RAID4级别
RAID4与RAID3类似,不同的是,它对数据的访问是按数据块进行的,也就是按磁盘进行的,每次是一个盘。
缺点就是在失败恢复时,它的难度比RAID3大得多,控制器的设计难度也要大许多,而且访问数据的效率不怎么好。
(6) RAID5级别
RAID 5 综合了 RAID 0 的条带化技术以及阵列数据冗余技术(阵列最少包括三个磁盘)。
如何实现SSD系统级的可靠性?RAID 3 和 RAID 5 之间的区别在于,RAID 3 配置提供的性能更高,但总容量略低。数据会在所有磁盘之间分条,并且每个数据块的奇偶校验块 (P) 写入到同一条带上。如果一个物理磁盘出现故障,该磁盘上的数据可以重建到更换磁盘上。单个磁盘出现故障时,数据不会丢失,但如果数据尚未重建到更换驱动器上,而此时又有一个磁盘出现故障,那么阵列中的所有数据都将丢失。
RAID 5 综合考虑了数据安全和磁盘空间充分利用这两方面的因素。由于数据是从奇偶校验块中读取,因此磁盘故障不会导致服务中断。RAID 5 适用于归档,且适合那些追求性能并要求持续访问数据的用户(如视频编辑人员)使用。
(7) RAID6级别
在 RAID 6 中,数据会在所有磁盘(最少四个)间进行分条,并且每个数据块的两个奇偶校验块(如下图中的 p 和 q)写入到同一条带上。如果一个物理磁盘出现故障,该磁盘上的数据可以重建到更换磁盘上。这种 RAID 模式最多允许两个磁盘出故障而不丢失数据,而且它能更快地重建故障磁盘上的数据。
如何实现SSD系统级的可靠性?在驱动器出现故障时,RAID 6 能进行有效的重建,确保了数据的可靠性。为此,安全性要求较高,而性能要求不高的用户可以选择 RAID 6。

2. 高速缓存(Caching)
这个部分的高速缓存与SSD中的DRAM作用是一样的,在Host发送一小笔数据时,不会马上写到NAND闪存,尽量减少对NAND的操作,增加NAND的寿命。