在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个工作日内发放,最后期限是哪天?"
    🚀 微信小程序:排期计算器,你的智能时间管家,告别手动算到崩溃!

相关推荐
Kina_C4 分钟前
LVS-NAT 负载均衡实验从环境搭建到规则持久化
linux·运维·服务器·负载均衡·lvs
小肝一下17 分钟前
7. 库制作与原理
linux·c语言·操作系统·bash·shell·动静态库
Android洋芋27 分钟前
PrintFriendly网页文章转PDF插件工具及技术分析
运维·服务器·pdf·网页转pdf
Elastic 中国社区官方博客32 分钟前
使用重新设计的 AutoOps 更快地进行 Elasticsearch 问题排查
大数据·运维·前端·人工智能·elasticsearch·搜索引擎·全文检索
RoboWizard1 小时前
金士顿高速闪存盘 单双接口适配多元存储需求
大数据·运维·人工智能·智能手机·云计算
hkj88081 小时前
Ubuntu 20.04 安装 OpenJDK 17
linux·运维·ubuntu
huainingning1 小时前
防火墙重启后ssl登录提示证书过期临时解决方法
linux·服务器·ssl
sulikey1 小时前
服务器安装Docker教程。如何在云服务器安装Docker容器?
运维·服务器·ubuntu·docker·安装教程·云服务器
许彰午1 小时前
17-22-运维与高级主题
运维·网络
万联WANFLOW1 小时前
外贸独立站:服务器放海外国内后台卡,放国内海外客户打不开——这道两头难怎么破?
运维·网络·数据库·经验分享