当前位置: 首页 > ops >正文

Linux的交换区

Linux 交换区(Swap)详解

交换区(Swap)是 Linux 系统用于扩展内存的一种机制,它将部分磁盘空间虚拟成内存使用。当物理内存(RAM)不足时,系统会将不活跃的内存页移动到交换区,从而避免进程因内存不足(OOM)被强制终止。


1. 交换区的作用

  • 扩展可用内存:当 RAM 耗尽时,系统使用 Swap 作为后备存储。
  • 休眠(Hibernate)支持:休眠时,内存数据会保存到 Swap。
  • 减少 OOM 风险:避免系统因内存不足而崩溃。

2. 交换区的类型

类型说明
Swap 分区独立的磁盘分区(推荐方式,性能较好)
Swap 文件普通文件模拟的交换区(灵活,无需重新分区)
ZRAM基于内存的压缩交换(适用于内存较小设备,如嵌入式系统)

3. 查看当前交换区

free -h              # 查看内存和 Swap 使用情况
swapon --show        # 查看活跃的 Swap 设备
cat /proc/swaps      # 查看 Swap 详细信息

输出示例

              total        used        free      shared  buff/cache   available
Mem:           7.7G        2.1G        3.2G        345M        2.4G        5.0G
Swap:          2.0G        0B          2.0G

4. 创建交换区

(1) 创建 Swap 文件(推荐)

# 1. 创建空文件(大小 4GB)
sudo fallocate -l 4G /swapfile# 2. 设置权限(仅 root 可读写)
sudo chmod 600 /swapfile# 3. 格式化为 Swap
sudo mkswap /swapfile# 4. 启用 Swap
sudo swapon /swapfile# 5. 永久生效(写入 /etc/fstab)
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

(2) 创建 Swap 分区

# 1. 使用 fdisk/gdisk 创建新分区(类型为 Linux Swap)
# 2. 格式化
sudo mkswap /dev/sdXN   # 替换为实际分区(如 /dev/sdb1)# 3. 启用
sudo swapon /dev/sdXN# 4. 写入 /etc/fstab
echo '/dev/sdXN none swap sw 0 0' | sudo tee -a /etc/fstab

5. 调整交换区使用策略

Linux 通过 swappiness 控制 Swap 使用频率(范围 0-100):

  • 0:尽量不使用 Swap(除非内存耗尽)。
  • 100:积极使用 Swap(可能降低性能)。

查看当前值

cat /proc/sys/vm/swappiness

临时修改

sudo sysctl vm.swappiness=10

永久修改

echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

6. 删除交换区

(1) 禁用 Swap 文件

sudo swapoff /swapfile
sudo rm /swapfile
sudo sed -i '/\/swapfile/d' /etc/fstab

(2) 禁用 Swap 分区

sudo swapoff /dev/sdXN
sudo sed -i '/\/dev\/sdXN/d' /etc/fstab

7. 交换区大小建议

物理内存(RAM)推荐 Swap 大小
≤ 2GBRAM × 2
2GB–8GB等于 RAM 大小
8GB–64GBRAM × 0.5(至少 4GB)
≥ 64GB4GB(或不用 Swap)

8. 性能优化

  • 优先使用 Swap 分区(比文件性能高 5%~10%)。
  • SSD 比 HDD 更适合 Swap(减少延迟)。
  • 避免过度使用 Swap(频繁交换会拖慢系统)。

9. 常见问题

(1) Swap 使用率过高

  • 原因:物理内存不足,系统频繁换页。
  • 解决:增加 RAM 或优化应用内存占用。

(2) 休眠(Hibernate)失败

  • 原因:Swap 空间小于 RAM。
  • 解决:确保 Swap ≥ RAM 大小。

(3) swapon 报错 “invalid argument”

  • 原因:Swap 文件未正确格式化。
  • 解决:重新运行 mkswap

10. 总结

操作命令
创建 Swap 文件fallocate → mkswap → swapon
启用现有 Swapswapon /swapfile
禁用 Swapswapoff /swapfile
调整 swappinesssysctl vm.swappiness=10

合理配置 Swap 可提升系统稳定性,但不能替代物理内存! 🚀

http://www.xdnf.cn/news/9486.html

相关文章:

  • 《自动驾驶轨迹规划实战:Lattice Planner实现避障路径生成(附可运行Python代码)》—— 零基础实现基于离散优化的避障路径规划
  • 亚古数据:查询BVI(英属维尔京群岛)公司可以获取到什么信息和文件?
  • Ubuntu系统rsyslog日志突然占用磁盘空间超大怎么办?
  • 如何使用服务器搭建邮局系统?
  • MySQL 数据库备份与恢复利器:Percona XtraBackup 详解
  • MySQL强化关键_017_索引
  • 进程的控制和调度上
  • 2tensorf
  • ElectronBot复刻-电路测试篇
  • 数据分析与应用-----使用scikit-learn构建模型
  • 跑步机的控制面板英文的意思
  • 财政票据查验接口功能解析-接口实践-医疗票据管理
  • SSM 框架深度整合实战:从零构建企业级 Java 应用
  • 华为OD最新机试真题-反转每对括号间的子串-OD统一考试(B卷)
  • Vue 3 的 <script setup> 语法糖(持续更新)
  • 尚硅谷redis7 58-62 主从复制之一主二仆
  • 【前端】JS引擎 v.s. 正则表达式引擎
  • 创建型设计模式之Singleton(单例)设计模式
  • 力扣热题100(附刷题表版)
  • 【西方哲学-0】西哲思维导图mermaid格式
  • 离线场景下扫描与修复系统缺失补丁解决方案
  • 【计算机网络】第1章:概述—协议层次及服务模型
  • 网络安全之XSS漏洞
  • Unity屏幕适配——适配信息计算和安全区域适配
  • 触控精灵 ADB运行模式填写电脑端IP教程
  • 九、【前后端联调篇】Vue3 + Axios 异步通信实战
  • ​​知识图谱:重构认知的智能革命​
  • 安世亚太:信息化和数字化的底层逻辑
  • Ansible模块——Ansible配置文件!
  • 3D建模的全景图谱:从55个工具到元宇宙的数字革命