网上有大量资源讨论在 RAID 配置中使用 SSD 驱动器 - 然而这些资源大多可以追溯到几年前,而且 SSD 生态系统发展非常迅速 - 正如我们期待英特尔在今年晚些时候发布“Optane”产品一样,它将再次改变一切。
首先我想问一下我的问题,消费级 SSD(例如英特尔 535)和数据中心级 SSD(例如英特尔 DC S3700)之间存在着质量的差异。
我主要关心的是TRIM
RAID 场景中的支持。据我所知,尽管 SSD 引入消费级计算机已有 6 年多,NVMe 投入商业使用已有 4 年,但现代 RAID 控制器仍然不支持向TRIM
连接的 SSD 发出命令,英特尔的 RAID-0 模式 RAID 控制器除外。
我很惊讶TRIM
RAID-1 模式不支持,考虑到驱动器相互镜像的方式,这似乎很简单。但我离题了。
我注意到,如果您希望磁盘(HDD 和 SSD)具有容错功能,则可以在 RAID 配置中使用它们 - 但由于 SSD 没有 TRIM,这意味着它们会遭受写入放大,从而导致额外的磨损,进而导致 SSD 过早出现故障 - 这是一个不幸的讽刺:旨在防止驱动器故障的系统最终可能会直接导致驱动器故障。
所以:
- 是否
TRIM
需要支持现代(2015-2016 年时代)的 SSD?TRIM
SATA、SATA-Express 和基于 NVMe 的 SSD 在支持需求方面有何区别?
- 驱动器经常被宣传为具有改进的内置垃圾收集功能;这是否消除了需要
TRIM
?它们的 GC 过程如何在 RAID 环境中工作?- 例如,请参阅 2010 年的一份 QA,其中描述了由于未进行 TRIM 而导致的严重性能下降- 和2015 年的这篇文章强烈建议使用 TRIM.
你对这些关于必要性的强有力论据有何回应TRIM
?
- 例如,请参阅 2010 年的一份 QA,其中描述了由于未进行 TRIM 而导致的严重性能下降- 和2015 年的这篇文章强烈建议使用 TRIM.
- 早些年的许多文章和讨论都涉及 SLC 与 MLC 闪存,并且认为 SLC 更可取,因为它的使用寿命更长 - 然而似乎如今所有的 SSD(无论它们处于消费者对企业范围的哪个位置)都是 MLC - 这种区别还有意义吗?
- 那么TLC闪存怎么样?
- 企业级 SSD 往往具有更高的耐久性/写入限制(通常以在驱动器预期的 5 年使用寿命内一天可以完全覆盖驱动器的次数来衡量) - 如果它们的写入周期限制非常高(例如每天 100 次完整写入)这是否意味着它们
TRIM
根本不需要,因为这些限制太高了,或者 - 相反 - 这些限制只能通过使用才能达到TRIM
?
答案1
让我们尝试一次回答一个问题:
- 现代(2015-2016 年时代)的 SSD 是否需要 TRIM 支持?
简短回答:在大多数情况下,不会。详细回答:如果您预留了足够的备用空间(~20%),即使是消费级驱动器通常也有相当好的性能一致性值(但您需要以避免驱动器因持续写入而阻塞)。企业级驱动器甚至更好,因为它们默认具有更高的备用空间,并且它们的控制器/固件组合针对驱动器的持续使用进行了优化。例如,看看您引用的 S3700 驱动器:即使没有修剪,它也具有非常好的写入一致性。
- 驱动器经常被宣传为具有改进的内置垃圾收集功能,这是否消除了对 TRIM 的需求?它们的 GC 过程在 RAID 环境中如何工作
驱动器垃圾收集器在驱动器沙箱内发挥其魔力 - 它对外部环境一无所知。这意味着它(大部分)不受阵列的 RAID 级别的影响。也就是说,某些 RAID 级别(基本上是基于奇偶校验的级别)有时(在某些特定实现中)可以增加写入放大系数,因此这反过来意味着 GC 例程的工作量更大。
- 早些年有很多文章和讨论都涉及 SLC 与 MLC 闪存,并且认为 SLC 更可取,因为它的使用寿命更长,然而现在似乎所有 SSD(无论它们处于消费者到企业范围内的哪个位置)都是 MLC - 这种区别是否还有意义?
SLC 驱动器已基本从企业中消失,主要用于军事和一些工业任务。企业标记现在分为三个等级:
- HMLC/MLCe 闪存是具有更佳分级 MLC 芯片的闪存,并且经过认证,可维持至少 25000/30000 次重写循环;
- 3D MLC 芯片的额定重写次数约为 5,000-10,000 次;
- 普通平面 MLC 和 3D TLC 芯片的额定重写次数约为 3000 次。
实际上,上述任何一种闪存类型都应该为您提供充足的总写入容量,事实上,您可以找到具有上述所有闪存类型的企业级硬盘。
企业级硬盘和消费级硬盘的真正区别在于:
- 控制器/固件组合,企业级硬盘更不容易因意外的控制器错误而损坏;
- 电源保护写缓存,这对于防止闪存转换层 (FTL) 损坏极为重要,该缓存存储在闪存本身上。
企业级驱动程序更好主要是因为其控制器和电源电容器,而不是因为更好的闪存。
- 企业级 SSD 往往具有更高的耐久性/写入限制(通常以在驱动器预期的 5 年使用寿命内一天可以完全覆盖驱动器的次数来衡量),这是否可以消除因不运行 TRIM 而导致的写入放大问题?
如上所述,企业级硬盘具有更高的默认备用空间(约 20%),从而大大降低了对常规 TRIM 的需求
无论如何,顺便提一下,请考虑一些支持 TRIM 的软件 RAID(有人说Linux MDRAID?)
答案2
在现代 RAID 控制器上使用 SSD 时,我从来不担心 TRIM。SSD 已经得到改进,硬件 RAID 控制器功能已针对这些工作负载进行了优化,并且通常有耐久性报告。
TRIM 适用于低端 SATA 驱动器。对于 SAS SSD,我们有 SCSI 取消映射,也许这就是我没有遇到 TRIM 需求的原因……
但另一位评论者说得对。软件定义存储 (SDS) 正在改变我们使用 SSD 的方式。在 SDS 解决方案中,RAID 控制器无关紧要。而像 TRIM 这样的东西往往不那么重要,因为 SSD 正在填补特定角色。我想到 Nimble 存储读取缓存或 ZFS L2ARC 和 ZIL……它们都满足特定需求,软件正在更智能地利用资源。
答案3
带有 SSD 的 RAID 级别 上面的答案表明,带有奇偶校验的 RAID 级别(如 RAID 5)会增加写入放大。实际上,有多种解释方式:对一个驱动器的影响或对一组驱动器的影响。
与无冗余相比,RAID 5 确实增加了写入次数,因为它增加了校验和奇偶校验。与 (n-1) 个驱动器的 RAID 0 阵列相比,具有 n 个驱动器的 RAID 5 阵列对每个驱动器的影响微不足道。n 个驱动器中的每一个都接收同样多的写入。RAID 5 为该集合增加了 1/(n-1) 次额外写入。然而,RAID 1 和 RAID 10 为该集合增加了 100% 的额外写入,因为写入一个 SSD 的所有内容都会写入其镜像。
因此,就写入 RAID 5 组与具有相同驱动器数量的 RAID 10 组而言,RAID 5 组中的 SSD 将接收较少的写入。即使您增加 RAID 10 组中的 SSD 数量以平衡可用容量,情况也是如此。
答案4
shodanshok 在这里触及了真正的答案。如果您预留了额外的空间,即“过度配置”,您的 SSD 的耐用性和写入性能一致性都会随着时间的推移而得到改善,而缺乏 TRIM 支持则变得无关紧要。预留额外的空间可以简单地完成,从一个新的 SSD 开始,分区小于满容量。大多数驱动器内控制器将从未使用的空间视为预留空间,从而显著减少写入放大。对于启动和操作系统,10% 的预留空间可能就足够了。对于经常重写的驱动器,请增加该空间。