在服务器中使用消费级 MLC SSD 安全吗?

在服务器中使用消费级 MLC SSD 安全吗?

我们(我们指的是 Jeff)正在研究在我们的备份数据中心使用消费级 MLC SSD 磁盘的可能性。

我们希望尽量降低成本,增加可用空间 - 因此英特尔 X25-E 的价格大约为每台 700 美元,容量为 64GB。

我们正在考虑购买一些容量更大、价格更低的低端 SSD。我的老板认为,在备份数据中心运行的服务器中花费大约 5000 美元购买磁盘不值得。

这些驱动器将用于联想 RD120 上的 6 驱动器 RAID 阵列。RAID 控制器是 Adaptec 8k(更名为联想)。

这种做法到底有多危险?怎样才能减轻这些危险?

答案1

一些想法;

  • SSD 具有“过量使用”内存。这是用来替代因写入而“损坏”的单元的内存。低端 SSD 可能只有 7% 的过量使用空间;中端 SSD 可能只有 28% 左右;而企业磁盘则高达 400%。请考虑这个因素。
  • 您每天会向其中写入多少数据?即使是基于 Sandforce 1200 芯片的中端 SSD,每天的写入量也很少超过 35GB,否则会严重消耗超额使用的内存。
  • 通常,新 SSD 的第一天就充满了写入,无论是操作系统还是数据。如果第一天的写入量远远超过 35GB,请考虑分批复制,以便在批次之间给 SSD 一些“整理时间”。
  • 如果不支持 TRIM,如果在此期间有大量写入,随机写入性能可能会在数周内下降高达 75% - 如果可以,请使用支持 TRIM 的操作系统
  • 现代 SSD 执行的内部垃圾收集过程专门在安静时段进行,并在活动时停止。对于台式电脑来说,这不是问题,因为磁盘在其通常 8 小时工作周期的 60% 内可以保持安静,但您运行 24 小时服务……这个过程什么时候才有机会运行?
  • 它通常深藏在规格中,但与廉价的“常规”磁盘一样,廉价 SSD 的预期占空比也仅为 30% 左右。您将几乎 100% 的时间都在使用它们 - 这会影响您的 MTBF 率。
  • 虽然 SSD 不会遭遇普通磁盘那样的机械问题,但它们确实存在单比特和多比特错误 - 因此强烈考虑对它们进行 RAID,尽管直觉上不建议这么做。显然,这会影响您刚购买的所有可爱的随机写入速度,但无论如何请考虑一下。
  • 它仍然是 SATA 而不是 SAS,因此在服务器环境中您的队列管理不会那么好,但额外的性能提升将非常显著。

祝你好运 - 只是不要用写作来“煎”他们:)

答案2

我确实找到了这个链接,其中有一个对服务器中 MLC 和 SLC SSD 的有趣而透彻的分析

在我看来,在企业应用中使用 MLC 闪存 SSD 阵列却没有至少使用 Easyco 的 MFT 等技术(所声称的)的磨损缓解效果,就像没有降落伞就从飞机上跳下来一样。

请注意,一些 MLC SSD 供应商声称他们的硬盘足够“企业级”为了生存而写道:

SandForce 的目标是成为第一家拥有支持服务器固态硬盘多层单元闪存芯片控制器的公司。通过使用 MLC 芯片,SF-1500 为服务器制造商所需的低成本、高密度驱动器铺平了道路。迄今为止,服务器闪存驱动器一直使用单层单元闪存芯片。这是因为 MLC 芯片的耐用性和可靠性通常达不到服务器的要求。

对这些说法有进一步的分析在AnandTech

此外,英特尔现在公开表示在 90% 的情况下,SLC 在服务器中可能显得过于复杂

“我们认为 SLC [单层单元] 是必需的,但我们通过与微软甚至希捷的研究发现,这些高计算密集型应用程序的写入量实际上并没有他们想象的那么多,”温斯洛说。“90% 的数据中心应用程序都可以利用这种 MLC [多层单元] 驱动器。”

.. 在过去一年左右的时间里,供应商已经认识到,通过在驱动器控制器中使用特殊软件,他们能够提高其消费级 MLC SSD 的可靠性和弹性,以至于企业已将其用于高性能数据中心服务器和存储阵列。SSD 供应商已经开始使用术语 eMLC(企业 MLC)NAND 闪存来描述这些 SSD。

温斯洛说:“从数量角度来看,我们确实看到确实存在高写入密集型、高性能计算环境可能仍然需要 SLC,但这甚至在企业数据中心要求中也处于前 10% 的位置。”

英特尔通过与日立环球存储科技公司成立的合资企业,占据了企业数据中心市场前 10% 的份额。日立正在生产 SSD400S 系列串行连接 SCSI SSD,其吞吐量为 6Gbit/秒,是其基于 MLC 的 SATA SSD 的两倍。

英特尔甚至针对其面向服务器的 SSD 驱动器也使用新的英特尔 SSD 710 系列从 SLC 迁移到具有非常高“过度配置”空间的 MLC. 这些驱动器最多可分配 20% 的总存储空间用于内部冗余:

对于 SSD 710 来说,性能并不是首要考虑因素。相反,英特尔的目标是通过使用更便宜的 eMLC HET NAND 以合理的价格提供 SLC 级耐用性。SSD 710 还支持用户可配置的过度配置(20%),这显著提高了驱动器的耐用性。SSD 710 的保修期为 3 年或直到磨损指标达到一定水平(以先到者为准)。这是我们第一次看到以这种方式限制 SSD 保修。

答案3

始终以事实而不是假设为基础。在这种情况下,收集事实很容易:记录生产系统的长期读/写 IOPS 配置文件,然后确定在灾难恢复情况下可以承受什么。您应该使用第 99 个百分位之类的值作为测量标准。不是测量 IOPS 容量时使用平均值 - 峰值才是最重要的!然后,您需要根据 DR 站点的需要购买所需的容量和 IOPS。SSD 可能是实现此目的的最佳方式,也可能不是。

因此,例如,如果您的生产应用程序在第 99 个百分位需要 7500 IOPS,您可能会决定在灾难发生时使用 5000 IOPS。但这至少意味着您的 DR 站点需要 25 个 15K 磁盘,因此如果您的容量需求很小(听起来确实如此),SSD 可能是更好的选择。但是,如果您仅测量生产中的 400 IOPS,只需购买 6 个 SATA 驱动器,为自己节省一些钱,并使用额外的空间在 DR 站点存储更多备份快照。您还可以在数据收集中分离读取和写入,以根据非企业级 SSD 的规格确定它们可以为您的工作负载持续多长时间。

还要记住,DR 系统的内存可能比生产系统的内存小,这意味着需要更多的 IOPS(更多的交换和更少的文件系统缓存)。

答案4

由于原始问题确实很有趣,但所有答案都比较陈旧,因此我想给出一个更新的答案。

截至 2020 年,当前的消费级 SSD(或至少是顶级品牌的 SSD)非常可靠。控制器故障非常罕见,并且它们正确遵守写入屏障/同步/刷新/FUA,这对数据持久性来说意味着好事。尽管使用 TLC 闪存,但它们的耐久性等级相当高。

然而,通过使用 TLC 芯片,它们的闪存页面大小和编程时间比旧的 SLC 或 MLC 驱动器高得多。这意味着它们的私有 DRAM 缓存批判的以实现良好的写入性能。禁用该缓存将对任何 TLC(甚至 MLC,尽管影响较小)写入 IOP 造成严重影响。此外,任何有效绕过 DRAM 缓存的写入组合功能的写入模式(即:由 fsync-rich 工作负载完成的小同步写入)必然会导致性能非常低下。同时写入放大将急剧增加,使 SSD 磨损速度比预期快得多。

举个实际的例子:我的笔记本电脑有三星 960 EVO 的 OEM 版本 - 一款快速的 M.2 SSD。在进行随机写入时,它提供了出色的 IOP,除非使用fsync写入:在这种情况下,它仅适用于~300 IOP(用测量fio),这与不强制同步时提供的 100K+ IOP 相差甚远。

重点是许多企业工作负载(即数据库、虚拟机等)很重fsync,对消费级 SSD 不利当然,如果您的工作负载以读取为中心,则这并不适用;但是,如果在消费者 SSD 上使用 PostgreSQL 之类的东西,您可能会对结果感到困惑。

另一个需要考虑的问题是最终使用带有 BBU(或断电保护)写回缓存的 RAID 控制器。大多数此类控制器会禁用 SSD DRAM 私有缓存,导致性能远低于预期。有些控制器支持重新启用它,但并非所有这些都传递了所需的同步/屏障/FUA 以在消费者 SSD 上获得可靠的数据存储。

例如,较旧的 PERC 控制器(例如:6/i)宣布自己为直写设备,有效地告诉操作系统不是根本无法解决缓存刷新问题。连接到此类控制器的消费级 SSD 可能不可靠除非其缓存被禁用(或使用额外的控制器未记录的护理(英语:care)是指低绩效。

并非所有控制器都以这种方式运行 - 例如,较新的 PERC H710+ 控制器宣布自己为回写设备,使操作系统能够根据需要发出缓存刷新。除非连接的磁盘启用了缓存,否则控制器可以忽略这些刷新:在最后一种情况下,它们应该传递所需的同步/刷新。

然而,这全都与控制器(和固件)有关;由于硬件 RAID 控制器是黑匣子,因此无法确定它们的具体行为,只能寄希望于最好的结果。值得注意的是,开源 RAID 实现(即 Linux MDRAID 和 ZFS 镜像/ZRAID)是更易于控制的野兽,并且通常更善于从消费级 SSD 中提取性能。因此,我尽可能使用开源软件 RAID,尤其是在使用消费级 SSD 时。

具有断电保护写回缓存的企业级 SSD 可避免以下所有问题:由于具有非易失性缓存,它们可以忽略同步/刷新请求,无论硬件 RAID 控制器如何,都能提供非常高的性能和低写入放大。考虑到如今企业级 SATA SSD 的价格如此低廉,我经常认为在繁忙的服务器中使用消费级 SSD 毫无价值(除非预期的工作负载以读取为中心或 fsync 较差)。

相关内容