在CentOS 7上添加Swap交换空间完整指南

news/2025/2/28 23:55:00/

在CentOS 7上添加Swap交换空间完整指南

前言:为何需要Swap空间?

当服务器内存资源告急时,Swap空间能有效防止应用崩溃或数据丢失。这个位于硬盘上的特殊区域可作为内存的应急缓冲区,虽然读写速度不及物理内存,但能避免系统直接终止进程的风险。本文将以CentOS 7为例,手把手教你创建Swap空间。

一、环境准备

  • CentOS 7操作系统
  • 具有sudo权限的非root用户
  • 剩余磁盘空间(建议至少10GB)

二、操作全流程

2.1 检查现有Swap配置

# 查看Swap使用概况
swapon -s# 查看内存与Swap状态(MB单位显示)
free -m

若返回结果中Swap的total值为0,说明尚未配置Swap。

2.2 计算磁盘可用空间

df -h

示例输出

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        59G   15G   42G  26% /
...

注意:建议Swap大小设置为物理内存的1-2倍,内存密集型应用可适当增加。

2.3 创建Swap文件(以4GB为例)

# 创建专用目录防止误删
sudo mkdir /swap_area# 使用dd命令确保兼容性(fallocate在部分文件系统可能失效)
sudo dd if=/dev/zero of=/swap_area/swapfile bs=1M count=4096# 设置安全权限
sudo chmod 600 /swap_area/swapfile

2.4 启用Swap空间

# 格式化Swap文件
sudo mkswap /swap_area/swapfile# 立即激活Swap
sudo swapon /swap_area/swapfile

2.5 配置永久生效

sudo vim /etc/fstab

在文件末尾追加:

/swap_area/swapfile swap swap defaults 0 0

三、高级调优指南

3.1 内存交换倾向性调节

# 查看当前swappiness值(默认30)
cat /proc/sys/vm/swappiness# 临时设置为推荐值(服务器建议10-20)
sudo sysctl vm.swappiness=20# 永久生效配置
echo "vm.swappiness=20" | sudo tee -a /etc/sysctl.conf

3.2 文件缓存优化

# 查看缓存压力值(默认100)
cat /proc/sys/vm/vfs_cache_pressure# 设置为推荐值(SSD建议50,HDD建议80)
sudo sysctl vm.vfs_cache_pressure=80
echo "vm.vfs_cache_pressure=80" | sudo tee -a /etc/sysctl.conf

四、运维管理技巧

4.1 实时监控命令

watch -n 1 'free -m | grep Swap'

4.2 安全禁用Swap

# 逐步释放Swap内容(防止内存突增)
sudo swapoff -a# 重新激活所有Swap
sudo swapon -a

Ps:swapoff -a命令用于临时禁用,不会影响centos服务器正常运行,有测试过。

禁用会先把swap数据移动到内存中(可视化工具可以看到数据转移的过程,swap占用慢慢减少,内容占用慢慢增加),最后才停止。

五、重要注意事项

  1. 云服务器慎用:AWS/阿里云等平台的SSD实例长期使用Swap可能导致磁盘损耗
  2. 性能瓶颈:Swap频繁读写(si/so值高)说明需升级内存
  3. 文件位置:建议将Swap文件存放在独立分区或高速磁盘

总结

通过合理配置Swap空间,可有效提升服务器稳定性。但需注意:

  • Swap不是内存不足的终极解决方案
  • 长期高Swap使用率应考虑升级硬件
  • 定期监控free -mvmstat 1了解内存压力

附录:常用命令速查表

命令功能描述示例
swapon激活Swapswapon /swapfile
swapoff停用Swapswapoff -a
mkswap格式化Swapmkswap /swapfile
vmstat监控交换vmstat 1

写在最后:

🔥 排期计算,真实场景救急:

  • 产品经理:“这个需求开发要15个工作日,哪天必须提测?”
  • 打工人:“请3天年假,加上周末到底能休几天?”
  • HR:“合同规定20个工作日内发放,最后期限是哪天?”
    🚀 微信小程序:排期计算器,你的智能时间管家,告别手动算到崩溃!


http://www.ppmy.cn/news/1575625.html

相关文章

登录-10.Filter-登录校验过滤器

一.登录校验过滤器的实现思路 我们要实现登录校验过滤器,就要首先明白登录校验过滤器的实现思路。登录校验过滤器是用来实现登录校验的。那么首先思考第一个问题,所有的请求都需要校验吗? 答案是否定的,因为login请求就不需要过滤…

CSP-S 2022 T1假期计划

CSP-S 2022 T1假期计划 先思考暴力做法,题目需要找到四个不相同的景点,那我们就枚举这四个景点,判断它们之间的距离是否符合条件,条件是任意两个点之间的距离是否大于 k k k,所以我们需要求出任意两点之间的距离。常用…

【Java项目】基于Spring Boot的旅游管理系统

【Java项目】基于Spring Boot的旅游管理系统 技术简介:采用Java技术、Spring Boot框架、MySQL数据库等实现。 系统简介:旅游管理系统是一个基于Web的在线平台,主要分为前台和后台两大功能模块。前台功能模块包括(1)首…

Redis-列表结构实操

列表实操 前言简单练习基本的LPUSH和RPUSH操作列表元素的访问与修改列表元素的插入和删除列表阻塞操作 困难练习分页列表游标机制业务上考虑直接访问任意页如何高效分页局限性小结 实现限时排行版轮换消息队列可靠性实现分布式锁实现 总结 前言 之前总结过-列表的数据结构,但是…

go 查看版本

个人学习笔记 1. 打开终端(或命令提示符) 在 Windows 上,使用 cmd 或 PowerShell。在 macOS 或 Linux 上,使用终端应用程序。 2. 运行以下命令 go version 3. 查看输出 命令执行后,终端会显示已安装的 Go 版本&…

JAVA【微服务】Spring AI 使用详解

目录 一、前言二、Spring AI 概述2.1 什么是 Spring AI2.2 Spring AI 特点2.3 Spring AI 带来的便利2.4 Spring AI 应用领域2.4.1 聊天模型2.4.2 文本到图像模型2.4.3 音频转文本2.4.4 嵌入大模型使用2.4.5 矢量数据库支持2.4.6 数据工程 ETL 框架三、Spring AI 对接 ChatGPT3.…

设计模式-(装饰器,适配器,观察者,外观)

装饰器模式 概念: 它允许在不改变对象自身的情况下,动态地给对象添加额外的功能。通过使用装饰器模式,可以在运行时对对象进行扩展,而不需要创建大量的子类 应用: 当你希望在不修改原有类的情况下,给对…

软件测试丨计算机视觉场景下的边缘计算与测试场景

在计算机视觉场景中,边缘计算与测试场景的结合具有重要意义。以下是两者的关键点: 1. 边缘计算在计算机视觉中的作用 边缘计算将计算任务从云端转移到靠近数据源的边缘设备,如摄像头、传感器等,具有以下优势: 低延迟…