Linux 配置交换空间(Swap)解决内存不足

🚀 作者主页: 有来技术

🔥 开源项目: youlai-mallvue3-element-adminyoulai-bootvue-uniapp-template

🌺 仓库主页: GitCodeGiteeGithub

💖 欢迎点赞 👍 收藏 ⭐评论 📝 如有错误敬请纠正!

目录

    • 前言
    • [1. 🔍 检查当前交换空间](#1. 🔍 检查当前交换空间)
    • [2. 📂 创建交换文件](#2. 📂 创建交换文件)
    • [3. 🔐 设置文件权限](#3. 🔐 设置文件权限)
    • [4. ⚙️ 将文件设置为交换空间](#4. ⚙️ 将文件设置为交换空间)
    • [5. ✔️ 启用交换空间](#5. ✔️ 启用交换空间)
    • [6. ✅ 验证交换空间](#6. ✅ 验证交换空间)
    • [7. 🔄 设置开机自动挂载](#7. 🔄 设置开机自动挂载)
    • [8. ⚙️ 调整交换空间使用策略(可选)](#8. ⚙️ 调整交换空间使用策略(可选))
    • 注意事项

前言

在 CentOS 系统中,交换空间(Swap)用于在物理内存不足时,临时将部分数据存储到硬盘上,以释放内存供其他进程使用。合理配置交换空间可以提升系统的稳定性和性能。


1. 🔍 检查当前交换空间

首先,使用 free -h 命令查看当前系统的交换空间使用情况:

bash 复制代码
free -h

如果输出中没有显示交换空间,说明当前未配置交换空间。

2. 📂 创建交换文件

在 CentOS 中,您可以通过创建交换文件来添加交换空间。假设您希望创建一个 2GB 的交换文件,执行以下命令:

bash 复制代码
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

这将创建一个名为 /swapfile 的 2GB 大小的文件。

交换空间大小建议

通常,交换空间的大小应根据物理内存来配置。常见的配置建议如下:

物理内存 ≤ 4GB:交换空间通常配置为物理内存的两倍,所以 4GB 内存的服务器应该配置 8GB 的交换空间。

物理内存 > 4GB:交换空间一般配置为物理内存大小加上 2GB,例如 8GB 内存的服务器可以配置 10GB 的交换空间。

3. 🔐 设置文件权限

为确保交换文件的安全性,设置文件权限:

bash 复制代码
sudo chmod 600 /swapfile

4. ⚙️ 将文件设置为交换空间

使用 mkswap 命令将文件设置为交换空间:

bash 复制代码
sudo mkswap /swapfile

5. ✔️ 启用交换空间

启用刚刚创建的交换空间:

bash 复制代码
sudo swapon /swapfile

6. ✅ 验证交换空间

再次使用 free -h 命令确认交换空间已成功添加。

7. 🔄 设置开机自动挂载

为了在系统重启后自动启用交换空间,需要将其添加到 /etc/fstab 文件中:

bash 复制代码
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab

8. ⚙️ 调整交换空间使用策略(可选)

vm.swappiness 参数控制内核将内存页交换到交换空间的倾向,取值范围为 0 到 100,默认 60。值越低,表示内核倾向于保留数据在内存中,只有在内存紧张时才使用交换空间。

查看当前值:

bash 复制代码
cat /proc/sys/vm/swappiness

要临时修改该值(例如设置为 30):

bash 复制代码
sudo sysctl vm.swappiness=30

要永久修改,请编辑 /etc/sysctl.conf 文件,添加或修改以下行:

bash 复制代码
vm.swappiness=30

然后,应用更改:

bash 复制代码
sudo sysctl -p

注意事项

  • 交换空间大小:根据系统的物理内存大小,合理配置交换空间。一般建议交换空间大小为物理内存的 1 到 2 倍,但对于内存较大的系统,交换空间可以适当减少。
  • 性能影响:频繁使用交换空间可能会导致系统性能下降,因为硬盘的读写速度远低于内存。
  • 交换分区与交换文件:交换分区通常性能更好,但交换文件更灵活,易于调整大小。根据实际需求选择合适的方式。
相关推荐
用户9718356334661 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪3 小时前
linux 拷贝文件或目录到指定的位置
linux
大树8818 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠19 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质19 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush419 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行52019 小时前
Linux 11 动态监控指令top
linux
Inhand陈工20 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智20 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩21 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言