🌟 Linux 内存交换空间(Swap)的完整教程
标签搜索
侧边栏壁纸
  • 累计撰写 16 篇文章
  • 累计收到 0 条评论

🌟 Linux 内存交换空间(Swap)的完整教程

心底有颗枇杷树
2025-03-20 / 0 评论 / 2 阅读 / 正在检测是否收录...

1. 什么是 Swap?

Swap(交换空间) 是 Linux 系统中用于辅助物理内存(RAM)的一种虚拟内存。它在物理内存不足时,将部分数据临时存储在磁盘上的专用空间中,从而缓解内存压力,防止系统崩溃。

  • 物理内存(RAM): 系统主要运行数据的临时存储区域,速度快。
  • 交换空间(Swap): 当物理内存不足时,Linux 将部分数据换出到 Swap 中,释放 RAM 以供其他进程使用。

作用

  • 防止内存溢出:当内存不够时,使用 Swap 避免程序崩溃。
  • 支持休眠:休眠时,RAM 数据写入到 Swap 中。
  • 系统性能优化:适当的 Swap 可提高系统稳定性。

缺点

  • 速度慢:磁盘 I/O 速度远低于 RAM,频繁使用 Swap 会显著降低性能。
  • 磁盘磨损:在 SSD 上使用 Swap 可能会影响寿命。

🔥 2. 查看当前 Swap 信息

在 Linux 中,常用以下命令查看 Swap 使用情况:

# 查看 Swap 使用情况
free -h

# 查看 Swap 分区信息
swapon --show

# 查看 Swap 空间大小和使用率
cat /proc/swaps

# 使用 htop 查看内存和 Swap 信息
htop

示例输出

$ free -h
              total        used        free      shared  buff/cache   available
Mem:          7.8Gi       2.5Gi       4.3Gi       237Mi       1.0Gi       4.8Gi
Swap:         2.0Gi       512Mi       1.5Gi
  • total:总内存大小。
  • used:已使用的 Swap 空间。
  • free:可用 Swap 空间。

⚙️ 3. 创建 Swap 空间

如果你的系统没有 Swap 分区或想要扩展 Swap 空间,可以手动创建:

🛠️ 3.1 创建 Swap 文件

1️⃣ 创建一个新的 Swap 文件

sudo fallocate -l 2G /swapfile       # 创建 2G Swap 文件
# 如果 fallocate 不支持,可以使用 dd 命令
# sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

2️⃣ 设置正确权限

sudo mkswap /swapfile

3️⃣ 格式化为 Swap 格式

sudo mkswap /swapfile

4️⃣ 启用 Swap 文件

sudo swapon /swapfile

5️⃣ 验证 Swap 状态

swapon --show

示例输出

NAME      TYPE      SIZE USED PRIO
/swapfile file        2G   0B   -2

6️⃣ 永久生效 将 Swap 文件添加到 /etc/fstab

echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab

🛠️ 4. 调整 Swap 大小

如果你想扩展或缩小现有的 Swap 空间:

1️⃣ 禁用当前 Swap

sudo swapoff /swapfile

2️⃣ 调整 Swap 大小

sudo fallocate -l 4G /swapfile   # 扩展为 4G
sudo chmod 600 /swapfile
sudo mkswap /swapfile

3️⃣ 重新启用

sudo swapon /swapfile

⚙️ 5. 删除 Swap 空间

如果不再需要 Swap 文件,可以删除:

1️⃣ 禁用 Swap

sudo swapoff /swapfile

2️⃣ 移除配置 编辑 /etc/fstab 文件,删除相关行:

/swapfile swap swap defaults 0 0

3️⃣ 删除 Swap 文件

sudo rm /swapfile

🔧 6. 调优 Swap 设置

Linux 使用 swappiness 参数控制内核在内存不足时使用 Swap 的倾向:

  • 0:尽量避免使用 Swap,仅在 RAM 不足时使用。
  • 1-100:数值越大,越倾向于使用 Swap。

    • 一般服务器推荐值:10-30
    • 桌面系统推荐值:60

查看当前 swappiness

cat /proc/sys/vm/swappiness

临时修改 swappiness

sudo sysctl vm.swappiness=10

永久修改 swappiness 编辑 /etc/sysctl.conf

sudo nano /etc/sysctl.conf

添加:

vm.swappiness=10

保存后生效:

sudo sysctl -p

📊 7. Swap 与性能优化建议

  • 服务器环境

    • Swap 文件大小:物理内存的 1~2 倍
    • swappiness:10~30,减少对磁盘的依赖。
  • 桌面环境

    • Swap 文件大小:等于物理内存大小
    • swappiness:60~80,保证内存溢出时不崩溃。
  • 特殊情况

    • 如果使用 SSD,尽量减少 Swap,以减少磁盘磨损。
    • 使用 ZRAM 压缩 Swap,提高性能:
    sudo apt install zram-tools
    sudo systemctl enable --now zramswap

8. 总结

  • Swap 是 Linux 系统在内存不足时使用的虚拟内存。
  • 你可以使用 Swap 分区或 Swap 文件。
  • 调整 swappiness 参数可优化系统性能。
  • 小心使用 Swap 于 SSD,避免频繁读写带来磁盘损耗。
  • 在性能敏感的服务器环境中,尽量减少 Swap 的使用。
0

评论 (0)

取消