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

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

前言:为何需要Swap空间?

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

一、环境准备

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

二、操作全流程

2.1 检查现有Swap配置

bash 复制代码
# 查看Swap使用概况
swapon -s

# 查看内存与Swap状态(MB单位显示)
free -m

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

2.2 计算磁盘可用空间

bash 复制代码
df -h

示例输出

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

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

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

bash 复制代码
# 创建专用目录防止误删
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空间

bash 复制代码
# 格式化Swap文件
sudo mkswap /swap_area/swapfile

# 立即激活Swap
sudo swapon /swap_area/swapfile

2.5 配置永久生效

bash 复制代码
sudo vim /etc/fstab

在文件末尾追加:

复制代码
/swap_area/swapfile swap swap defaults 0 0

三、高级调优指南

3.1 内存交换倾向性调节

bash 复制代码
# 查看当前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 文件缓存优化

bash 复制代码
# 查看缓存压力值(默认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 实时监控命令

bash 复制代码
watch -n 1 'free -m | grep Swap'

4.2 安全禁用Swap

bash 复制代码
# 逐步释放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 激活Swap swapon /swapfile
swapoff 停用Swap swapoff -a
mkswap 格式化Swap mkswap /swapfile
vmstat 监控交换 vmstat 1

写在最后:

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

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

相关推荐
不会就选b1 分钟前
Linux之socket编程(七)----序列化与反序列化(1)
java·linux·服务器
极小狐14 分钟前
极狐GitLab Duo 功能更新:扩展 MCP 工具集、支持 MR 事件触发
运维·gitlab·agent·mr·极狐gitlab·mcp·极狐gitlab duo
隔窗听雨眠15 分钟前
无辅助损失函数的负载均衡:DeepSeek MoE架构的核心突破
运维·架构·负载均衡
zerwave22 分钟前
从零实现简化 DDS 完整技术文档(含模块作用与详细注释)
linux·c++·机器人
guo_wen_qiang3 小时前
mac中docker desktop服务端开启远程访问
运维·服务器·macos·docker
小五传输3 小时前
消防总队信创改造实践:国产文件传输服务器解决文件传输难题
大数据·运维·安全
云飞云共享云桌面3 小时前
医疗器械设备研发:多人同时操作 SolidWorks,怎样依靠单台服务器替代多工作站
运维·服务器·网络·数据库·制造
T型码农要学习3 小时前
开源项目5|FileBrowser:免费在线文件管理器!随时随地管控服务器文件
运维·服务器·人工智能·开源
朱 欢 庆4 小时前
云服务器附件备份到本机内网服务器
运维·服务器·前端·经验分享
智恒百亿4 小时前
8 卡 RTX 5090 服务器深度实测:256GB 显存能否支撑 70B 模型微调?选型参考
大数据·运维·服务器·人工智能