![SSD避免组成RAID5的要点有哪些?](https://linux22.com/image/612903/SSD%E9%81%BF%E5%85%8D%E7%BB%84%E6%88%90RAID5%E7%9A%84%E8%A6%81%E7%82%B9%E6%9C%89%E5%93%AA%E4%BA%9B%EF%BC%9F.png)
我的理解是 SSD 的写入次数是有限的。RAID5 由于驱动器之间的奇偶校验信息而执行许多写入操作。因此,推理表明 RAID5 会以更快的速度毁掉并降低固态驱动器的性能。
以下声明来自本文,让我感觉到我没有完全理解我的上述推理或者可能是错误的。
高耐久性 SSD 的另一个应用领域是奇偶校验 RAID 阵列。SLC 因其固有的出色写入延迟和耐久性,非常适合此类应用。
答案1
尽管你没有认识到问题的规模,但你的推理是正确的。
企业级 SSD 采用耐久性更高的 MLC 单元制造,可以承受极高的写入率。SLC 仍然比高耐久性 MLC 更胜一筹,但在大多数情况下,HE-MLC 的终身写入耐久性超过了 SSD 的预期使用寿命。
如今,耐用性在规格表上被列为“终身写入”。
举例来说,Seagate 600 Pro SSD 产品线大致列出了以下内容:
Model Endurance
100GB 220TB
200GB 520TB
400GB 1080TB
假设该 100GB 驱动器的使用寿命为 5 年,要达到所列的耐用性,您需要每天向该驱动器写入 123GB。这对您来说可能太少了,这就是为什么市场上有更高耐用性的驱动器。Stec 是某些顶级供应商的 OEM 提供商,其驱动器被列为“5 年内 10 次全驱动器写入”。这些都是 eMLC 设备。
是的,R5 确实会导致写入放大。但是,没关系在大多数用例下。
这里还有另一个问题。SSD 的写入(和读取)速度非常快,以至于 I/O 瓶颈转移到了 RAID 控制器。旋转金属驱动器已经存在这种情况,但当涉及到 SSD 时,情况就更加严峻了。奇偶校验计算成本高昂,您很难从使用 SSD 创建的 R5 LUN 中获得 I/O 性能。
答案2
我找到了 2 篇关于此主题的研究论文:
奇偶校验更新增加了写入工作量和空间利用率
介绍
[...] 我们的分析模型的结果表明,由于写入放大,RAID5 的可靠性低于使用少量设备的条带化。
结论
[...] 探讨了设备数量和数据量等不同因素,结果表明 RAID5 在提高基于 SSD 的系统的可靠性方面并非普遍有益
所有 SSD 的同等老化会造成同时发生故障的风险(RAID1 和 RAID6 也会受到影响!)
抽象的
[...] 诸如 RAID 之类的冗余解决方案可能用于防止老化 SSD 的高误码率 (BER)。不幸的是,此类解决方案会以类似的速度磨损冗余设备,从而随着阵列的老化而引发相关故障。 [...]
5. 模拟结果
[...] 传统 RAID-5 会导致所有 SSD 以锁步方式老化,而传统 RAID-4 也会使数据设备老化;因此,随着阵列老化,对于这两种解决方案而言,SSD 故障导致数据丢失的概率都会上升到接近 1,并且每当所有 SSD 同时更换时,数据丢失的概率都会定期重置为接近零。[...]
为了防止这种情况,本文提出了一种新的 RAID 级别,称为差分RAID它会在设备更换时自动进行基于年龄的改组)。
您可以通过手动检查 SSD 磨损指示器并主动用备用光盘更换驱动器来防止这种情况,这样就不会出现多个光盘具有相同的关键年龄的情况。
答案3
奇偶校验 RAID 将击败价值 300 美元的台式机 SATA SSD。它甚至不会对价值 3000 美元的企业级 SSD 造成任何影响。
这取决于您要购买什么以及您的使用情况。SSD 是一种比以前成熟得多的技术。在高端,它们的 MTBF 和最大写入次数接近机械 HDD 的可靠性。
您可能不想在 SSD 上使用奇偶校验 RAID 的一个原因是,使用大型多成员 SSD RAID 组,背板或控制器总线很快就会饱和。高端 SSD 的读取速度和当前 RAID 控制器的总线/背板带宽会很快出现收益递减的情况。更不用说,如果这些设备托管通过网络发送的数据,那么当您谈论大型 SSD RAID 时,您的网络接口很有可能比磁盘 IO 更早成为瓶颈。
基本上,除非你从 Newegg 构建你的“服务器”,否则写入寿命并不是什么大问题,但还有一些其他原因可能将 SSD 放入大型奇偶校验 RAID 组中会浪费金钱。
答案4
问题没有指定操作系统或控制器硬件。我的回答仅与 Linux 内核和与“mdadm”相关的软件 RAID 系统有关。
默认情况下,它将为 RAID 配置一个较大的块大小 128k,该大小最初是针对旋转磁盘进行调整的,因为寻道时间是主要问题。恕我直言,这对于 SSD 来说太大了,尤其是当绝对最小写入只有 1 个字节时,最终会变成整个 128k 的块,而为了获得冗余,您还需要再次写入 128k。
这就是写入乘数最糟糕的部分。我建议使用更小的块,例如 8k。如果您使用默认设置组装 RAID5 阵列,这可能是您遇到的主要问题。
确保已启用“丢弃”(在某些地方称为修剪),因为该功能在 Linux 软件 RAID 驱动程序上默认是禁用的。
cat /sys/module/raid456/parameters/devices_handle_discard_safely
应该是 Y 来表明该功能已启用。