问题描述
我遇到了this article,其中包含以下建议:
Swap and swappiness
I kept my swap partition on the old HDD. Swap on the SSD would be faster, but would also shorten the SSD’s life.
My system has plenty of memory, so I also reduced the swappiness value to 0 to tell Ubuntu to only swap when absolutely necessary. I did this by adding the line vm.swappiness=0 to /etc/sysctl.conf.
将swappiness设置为零是否会增加我的SSD的使用寿命?我在其他地方找不到对此的引用。
最佳解决方案
将swappiness降低到0意味着当没有可用的可用RAM时,OS将仅开始使用SSD进行交换。
从理论上讲,这可以增加SSD的使用寿命,因为SSD的写入次数会减少。这取决于它是否实际上增加了SSD的使用寿命:
-
Linux很少使用交换(特别是与Windows相比),即使swappiness值也较高,因此与RAM使用情况相比,此设置可能不会改变具有大量RAM的系统上的交换行为。如果你的RAM很短,那么交换可能会频繁发生,默认值为60,在这种情况下,降低swappiness可能会对SSD的写周期限制产生重大影响。
-
对于简单的消费者使用,SSD的写入耐久性仍然相当高,至少对于基于MLC的SSD而言。他们说目前基于MLC的SSD可以容忍ca.在他们磨损之前3000-5000个写周期。使用3000限制进行计算意味着每天写入10 GB的128 GB SSD可以很快地工作。 38000天,这意味着约100年。如果你有一个更大的SSD当然会在以后磨损很久。因此,由于细胞磨损,您的SSD不太可能会死亡。 (当然,如果您在企业/服务器环境中使用SSD,那么每日写入要高得多,但在企业环境中,通常会使用基于SLC的SSD。)
-
这个写入周期限制如此之高,以至于SSD制造商(首先是SAMSUNG)开始为消费者制造基于TLC的SSD,这只能容忍ca. 1000个写周期,但更便宜。这些公司表示,即使这些SSD的写入周期限制也将比预期使用产品的时间更长。 (我们不太可能在2024年仍然使用我们的128 GB SSD)虽然如果你有一个基于TLC的SSD并且你经常写入该驱动器,例如50GB /天,那么降低swappiness值可能会产生重大影响在你的SSD的寿命长度。
-
Here is a giant thread让发烧友通过不断写信来测试SSD的耐用性。虽然他们的测试方法可能不完全正确,但他们的结果非常令人印象深刻和舒缓。
总结一下:从理论上讲,减少swappiness将导致更长的SSD寿命,实际上可能不会。但是如果你有一个基于TLC的SSD并且你的RAM很短,而且你经常写入SSD,那么它也会产生实际效果。
我有一个基于MLC的128 GB固态硬盘,我主要使用我的系统进行办公/浏览,而且我的RAM使用量比RAM高,因此我的SSD没有大量写入负载(尽管我的机器是24/7全天候)。但是因为我根本不需要交换,所以当我安装我的SSD时,我自己为自己设置的swappiness设置swappiness是如此容易,因为为什么不这样做呢? (实际上我在所有机器上都将swappiness设置为0,即使在只有HDD的机器上也是如此。)
您可以使用smartctl
检查SSD在其使用寿命期间所遭受的写入量,查找Total_LBAs_Written
的行,这将显示已向SSD写入了多少512b扇区。 (是的我知道SSD有物理4K块,而不是512b,但SMART仍然说:Sector Size: 512 bytes logical/physical
和512块我得到的结果与tune2fs -l
Lifetime写入输出相当。)所以多数这个数字用512并且你得到了写in byte或简称:
sudo smartctl -a /dev/sda | grep Total_LBAs_Written | awk '{print $10*512/1024/1024/1024 " GiB"}'
将在GiBs中打印/dev /sda。 (只需将设备名称更改为SSD的名称。)我的128 GB SSD已经遭受了损失。在一年多一点的时间内写入800 GB,这意味着3000个写入周期只有7个。
次佳解决方案
所有关于耗尽固态硬盘的讨论都是”guesswork”。我有同样的感受,但开始在商业上使用它们。我拥有东海岸最快的甲骨文群之一。 3年前,我们为整个存储和临时文件系统设置了SSD。我们每天为SSD做数十亿次写操作。 3年后,我们仍然没有接近10%的倦怠。如果我能以商业方式做到这一点,他们将永远不会在住宅环境中磨损。所以 – 我专门为我的linux工作站和BAM上的交换空间实现了一个SSD解决方案!
所以,你的里程数各不相同,但SSD是各种方式。
戴夫
第三种解决方案
是。您需要更改swappiness以增加SSD寿命。
Swappiness允许您控制使用的交换文件数量。 Swappiness值可以从0更改为100. swappiness值越高,内核尝试使用交换空间越多,swappiness值越低意味着内核将根据我们的设置使用更少或没有交换空间。
默认的swappiness值是60,如果你有足够的RAM,你应该避免使用交换空间来写入和读取你的SSD,而不是硬盘。对于具有4 GB或更多RAM的系统,尝试通过将交换设置更改为10甚至0来减少交换的使用,并将交换文件放在HDD上。
运行交换空间非常耗费磁盘I /O,这对SSD来说实际上是不好的。 SSD只能在它变坏之前处理这么多写入并且你被迫购买另一个驱动器。因此,如果可能的话,将您的交换空间移动到辅助旋转驱动器……远离SSD。
通过写入操作可以相对快速地磨损固态硬盘。特别是最老一代的SSD在这方面很脆弱,但在较小程度上仍然是新一代的情况。
您可以在新磁盘上创建新分区,也可以只创建交换文件;制作新分区几乎总能带来更好的性能。
如果您没有要移动的备用驱动器,则可以更改仅在物理RAM 100%已满时启用交换的设置,这将减少交换文件的负载,并帮助您的SSD。只需按键盘上的Ctrl
+ Alt
+ T
即可打开终端。打开时,运行以下命令:
echo 0 > /proc/sys/vm/swappiness
SSD磨损与写周期有关
通过写入操作可以相对快速地磨损固态硬盘。特别是最老一代的SSD在这方面很脆弱,但在较小程度上仍然是新一代的情况。
使用修剪
TRIM是您使用SSD的优势。它在软件中运行并与SSD控制器通信,告诉它文件系统不再需要哪些“块”,并且可以安全地清理和覆盖。这不会真正改善性能,但会延长SSD的使用寿命。
资料来源:Linux SSD Tweaks& How-to for optimizing your SSD
第四种方案
Is it true that setting swappiness to zero will increase the life of my SSD?
这会导致Linux移动内存块的频率降低到交换分区。如果交换在SSD中,写入交换通常使用写周期。请记住,交换仅在需要时使用,如果你有足够的RAM,没有它你可能会更好(除非你想要休眠,但这是另一个问题)。
这些操作的效果可能会有所不同,但这样做只是为了在SSD中节省一些写入周期,这样做是错误的。现代SSD(大约从2012年开始)有大量的写入周期,当您几乎耗尽所有RAM时,应用程序的性能可能会降低。在安装程序期间,您使用的写入周期多于到期交换。请记住,仅在默认情况下需要时才使用交换。
如果您担心用于交换的SSD写周期,如果您有足够的RAM并且只激活HDD中的临时交换而不是弄乱交换,则可以完全删除/停用交换。那将是最好的路线。