问题描述
我经常读到不应该在SSD驱动器上放置交换分区,因为这可能会损害设备。这是真的?你能告诉我原因吗?
因为我原本以为在SSD上放置交换是最好的选择,因为它比HDD快得多,因此将RAM内容交换到SSD并不像硬盘那么慢……
最佳解决思路
直到今天,内置SSD的闪存RAM单元的使用寿命仍然有限。每次写入(不读取)周期或更好的每次擦除都会耗尽存储器单元,并且在某些时候它将停止工作。
单元可以存活的擦除周期量变化很大,现代SSD的闪存比几年前要好得多。此外,智能固件将负责所有单元之间均匀分布的擦除。在大多数驱动器中,未使用的区域也可用于备份受损电池并延迟老化。
为了获得一个值,我们可以使用它来比较SSD JEDEC published standards的耐用性来测量SSD的寿命。一个广泛可用的耐久性值是TBW(TeraBytes Written,有些人还说已写入的总字节数),表示在驱动器发生故障之前我们可以写入多少字节。对于消费产品,现代SSD可低至20TB,但在enterprise-level SSD中可达到20,000 TB以上。
话虽如此,生命周期和使用SSD进行交换都取决于……
系统有足够的RAM
在具有大量RAM且没有太多内存消耗应用程序的系统上,我们几乎不会使用交换。在应用程序占用所有RAM时,它仅仅是一种防止数据丢失的安全措施。在这种情况下,从交换机佩戴SSD不会成为问题。但是,在传统硬盘驱动器上使用这种大多数未使用的交换机不会导致任何性能下降,因此我们可以安全地将这些交换放在那么便宜的硬盘驱动器上,并使用SSD上获得的空间来获得更有用的功能。
内存太少的系统
RAM非常罕见且无法升级的系统有所不同。然后交换确实可能更频繁地发生,尤其是在我们运行内存密集型应用程序的情况下。在这些系统中,SSD上的交换可能会导致性能的显著提高。但这是以较短的SSD使用寿命为代价的。然而,这可能仍然不会让人担心。更可能的是,当我们发现我们的SSD正在消亡时,我们已经很久以来一直想要更换它,因为10倍的存储成本只是现在的一小部分。
我们需要休眠
好吧,从SSD中醒来确实非常快。如果我们很幸运,我们的系统在没有问题的情况下幸免于休眠,我们可能会考虑使用SSD。它会穿上SSD而不仅仅是从它上面启动,但我们可能会失败,这是值得的。
但不可否认的是,从SSD启动可能不会花费更长的时间,而且它会更少地佩戴SSD。我不喜欢,我暂停了RAM。或者我喜欢从SSD快速启动。
SSD是我们唯一拥有的驱动器
在这种情况下,我们真的没有选择。我们不想在没有交换的情况下运行,因此我们必须将它放在SSD上。但是,我们可能希望选择较小的交换分区,以防我们不打算休眠。
注意速度
SSD最适合快速访问和读取许多小文件,并且顺序读取中小型文件的数据传输优于传统硬盘。对于写入以及在较小程度上读取大型音频或视频流或其他长而不碎片的文件,传统的快速硬盘驱动器仍然可以表现得更好。较旧的SSD可能会随着时间的推移或在相当满的情况下丢失性能。
次佳解决思路
早期的SSD在写入次数少于HDD之后就失败了。如果经常使用交换,则SSD可能会更快失败。这可能是您听说使用SSD进行交换可能不好的原因。
现代固态硬盘没有这个问题,它们不应该比同类硬盘更快地发生故障。由于速度更快,将交换放在SSD上会比将其置于HDD上获得更好的性能。
此外,如果您的系统有足够的RAM(可能,如果系统的high-end足以具有SSD),则交换可能很少使用。
第三种解决思路
HDD技术使用磁处理来进行数据处理和存储。此过程是非侵入性的,这意味着您可以无限地操纵磁盘驱动器上的数据。直到机制开始失败为止。相比之下,SSD技术不存在机械故障的风险。但令人担忧的是它如何存储数据。对于数据存储,SSD使用受控的电能突发。随着时间的推移,用这种电流击中的半导体会逐渐磨损。
通过软件和硬件更新改进了该过程。早期的适配器发现操作系统没有按照SSD的方式正确存储数据。这不利地使SSD经历了大量的读/写周期。此外,大多数较旧的BIOS都无法正确识别SSD,这也会导致问题。
UEFI和操作系统更新的引入纠正了早期SSD用户所遇到的大多数问题。此外,与任何生产过程一样,SSD本身在管理和维护NAND闪存驱动器的降级方面已经变得更好。
但是,在无法再存储数据之前,SSD仍然需要进行有限的读/写周期。虽然,这种担忧与硬盘故障一样微不足道。
如果您想进一步阅读有关该主题的话,有关于主题here的非常in-depth播客。
第四种思路
即使您有足够的RAM,您仍可能希望阻止任何文件复制或搜索从RAM交换应用程序。这可能是文件服务器(NAS,SAMBA,FTP)上可能涉及大文件操作的情况。
为了做到这一点,最好在/etc/sysctl.conf
中设置:
vm.swappiness=1
vm.vfs_cache_pressure=50
第一个设置可防止磁盘缓存(例如,执行cp
)从RAM交换现有应用程序。正常的默认设置是60.请注意,有时会报告使用0(虽然更具侵略性)会生成out-of-memory错误。
第二个设置阻止文件搜索(例如,执行find
)从RAM交换现有应用程序。正常的默认设置为100。
尽管参考文献中提到的作者没有明确提及SSD,但这种方法还减少了因交换减少而导致的SSD磨损,并且还提供了如何测试它的示例。
第五种思路
生活与绩效平衡。
您购买SSD是因为其性能优势而不仅仅是为了延长电池续航时间吗?因此,请将SSD用于此目的,以使您的系统更快捷。
如果你能够增加更多的RAM来减少交换I /O,那么这显然会增加SSD的使用寿命,因为另一个性能消耗显然是在文件系统上交换空间的I /O周期。
再次像系统配置的许多方面一样,它通常不适用于适合所有情况的单一规则采用。用户需求不同,因此系统要求和配置必须不同才能满足这些需求,简单地说就是如何配置系统。
如果除了无SSD驱动器之外还有空间容纳SSD,那么写入很少会更改为无SSD驱动器的文件,并将经常访问的文件保留在SSD驱动器上。这将确保……
[1] – * trim功能将具有执行必要步骤以均匀使用所有驱动器的资源。 [福利=生活]
[2] – 使用高速SSD设备访问经常访问的文件系统,可以降低I /O延迟。 [效益=表现]
配置您的临时文件系统,以便在您的特定系统需要时使用空间,如果您有足够的RAM,那么考虑将您的swappiness级别设置为不那么激进,这将确保……
[1] – SSD I /O已减少,但您的系统仍将满足其用户的需求。 [福利=生活]
你真的需要那些日志吗?考虑您的系统记录的内容和位置。
[1] – 随着日志文件访问量的减少,SSD I /O减少。 [好处=生命与…性能]
您的系统配置还有许多其他方面可以使非SSD系统执行得更快,默认系统构建具有难以实现的指标,纯粹的性能或保持数据的安全性或者它们的均衡混合。如果您对写入的内容和设备应用相同的心态,则可以大幅提高性能,同时延长SSD的使用寿命。
* swap – 请记住,这不仅仅是在资源不足时使用,默认情况下可以为许多Linux发行版开箱即可配置的swappiness会将长时间运行的低优先级进程停留在性能阶梯下面的交换空间中)
*修剪 – 值得验证你是否启用它,一篇关于修剪是什么以及如何工作的好文章:http://searchstorage.techtarget.com/definition/TRIM