![使用 SSD 后,我是否需要更改交换性以延长 SSD 寿命?](https://linux22.com/image/971406/%E4%BD%BF%E7%94%A8%20SSD%20%E5%90%8E%EF%BC%8C%E6%88%91%E6%98%AF%E5%90%A6%E9%9C%80%E8%A6%81%E6%9B%B4%E6%94%B9%E4%BA%A4%E6%8D%A2%E6%80%A7%E4%BB%A5%E5%BB%B6%E9%95%BF%20SSD%20%E5%AF%BF%E5%91%BD%EF%BC%9F.png)
我遇到了本文其中包括以下建议:
交换和交换性
我把交换分区保留在旧硬盘上。在固态硬盘上交换会更快,但也会缩短固态硬盘的使用寿命。
我的系统内存充足,所以我还将 swappiness 值降低到 0,以告诉 Ubuntu 仅在绝对必要时才进行交换。我通过在 /etc/sysctl.conf 中添加行 vm.swappiness=0 来实现这一点。
将 swappiness 设置为零真的会延长我的 SSD 寿命吗?我在其他地方找不到关于此内容的参考资料。
答案1
将交换量降低到 0 意味着仅当没有可用的空闲 RAM 时,操作系统才会开始使用 SSD 进行交换。
理论上,这可以延长 SSD 的使用寿命,因为 SSD 的写入次数会减少。这取决于它是否实际上延长了 SSD 的使用寿命:
Linux 很少使用交换 (尤其是与 Windows 相比),即使 swappiness 值较高,因此此设置可能不会改变 RAM 充足的系统上的交换行为(与 RAM 使用率相比)。如果 RAM 不足,则默认值为 60 时交换可能会非常频繁,在这种情况下,降低 swappiness 可能会对 SSD 的写入周期限制产生重大影响。
对于简单的消费者用途来说,SSD 的写入耐久性仍然相当高,至少对于多层陶瓷电容器基于 MLC 的 SSD。他们说,目前基于 MLC 的 SSD 在磨损前可以承受约 3000-5000 次写入周期。按照 3000 的限制计算,这意味着每天写入 10 GB 的 128 GB SSD 可以正常工作约 38000 天,也就是约 100 年。当然,如果你有一个更大的 SSD,那么磨损会更晚。因此,你的 SSD 不太可能因为单元磨损而损坏。(当然,如果你在公司/服务器环境中使用 SSD,那么每天的写入次数要高得多,但在公司环境中通常速尔使用基于 SSD 的 SSD。
- 这个写入周期限制如此之高,以至于 SSD 制造商(最初是三星)开始生产薄层色谱基于 TLC 的 SSD 面向消费者,只能承受约 1000 次写入周期,但价格更便宜。这些公司表示,即使这些 SSD 的写入周期限制也比产品预期使用时间更长。(2024 年我们不太可能仍在使用 128 GB SSD)但是,如果您拥有基于 TLC 的 SSD 并且您经常向该驱动器写入数据,例如 50GB/天,那么降低 swappiness 值可能会对您的 SSD 寿命产生重大影响。
- 这是一个巨大的线索爱好者们通过不断写入来测试 SSD 的耐久性。尽管他们的测试方法可能不完全正确,但他们的结果令人印象深刻且令人欣慰。
总结一下:理论上是的,减少交换会延长 SSD 寿命,但实际上可能不会。但如果你有一个基于 TLC 的 SSD,内存不足,而且你通常频繁写入 SSD,那么它也会产生实际效果。
我有一个基于 MLC 的 128 GB SSD,我主要将我的系统用于办公/浏览,与我的 RAM 使用量相比,我的 RAM 充足,所以我的 SSD 不会承受很大的写入负载(尽管我的机器 24/7 都在运行)。但是因为我根本不需要交换,而且降低交换性很容易,所以我在安装 SSD 时将交换性设置为 0,因为为什么不这样做呢?(实际上,我在所有机器上都将 swappiness 设置为 0,即使在只有 HDD 的机器上也是如此。)
您可以使用 检查 SSD 在其使用寿命期间遭受了多少写入smartctl
,查找带有 的行Total_LBAs_Written
,这将显示已向 SSD 写入了多少 512b 扇区。(是的,我知道 SSD 的物理块为 4K,而不是 512b,但 SMART 仍然说:Sector Size: 512 bytes logical/physical
使用 512 个块,我得到的结果与 Lifetime 写入输出相当tune2fs -l
。)因此,将该数字乘以 512,您将得到以字节为单位的写入,或简称:
sudo smartctl -a /dev/sda | grep Total_LBAs_Written | awk '{print $10*512/1024/1024/1024 " GiB"}'
将以 GiB 为单位打印 /dev/sda。(只需将设备名称更改为您的 SSD 名称即可。)我的 128 GB SSD 在一年多一点的时间里遭受了约 800 GB 的写入,这意味着从 3000 中只使用了 7 个写入周期。
答案2
所有关于 SSD 磨损的讨论都是“猜测”。我也有同样的感觉,但开始在商业上使用它们。我拥有东海岸最快的 Oracle 集群之一。3 年前,我们为整个存储和临时文件系统建立了 SSD。我们每天对 SSD 进行数十亿次写入操作。3 年后,我们仍然没有接近 10% 的烧毁率。如果我能在商业上做到这一点,他们就会绝不在住宅环境中磨损严重。因此,我在我的 Linux 工作站上实现了专门用于交换空间的 SSD 解决方案,然后 BAM!
因此,您的里程可能会有所不同,但从各方面来说,SSD 都是可行的方法。
答案3
是的。您确实需要更改 swappiness 来延长 SSD 寿命。
Swappiness 可让您控制正在使用的交换文件的数量。Swappiness 值可以从 0 更改为 100。Swappiness 值越高,内核就越会尝试使用交换空间,而 Swappiness 值越低,则意味着内核将使用更少的交换空间或不使用交换空间,具体取决于我们的设置。
默认的 swappiness 值为 60,如果您有足够的 RAM,则应避免使用写入和读取到 SSD 的交换空间,而应使用 HDD。对于具有 4 GB 或更多 RAM 的系统,请尝试通过将 swappiness 设置更改为 10 甚至 0 之间来减少交换的使用,并将交换文件放在 HDD 上。
运行交换空间非常耗费磁盘 I/O,这对 SSD 来说实际上很糟糕。SSD 只能处理一定数量的写入,否则就会损坏,您不得不购买另一个驱动器。因此,如果可能的话,请将交换空间移至辅助旋转驱动器……远离 SSD。
固态硬盘因写入操作而磨损得相对较快。尤其是最老一代的固态硬盘在这方面很脆弱,但新一代固态硬盘的情况仍然较轻。
您可以在新磁盘上创建新分区,或者只创建交换文件;创建新分区几乎总是会带来更好的性能。
如果您没有其他驱动器可以移动,您可以更改设置,仅在物理 RAM 已满时才启用交换,这将减少交换文件的负载并帮助您的 SSD。只需按键盘上的Ctrl+ Alt+T即可打开终端。打开后,运行以下命令:
echo 0 > /proc/sys/vm/swappiness
SSD 的磨损与写入周期有关
固态硬盘因写入操作而磨损得相对较快。尤其是最老一代的固态硬盘在这方面很脆弱,但新一代固态硬盘的情况仍然较轻。
使用修剪
TRIM 是使用 SSD 的一个优势。它以软件形式运行并与 SSD 控制器通信,告诉它文件系统不再需要哪些“块”,可以安全地清理和覆盖。这不会真正提高性能,但会延长 SSD 的使用寿命。
资料来源:Linux SSD 调整&如何优化你的 SSD
答案4
我强烈建议您将 swappiness 设置更改为较低的值,如果您的系统有足够的内存/RAM(4 GB 或更多),则最好将 swappiness 设置为“0”。即使在高 RAM 系统中将 swappiness 设置为 10,我也几乎看不到 ubuntu 在交换分区上放置任何东西,因为大多数东西都已经在 RAM 上了。
我做了一些谷歌搜索,找到了这个页面http://namhuy.net/1563/how-to-tweak-and-optimize-ssd-for-ubuntu-linux-mint.html
可能会帮助你调整和优化 SSD,让你的 Ubuntu 系统运行更高效,让你的 SSD 寿命更长