过度配置 SSD - 它仍然有效吗?

mar*_*trz 18 ssd partitioning

多个(但不是最近的)来源表明,应保留约 7% 的 SSD 空间未分配,以减少驱动器磨损。它现在仍然有效还是情况发生了变化?

sou*_*edi 21

Windows 通常会使用 TRIM。这意味着只要文件系统上有 X% 的可用空间,驱动器就会将 X% 视为未分配。[*] 不需要过度配置。

例外:从历史上看,带有 Sandforce 控制器/固件的 SSD 在 TRIM :(.

整个驱动器的性能损失可能会很大,而且比其他一些驱动器损失更大。这将与高写入放大相关联,从而增加磨损。资料来源:Anandtech 评论。

所以有必要当且仅当

  • 您不确定会使用 TRIM。AFAIK 它在 Linux 上仍然没有默认启用,因为一些旧的和行为不良的驱动器的性能问题。
  • 或者您担心填充 Sandforce 驱动器(并且内容将无法通过智能控制器进行压缩)。

在 Linux 上启用 TRIM 并不太难,而且您不太可能注意到任何问题。

幸运的是,一些最受欢迎的品牌制造了自己的控制器。Sandforce 控制器不像以前那么受欢迎。Sandforce 问题让我怀疑那个特定的“智能”控制器设计,它在当时非常具有侵略性。向 Sandforce 道歉,但我没有受影响的确切控制器模型的参考。


[*] 文件系统也喜欢有足够的可用空间,以减少碎片。所以 TRIM 很棒,因为您不必将两个安全裕度加在一起,相同的可用空间对它们都有帮助:)。驱动器可以利用未分配的空间来提高性能,并避免如您所说的高磨损。


bwD*_*aco 11

现代 SSD 控制器足够智能,日常使用通常不需要过度配置。但是,仍然存在建议过度配置的情况,主要是在数据中心环境中。要了解过度配置为何有用,有必要了解 SSD 的工作原理。

SSD在写入数据时必须应对闪存的限制

SSD 使用一种称为NAND 闪存的内存。与硬盘不同的是,包含数据的 NAND 单元不能被直接覆盖;驱动器需要先擦除现有数据,然后才能写入新数据。此外,虽然 SSD在大小通常为 4 KB 到 16 KB 的页面中写入数据,但它们只能擦除称为块的大组页面中的数据,在现代 SSD 中,通常大小为几百 KB 到几 MB。

NAND的写耐久性有限。为避免为了擦除块而不必要地重写数据,并确保没有块收到不成比例的写入,驱动器尝试将写入(尤其是小的随机写入)分散到不同的块。如果写入替换旧数据,则会将旧页面标记为无效。一旦一个块中的所有页面都被标记为无效,驱动器就可以随意擦除它而无需重写有效数据。

SSD 需要可用空间才能发挥最佳功能,但并非每个工作负载都有助于维护可用空间

如果驱动器的可用空间很少或没有可用空间,它将无法分散写入。相反,当写入发送到驱动器时​​,驱动器需要立即擦除块,将这些块中的任何有效数据重写到其他块中。这导致写入 NAND 的数据多于发送到驱动器的数据,这种现象称为写入放大。写入放大对于随机写入密集型工作负载(例如在线事务处理 (OLTP))尤其明显,并且需要保持在最低水平,因为它会导致性能和耐用性降低。

为了减少写入放大,大多数现代系统都支持一个名为TRIM的命令,它告诉驱动器哪些块不再包含有效数据,以便可以擦除它们。这是必要的,因为否则驱动器将需要假设被操作系统逻辑删除的数据仍然有效,这阻碍了驱动器保持足够可用空间的能力。

但是,TRIM 有时是不可能的,例如当驱动器位于外部机箱中(大多数机箱不支持 TRIM)或驱动器与较旧的操作系统一起使用时。此外,在高度密集的随机写入工作负载下,写入将分布在底层 NAND 的大区域,这意味着即使驱动器未接近满,也可能发生数据的强制重写和随之而来的写入放大。

现代 SSD 的写入放大明显低于旧驱动器,但某些工作负载仍然可以从过度配置中受益

最早的 SSD 具有不那么成熟的固件,它们往往会比必要的更频繁地重写数据。早期的 Indilinx 和 JMicron 控制器(JMF602 因卡顿和糟糕的随机写入性能而臭名昭著)在密集的随机写入工作负载下遭受极高的写入放大,有时超过 100 倍。(想象一下,当您只想写入 1 MB 时,将超过 100 MB 的数据写入 NAND!)。较新的控制器具有更高的处理能力、改进的闪存管理算法和 TRIM 支持,能够更好地处理这些情况,尽管繁重的随机写入工作负载仍然会导致现代 SSD 的写入放大超过 10 倍

过度配置为驱动器提供了更大的可用空间区域来处理随机写入并避免强制重写数据。所有 SSD 都至少在一定程度上过度配置;有些只使用GB 和 GiB 之间的差异来为驱动器提供大约 7% 的备用空间,而另一些则有更多的过度配置来优化性能以满足特定应用程序的需求。例如,用于写入密集型 OLTP 或数据库工作负载的企业 SSD 可能具有 512 GiB 的物理 NAND,但其宣传容量为 400 GB,而不是具有类似数量 NAND 的消费类 SSD 典型的 480 至 512 GB。

如果您的工作负载特别苛刻,或者如果您在不支持 TRIM 的环境中使用驱动器,您可以通过对驱动器进行分区来手动超额配置空间,以便一些空间未被使用。例如,您可以将 512 GB 的 SSD 分区为 400 GB 并保留未分配的剩余空间,驱动器将使用未分配的空间作为备用空间。但是请注意,如果之前已写入此未分配空间,则必须对其进行修剪;否则,它将没有任何好处,因为驱动器会认为该空间已被占用。(分区实用程序应该足够智能来执行此操作,但我不是 100% 确定;请参阅“Windows 是否会修剪 SSD 上未分区(未格式化)的空间?”

如果您只是一个普通消费者,一般没有必要过度配置

在支持 TRIM 的典型消费者环境中,SSD 的容量低于 70-80%,并且不会连续受到随机写入的冲击,写入放大通常不是问题,并且通常不需要过度配置。

最终,即使具有很高的写入放大率,大多数消费者也不会在大多数 SSD 的预期使用寿命内将几乎足够的数据写入磁盘以磨损 NAND,因此这不是失眠的事情。