如何配置Linux实例的swap分区?

更新时间:2025-03-26 09:35:25

Linux系统中,如果系统需要更多的内存资源并且物理内存已满时,将使用swap分区(交换空间)。使用交换空间为不活跃的进程和数据提供临时存储,并防止物理内存满时内存不足。交换空间充当物理内存的扩展,并允许系统在物理内存耗尽时继续平稳运行。

重要
  • 开启swap分区可能会导致内存I/O性能下降。当ECS实例内存不足时,建议优先通过修改实例规格增加实例的物理内存。若因业务需要开启swap分区,请参见本文进行配置。

  • 如果您使用的是普通云盘,不建议使用swap分区,因为其I/O性能较低,会导致性能下降和I/O瓶颈。其他类型云盘可以根据实际情况使用swap分区,但应合理配置以避免频繁的swap分区操作,确保系统性能和稳定性。

查看swap分区配置

  1. 远程登录Linux实例。

    具体操作,请参见通过密码或密钥认证登录Linux实例

  2. 执行以下命令,查看swap分区的配置。

    swapon --show
    • 如果回显信息为空,表示系统没有swap分区,您可以根据需要配置swap分区

      image

    • 如果出现类似以下回显信息,表示系统已开启swap分区,您可以根据需要关闭swap分区

      image

配置swap分区

开启swap分区

  1. 执行以下命令,创建用于交换分区的文件。

    sudo dd if=/dev/zero of=/var/swap bs=1M count=1024
    说明

    其中:

    • of的值/var/swap是变量,表示交换分区的标识,请您自定义设置,该变量值不能和已有分区标识相同。

    • bscount的值表示创建的交换文件的大小,您可以自定义设置,该命令中bs=1M count=1024表示设置交换文件的大小为1 GB。

  2. 执行以下命令,将文件格式化为swap分区。

    sudo mkswap /var/swap

    image

    说明

    如果使用mkswap命令创建swap时出现类似mkswap: error: swap area needs to be at least 40 KiB报错,表示指定的swap分区文件太小,swap分区文件至少应该大于40 KB,您需要重新创建更大的交换文件。

  3. 执行以下命令,开启swap分区。

    sudo chmod 600 /var/swap
    sudo swapon /var/swap
  4. 执行以下命令,验证swap分区是否已开启。

    swapon --show

    如下回显信息表示swap分区已开启。

    image

  5. 执行以下命令,查询swap分区的UUID信息以及文件系统类型。

    sudo blkid /var/swap

    image

  6. 编辑/etc/fstab文件,并添加以下挂载信息,配置开机自动挂载swap分区。

    UUID=1197b17e-270c-41fd-afcd-b252829d****   /     swap     defaults     1   1

    image

  7. (条件可选)编辑/etc/rc.local文件, 排查是否有swapoff -a 命令。如果有将其修改为 swapon -a,确保 /etc/rc.local 中的命令与 /etc/fstab 的配置一致,以确保swap分区能够正常启用。

相关操作

Linux系统中,可以通过设置swappiness参数来确定系统对swap分区的使用原则,swappiness参数取值范围为0100。

  • swappiness值越低,表示最大限度地使用物理内存,物理内存使用完毕后,才会使用swap分区。

  • swappiness值越高,表示积极地使用swap分区,并且把内存中的数据及时地置换到swap分区。

重要

调整swap参数是一项需要谨慎操作的任务,因为不恰当地修改可能会导致系统性能下降或虚拟内存使用不符合预期,请您根据实际业务场景并在充分了解参数作用的基础上谨慎操作。如果您不确定是否需要调整,建议保持默认配置。

  1. 编辑/etc/sysctl.conf文件,以物理内存少于10%时才使用swap分区为例,需要调整以下参数值。

    vm.swappiness=10
  2. 保存并退出,然后执行以下命令使配置生效。

    sudo sysctl -p
  3. 执行以下命令,验证swappiness参数配置是否生效。

    cat /proc/sys/vm/swappiness

    如下回显信息表示swappiness参数配置已生效。

    image

关闭swap分区

  1. 执行以下命令,关闭swap分区。

    sudo swapoff /var/swap
    说明

    其中/var/swapswap分区标识,请您根据实际环境替换。

  2. 编辑etc/fstab文件,并删除类似以下的swap相关挂载信息,取消swap自动挂载。

    UUID=1197b17e-270c-41fd-afcd-b252829d****   /     swap     defaults     1   1
  3. 保存并退出,然后执行以下命令,确认swap分区是否已经关闭。

    swapon --show

    如果回显信息为空,表示系统已关闭swap分区。

    image

  • 本页导读 (1)
  • 查看swap分区配置
  • 配置swap分区
  • 关闭swap分区