帮助中心

如何配置Linux实例的swap分区(手动指令) 打印

  • linux, linuxswap, swap, 虚拟内存
  • 100

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

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

  • 可以根据实际情况使用swap分区,但应合理配置以避免频繁的swap分区操作,确保系统性能和稳定性。


查看swap分区配置

  1. 远程登录Linux实例。

    具体操作,登录Linux实例。

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

    swapon --show                            

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

    

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

   


配置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                            

    说明

    如果使用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. /etc/fstab文件中写入新分区信息,配置开机自动挂载swap分区。

    echo '/var/swap none swap defaults 0 0' | sudo tee -a /etc/fstab                            

  6. 查看新分区信息。

    cat /etc/fstab                            

    结果如下所示,可以查询已配置的swap分区信息。

    image

  7. 重启ECS实例后,再次检查swap分区是否自动启用。

    swapon --show                            

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

相关操作

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

  • 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/swap为swap分区标识,请您根据实际环境替换。

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

    /var/swap none swap defaults 0 0                            

  3. 保存并退出,然后执行以下命令,确认swap分区是否已经关闭。

    swapon --show                            

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

    image

 

 

 

 

 

 


此文章对您是否有帮助?

« 返回