详解Linux中如何释放交换空间swap

 更新时间:2023年07月13日 11:08:31   作者:老鼠只爱大米  
交换内存swap是linux下一个虚拟内存的概念,它是利用磁盘空间虚拟出的一块逻辑内存,用于解决物理内存容量不足的问题,本文就给大家介绍一下在Linux中如何释放交换空间swap,需要的朋友可以参考下

一、Linux内存机制简单介绍

直接从物理内存读写数据要比从硬盘读写数据要快的多(硬盘磁道寻址),因此,我们希望所有数据的读写都在内存完成,但是内存大小是有限的,并且内存价格高于硬盘价格,于是就有了物理内存与虚拟内存的概念。

物理内存:系统硬件提供的内存大小,是真正的内存,可用 free -h 查看内存的使用情况。

交换内存Swap:交换内存swap是linux下一个虚拟内存的概念,它是利用磁盘空间虚拟出的一块逻辑内存,用于解决物理内存容量不足的问题。可查看swapon -s查看交换内存的挂载盘。

二、如何释放交换内存

1. 设置swappiness值为0,表示尽可能不使用交换内存

(1)临时设置方案,重启后不生效

# 设置vm.swappiness为0
sysctl vm.swappiness=0
# 查看swappiness值
cat /proc/sys/vm/swappiness

(2)永久设置方案,重启后仍然生效

vi /etc/sysctl.conf
# 添加
vm.swappiness=0

者直接写入

echo 'vm.swappniess=0'>>/etc/sysctl.conf

2.释放交换分区

关闭交换分区的前提

首先要保证内存剩余量要大于等于swap使用量,否则会宕机!因为根据内存机制,swap分区一旦释放,所有存放在swap分区的文件都会转存到物理内存上。然后再通过重新挂载swap分区完成释放swap。

(1)查看内存剩余情况

free -h

(2)查看交换分区的挂载盘

swapon -s

(3)关闭挂载分区(彻底关闭swap)

swapoff /dev/dm-1

注意:前提是swap使用小于空闲内存,足够将swap内存转存到物理内存中,否则会宕机

(4)再次查看交换分区的挂载情况

swapon -s

(5)重新开启swap挂载

如果不想彻底关闭分区,用命令swapon /dev/dm-1(需要换成自己的挂载分区)  打开即可

swapon /dev/dm-1

3.定时释放交换分区

如果系统内存确实不足,不想禁用交换分区时,可以在2的基础上改进,设置定时释放交换分区

(1)查看交换分区的挂载情况

# 查看交换分区挂载的位置,假设此处查看的结果为  /dev/dm-1
swapon -s

(2)编写释放交换分区的脚本(其实就是将2的步骤组合起来)

#!/bin/bash
#关闭所有交换空间,Linux会自动将swap内容转到内存中
swapoff /dev/dm-1
#开启交换空间
swapon /dev/dm-1
#输出
echo "释放完毕"

(3)设置定时任务(假设定时文件存放在/home/freeswap.sh)

编写 /etc/crontab,并添加定时执行脚本的任务

vi /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
# 每天凌晨1点释放交换空间
0 1 * * * root /home/freeswap.sh

到此这篇关于详解Linux中如何释放交换空间swap的文章就介绍到这了,更多相关Linux释放交换空间swap内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Apache2.4.2编译安装2个常见错误和解决方法

    Apache2.4.2编译安装2个常见错误和解决方法

    这篇文章主要介绍了Apache2.4.2编译安装2个常见错误和解决方法,需要的朋友可以参考下
    2014-06-06
  • linux中通过文件描述符获取文件绝对路径的方法

    linux中通过文件描述符获取文件绝对路径的方法

    下面小编就为大家带来一篇linux中通过文件描述符获取文件绝对路径的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Linux使用traceroute来进行网络诊断分析

    Linux使用traceroute来进行网络诊断分析

    在Linux系统下,traceroute是一个网络诊断工具,用于追踪一个数据包从源点到目的地所经过的路由路径,它通过向目的地发送一系列的 UDP 或 ICMP 数据包,并记录每个数据包所经过的路由器,来显示数据包到达目的地的路径,本文介绍了Linux如何使用traceroute来进行网络诊断分析
    2025-03-03
  • Linux线程优先级设置方式

    Linux线程优先级设置方式

    Linux线程分普通(系统动态调度)和实时(用户显式设置)两类,实时线程采用SCHED_FIFO或SCHED_RR策略,调整优先级可通过nice/renice命令或chrt工具、C代码接口,需注意权限及对系统资源的影响
    2025-07-07
  • Linux 4.0 不再需要重启

    Linux 4.0 不再需要重启

    在大多数的服务器或者数据中心里,喜欢用linux的一个原因是你不需要频繁的进行重启操作。诚然,某些关键性的补丁必须要进行重启,但你也可以等到数月后再做此操作。现在,得益于 linux 内核的最新更新 你也许可以数年间都不用重启。
    2015-03-03
  • CentOS8下的root密码快速修改方法

    CentOS8下的root密码快速修改方法

    这篇文章主要介绍了CentOS8版本的root密码快速修改方法,本文图文并茂通过实例讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Linux用户切换与管理的完整指南

    Linux用户切换与管理的完整指南

    这篇文章主要介绍了Linux系统中用户切换与管理的全流程,涵盖su/sudo权限操作、SSH远程认证、会话管理工具、安全配置策略、状态监控命令及故障排查方法,重点强调了权限控制、安全加固与操作审计等核心实践,需要的朋友可以参考下
    2025-07-07
  • Linux下安装php加速软件Xcache的方法

    Linux下安装php加速软件Xcache的方法

    这篇文章主要介绍了Linux下安装php加速软件Xcache的方法,需要的朋友可以参考下
    2015-07-07
  • Centos7.3安装部署最新版Zabbix3.4的方法(图文)

    Centos7.3安装部署最新版Zabbix3.4的方法(图文)

    这篇文章主要介绍了Centos7.3安装部署最新版Zabbix3.4的方法(图文),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Linux安装mysql8全过程

    Linux安装mysql8全过程

    文章介绍了在CentOS7和Debian/Ubuntu系统上安装MySQL8.0的两种方法:压缩包安装与APT/Yum安装,涵盖卸载旧版、配置文件设置、密码管理、远程连接及DBeaver连接问题解决
    2025-08-08

最新评论