当 Linux 系统消耗完物理内存时,非活动页面会被移动到 SWAP 空间。SWAP 空间可以采用专用的 SWAP 分区或以 SWAP 文件的形式存在。然而,在大多数情况下,在虚拟机中运行 Ubuntu 系统时,并不会自动创建 SWAP 空间。

Ubuntu怎么创建、删除和调整 SWAP 空间? Linux修改swap交换空间的技巧-风君雪科技博客

本文就为大家介绍,如何在 Ubuntu 中创建、删除和调整 SWAP 空间。

Linux 中的 SWAP 空间

计算机的物理内存(RAM)被 Linux 内核划分为称为「页面」的块,将「页面」复制到预配置的次要存储设备(通常是 HDD 或 SSD)的动作就称为「交换」。预配置的专用空间称为「 SWAP 空间」,物理内存(RAM)和 SWAP 空间的总量称为虚拟内存。

推荐阅读:如何在 Windows 11 中设置和管理虚拟内存

是否有必要进行交换

进行交换有几个原因:

  • 当内存需求超过可用物理内存时,交换不太重要的「页面」可以释放更多内存。
  • 在程序启动期间,大部分「页面」可能很少被使用。交换这些「页面」可以为其他应用程序释放更多内存。
  • 如果没有分配 SWAP 空间,当 RAM 完全被占用时,可能导致系统崩溃,特别是只有小 RAM 空间的系统。

但是使用 SWAP 也存在一些缺点:

  • 与 RAM 相比,次要存储设备(如 HDD、SSD 等)的速度通常比较慢。以速度对比来看,RAM 的访问速度以纳秒为单位,而磁盘的访问速度以毫秒为单位。
  • 由于读写速度的差异,交换过程会比较缓慢。当进行大量交换时,最终会导致系统变慢。

SWAP 空间的类型

在 Linux 中,通常会遇到两种类型的 SWAP 空间:

  • 专用的 SWAP 分区:该分区只能用于交换,不能存储其他文件。
  • SWAP 文件:这些文件可以放置在文件系统的任何位置。

根据可用的 RAM 大小,SWAP 空间的大小可以不同。

Ubuntu 中的 SWAP 文件

Ubuntu 通常使用专用的 SWAP 分区进行交换。在大多数情况下,SWAP 分区会在安装过程中自动创建,但也可以根据需要自由创建和调整 SWAP 文件

推荐阅读:Windows 中的 Swapfile.sys 是什么

查看 SWAP 空间

在开始创建之前,请先使用以下命令检查您的 Ubuntu 系统是否已启用 SWAP 空间:

sudo swapon --show

Ubuntu怎么创建、删除和调整 SWAP 空间? Linux修改swap交换空间的技巧-风君雪科技博客

查看 SWAP 空间

该列表会包含所有的 SWAP 空间,包括 SWAP 分区SWAP 文件。如果输出为空,则表示当前系统尚未启用 SWAP 空间。

虽然可能,但同一台 Linux 计算机上有多个 SWAP 空间的情况并不常见。

创建 SWAP 文件

与 SWAP 分区相比,SWAP 文件具有一个重要的优势,即文件大小可以轻松调整,而无需触及磁盘分区来更改交换空间的大小。

在本节中,我们将创建一个新的 SWAP 文件,并将其添加到当前的交换池中。

1、在「终端」中使用以下命令创建一个空白文件:

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

Ubuntu怎么创建、删除和调整 SWAP 空间? Linux修改swap交换空间的技巧-风君雪科技博客

创建 SWAP 文件

  • 文件大小计算为 1M X 2048 = 2G,要创建不同大小的文件,请更改相应的count参数值。
  • /dev/zero是 Linux 系统中的一个特殊块设备,在每次读取时输出零字节。
  • 可以使用其他工具(例如 fallocate)来创建文件,但在某些情况下,可能会引起问题。

2、使用以下命令设置正确的文件权限:

sudo chmod 600 /swapfile

3、使用使用mkswap实用程序将文件格式化为 SWAP 空间:

sudo mkswap /swapfile

4、使用以下命令激活 swap 文件并将其添加到交换池中:

sudo swapon /swapfile

5、要让创建好的 SWAP 空间永久生效,需要将 swapfile 路径内容写入到/etc/fstab文件当中:

/swapfile swap swap defaults 0 0

Ubuntu怎么创建、删除和调整 SWAP 空间? Linux修改swap交换空间的技巧-风君雪科技博客

配置 SWAP 文件永久生效

6、使用swaponfree命令验证 SWAP 文件是否处于活动状态,如下所示:

sudo swapon --show
##或者
sudo free -h

Ubuntu怎么创建、删除和调整 SWAP 空间? Linux修改swap交换空间的技巧-风君雪科技博客

验证 SWAP 文件状态

调整 Swappiness 值

Swappiness 是 Linux 内核的一个属性,用于定义 Linux 系统使用 SWAP 空间的频率。swappiness值的范围是0100,较低的值会尽量减少内核对 SWAP 空间的使用,而较高的值会使 Linux 内核更积极地使用 SWAP 空间。

Ubuntu 系统的默认 Swappiness 值为60,您可以使用以下命令进行查看:

cat /proc/sys/vm/swappiness

值为60对于 Ubuntu Desktop 来说还可以,但对于 Ubuntu Server来说,SWAP 的使用频率就比较高了,所以您可能需要将值设置得较低一些。例如,要将swappiness值设置为40,请执行以下命令:

sudo sysctl vm.swappiness=40

Ubuntu怎么创建、删除和调整 SWAP 空间? Linux修改swap交换空间的技巧-风君雪科技博客

查看及调整 Swappiness 值

如果要让设置在系统重启后依然有效,需要在/etc/sysctl.conf文件中添加以下内容:

vm.swappiness=40

最佳的 swappiness 值取决于 Ubuntu 系统的工作负载和内存使用方式,您应该逐渐调整这个参数,以找到最佳取值。

删除 SWAP 文件

要停用并删除 SWAP 文件,请按照下列步骤操作:

1、在「终端」中运行以下命令停用 SWAP 文件:

sudo swapoff -v /swapfile

2、在/etc/fstab文件中删除 swap 相关的行。

3、最后执行以下命令删除 swapfile 文件:

sudo rm /swapfile

Ubuntu怎么创建、删除和调整 SWAP 空间? Linux修改swap交换空间的技巧-风君雪科技博客

删除 SWAP 文件

调整 SWAP 空间大小

根据 SWAP 空间的类型(分区或文件),调整大小的过程可能会有所不同。

调整 SWAP 分区大小

如果分区后面有未分配的空间,才能扩展分区大小。否则,唯一的调整选项是缩小分区大小。这也同样适用于 SWAP 分区。

如果您使用的是 GNOME 桌面环境,「磁盘」应用程序可以提供相关信息。

Ubuntu怎么创建、删除和调整 SWAP 空间? Linux修改swap交换空间的技巧-风君雪科技博客

使用「磁盘」工具查看及调整 SWAP 分区大小

或者,可以使用 GParted 来进行可视化。

Ubuntu怎么创建、删除和调整 SWAP 空间? Linux修改swap交换空间的技巧-风君雪科技博客

使用 GParted 工具查看及调整 SWAP 分区大小

如您所见,在这个系统中,交换分区直接紧邻根分区。这样就没有空间来扩展 SWAP 分区了。

调整 SWAP 文件大小

1、要操作 SWAP 文件,请运行以下命令将其从交换池中移除:

sudo swapoff /swapfile

2、重新运行dd命令来增加文件的大小:

sudo dd if=/dev/zero of=/swapfile bs=1G count=2 oflag=append conv=notrunc

Ubuntu怎么创建、删除和调整 SWAP 空间? Linux修改swap交换空间的技巧-风君雪科技博客

调整 SWAP 文件大小

3、在这里,我们将交换文件增加到 2GB。接下来,使用以下命令将文件重新格式化为交换空间:

sudo mkswap /swapfile

4、将其作为交换文件启用:

sudo swapon /swapfile

本文我们详细讨论了在 Ubuntu 中管理 SWAP 空间的示例,探讨了不同类型的 SWAP 空间,并学习了如何调整 SWAP 分区大小以及如何使用 SWAP 文件(创建、删除和调整大小)。