在Linux系统中,如果系统需要更多的内存资源并且物理内存已满时,将使用swap分区(交换空间)。使用交换空间为不活跃的进程和数据提供临时存储,并防止物理内存满时内存不足。交换空间充当物理内存的扩展,并允许系统在物理内存耗尽时继续平稳运行。
开启swap分区可能会导致内存I/O性能下降。当ECS实例内存不足时,建议优先通过修改实例规格增加实例的物理内存。若因业务需要开启swap分区,请参见本文进行配置。
如果您使用的是普通云盘,不建议使用swap分区,因为其I/O性能较低,会导致性能下降和I/O瓶颈。其他类型云盘可以根据实际情况使用swap分区,但应合理配置以避免频繁的swap分区操作,确保系统性能和稳定性。
查看swap分区配置
远程登录Linux实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
执行以下命令,查看swap分区的配置。
swapon --show
配置swap分区
开启swap分区
执行以下命令,创建用于交换分区的文件。
sudo dd if=/dev/zero of=/var/swap bs=1M count=1024
其中:
of
的值/var/swap
是变量,表示交换分区的标识,请您自定义设置,该变量值不能和已有分区标识相同。bs
和count
的值表示创建的交换文件的大小,您可以自定义设置,该命令中bs=1M count=1024
表示设置交换文件的大小为1 GB。
执行以下命令,将文件格式化为swap分区。
sudo mkswap /var/swap
如果使用
mkswap
命令创建swap时出现类似mkswap: error: swap area needs to be at least 40 KiB
报错,表示指定的swap分区文件太小,swap分区文件至少应该大于40 KB,您需要重新创建更大的交换文件。执行以下命令,开启swap分区。
sudo chmod 600 /var/swap sudo swapon /var/swap
执行以下命令,验证swap分区是否已开启。
swapon --show
如下回显信息表示swap分区已开启。
执行以下命令,查询swap分区的UUID信息以及文件系统类型。
sudo blkid /var/swap
编辑
/etc/fstab
文件,并添加以下挂载信息,配置开机自动挂载swap分区。UUID=1197b17e-270c-41fd-afcd-b252829d**** / swap defaults 1 1
(条件可选)编辑
/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参数是一项需要谨慎操作的任务,因为不恰当地修改可能会导致系统性能下降或虚拟内存使用不符合预期,请您根据实际业务场景并在充分了解参数作用的基础上谨慎操作。如果您不确定是否需要调整,建议保持默认配置。
编辑
/etc/sysctl.conf
文件,以物理内存少于10%时才使用swap分区为例,需要调整以下参数值。vm.swappiness=10
保存并退出,然后执行以下命令使配置生效。
sudo sysctl -p
执行以下命令,验证
swappiness
参数配置是否生效。cat /proc/sys/vm/swappiness
如下回显信息表示
swappiness
参数配置已生效。
关闭swap分区
执行以下命令,关闭swap分区。
sudo swapoff /var/swap
其中
/var/swap
为swap分区标识,请您根据实际环境替换。编辑
etc/fstab
文件,并删除类似以下的swap相关挂载信息,取消swap自动挂载。UUID=1197b17e-270c-41fd-afcd-b252829d**** / swap defaults 1 1
保存并退出,然后执行以下命令,确认swap分区是否已经关闭。
swapon --show
如果回显信息为空,表示系统已关闭swap分区。
- 本页导读 (1)
- 查看swap分区配置
- 配置swap分区
- 关闭swap分区