什么是Swap分区 NVMe上如何使用Swap分区

NVMe是固态存储时代的下一个阶段,它提高了SSD和网络上其他存储设备的性能。如今,越来越多的服务器开始支持NVMe,IT人员是时候考虑Swap分区(交换区)的使用问题,来最大限度地利用这些系统了。

在研究NVMe磁盘上Swap分区的使用之前,我们需要了解什么是Swap分区,以及为什么最初要在SSD上避免使用它。然后,本文将探索在NVMe上使用Swap分区的问题。

什么是Swap分区 NVMe上如何使用Swap分区

Photo by Fancycrave.com from Pexels

对Swap分区的需求

Swap分区就像火灾保险,它是你永远不想用到的东西,但必须随时可用。在按照你希望的方式运行的系统上,应该有足够的内存来加载程序和缓存数据。如果你的系统有足够的RAM,那么就不会有问题。

当系统没有足够的RAM时,Swap分区就会发挥作用。硬盘上专门的特定区域充当额外的RAM,作为交换区。

Linux系统可能需要交换区的原因有很多。可能是RAM不足,也可能是因为一些服务器级别的应用程序(如Oracle数据库或SAP)需要一定的交换空间。除此之外,还有一些例外情况,例如,你的应用程序服务器存在内存泄漏。在这种情况下,您可能会面临内存耗尽、应用程序停止工作和客户不满意的风险。

Swap分区和SSD

在传统的机械硬盘上,Swap分区的使用从来都不是一个问题。但是,如果你使用的SSD的闪存RAM单元的寿命是有限的,情况就不同了。闪存上的每一次写入都会磨损内存单元,并且在某个时候,它会停止工作。

SSD设备的预期寿命用TB写入(TBW)值表示,这个值表示在SSD损坏之前能够写入多少字节。SSD设备的TBW值通常在产品规格中被列为持久参数。磁盘的TBW值取决于其质量,低端消费级SSD可能在低到20 TBW时就开始出现故障,而企业级/服务器级SSD通常可以达到1000 TBW以上。限制Swap分区的使用可以缩减SSD上写操作的数量。

Swap分区在NVMe上的使用

普通SSD设备和NVMe设备之间的主要区别在于它们连接到系统总线的方式。在物理级别上,这两种设备类型都使用闪存单元来写入数据,这意味着SSD和NVMe之间的TBW没有根本区别。但对于在NVMe设备上使用Swap分区来说,这意味着什么呢?这意味着适用于非NVMe SSD的规则也适用于NVMe SSD。

我要们明确一点:如果内存不足,并且Swap分区一直在使用,那么最好将其放在硬盘驱动器上。但这种情况不适用于典型的Linux系统,大多数使用Linux的服务器和工作站可以很好地处理所安装的物理RAM。

不过,如果这些系统上的Linux内核开始将内存页交换到磁盘,那么查看正在进行交换的是活动内存页还是非活动内存页就非常重要。非活动内存页是已经分配过一次,以后不会再使用的内存页。如果你的系统只交换非活动内存页,那么无需担心,也没有理由避免在SSD或NVMe驱动器上使用Swap分区。这是因为非活动内存页通常在换出后保持在原来的位置,这意味着只有非活动页被换出时写入交换的数据量要低得多。

查明系统是否正在积极使用Swap分区的最佳方法是运行vmstat命令,该命令提供了系统范围内的性能视图,包括进程、Swap使用情况、内存、分页和CPU活动。

例如,如果你运行vmstat 2 100命令,它将以2秒的间隔显示100次系统使用Swap的信息。你需要仔细看看Swap In和Swap Out结果的SI和SO列。vmstat输出的第一行是长期总结,可以忽略。在命令生成输出时,你要监视这些列的其余部分中发生的情况。如果你没有看到任何重要的活动,那就没什么好担心的。如果你确实看到了明显的活动,那么你的SSD设备正在慢慢损耗,你最好考虑向系统中增加更多RAM。