预留空间过多的SSD-仍然可用吗?


14

多个(但不是最近)消息表明,应保留约7%的SSD空间以减少驱动器磨损。到目前为止仍然有效还是情况有所改变?


正如我所说,这确实是因为TRIM启用问题。我怀疑SU非常适合此问题,但现在确实需要编辑以提及Linux!
sourcejedi

可用空间可提供更好的性能。驱动器磨损被夸大了,现在可能是一个神话。高质量的SSD可以24/7全天候写入10年以上。这可能是一篇值得回顾的好文章:howtogeek.com/165472/…-写入一个空块相当快,但是写入一个部分填充的块涉及读取该部分填充的块,修改其值,然后将其写入背部。对您写入驱动器的每个文件重复很多次,因为该文件可能会消耗很多块。---
太阳

Answers:


15

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

例外:从历史上看,在TRIM :(之后,具有Sandforce控制器/固件的SSD无法恢复全部性能。

完整驱动器上的性能损失可能非常严重,比其他一些驱动器更严重。这将与高写入放大率相关联,因此会增加磨损。资料来源:Anandtech评论。

因此,仅当且仅当

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

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

幸运的是,几个最受欢迎的品牌都拥有自己的控制器。Sandforce控制器不再像以前那样流行。Sandforce问题使我对该特定的“智能”控制器设计表示怀疑,该设计在当时非常激进。向Sandforce致歉,但我没有有关受影响的确切控制器模型的参考。


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


一旦安装了SSD,是否可以检测Sandforce控制器?
marmistrz

我没有知道标准的读数或测试。您需要知道驱动器是什么并尝试查找它。我几乎看到的是一个“型号”,例如在GNOME磁盘(例如“ M4-CT128M4SSD2”)中,可能很难匹配。再次抱歉。我相信三星使用自己的控制器,而Crucial / Micron使用Marvell。OCZ /东芝使用了包括Sandforce在内的各种控制器。
sourcejedi

假设您实际上在文件系统上可用空间,对吗?:D
endolith

请具体说明您要答复的内容,这是一年多以前的事了。我认为您的意思是“ [假设地],我没有纪律,需要我的系统来防止继续受到滥用,也没有软件来设置高水位警报”。这是一个完全正确的批评,尽管对于首先考虑过度配置的人来说很有趣。
sourcejedi 16/09/15

7

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

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

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

NAND还具有有限的写入耐力。为了避免为了擦除块而不必要地重写数据,并确保没有块收到不成比例的写入,驱动器尝试将写入(尤其是小的随机写入)散布到不同的块。如果写操作替换了旧数据,则将旧页面标记为无效。将块中的所有页面标记为无效后,驱动器可以自由擦除它,而不必重写有效数据。

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

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

为了减少写放大,大多数现代系统都支持称为TRIM的命令,该命令告诉驱动器哪些块不再包含有效数据,因此可以将其擦除。这是必要的,因为否则驱动器将需要假设操作系统逻辑删除的数据仍然有效,这会妨碍驱动器维护足够的可用空间。

但是,有时无法进行TRIM,例如,当驱动器位于外部机柜中(大多数机柜不支持TRIM)时,或者当驱动器与较旧的操作系统一起使用时。此外,在高度密集的随机写入工作负载下,写入将散布在基础NAND的较大区域上,这意味着即使驱动器几乎未满,也会发生强制数据重写和伴随的写入放大。

与固态硬盘相比,现代固态硬盘的写入放大显着减少,但某些工作负载仍可从过度配置中受益

最早的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,因此这不会失去睡眠。


1

固态硬盘驱动器型号之间的额外空间大小差异很大,但总的来说还是如此。


您对此有参考吗?
Lao Lam 2015年

您是指特定驱动器的参考吗?许多驱动器(不仅是SSD)都有公开的技术参考,但是抱歉,我没有时间进行搜索。但是,如果您对一般参考文献感兴趣,请检查以下内容:samsung.com/global/business/semiconductor/minisite/SSD/…–
Tomasz Klim

1
是的,我想知道这是否对所有驱动器还是仅对特定型号或品牌仍然适用,因为另一个答案表明,在最近的驱动器上不再需要过度配置。
Lao Lam

另一个答案并不完全正确。确实,使用Sandforce控制器的驱动器具有大量的额外空间。没错 但是,其他任何SSD控制器也会占用额外的空间,只是占用的空间并不大。因为这可能不会改变。
Tomasz Klim

1
摘自Samsung SSD的文档:“总是可以选择手动留出更多空间,以进一步提高性能(例如,在要求苛刻的工作负载下)”,即他们建议除非您有“艰巨的工作量”。
sourcejedi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.