Swap 管理指南

Swap 概述

Swap 是 Linux 系统中的虚拟内存。当物理内存(RAM)不足时,系统会将一部分内存内容移动到 Swap 空间。Swap 空间通常是硬盘或 SSD 上的一个专用区域,它比内存慢得多,因此应尽量减少对 Swap 的依赖。


1. 启用、禁用、查看 Swap

查看当前 Swap 使用情况

可以通过 freeswapon 命令查看当前的 Swap 使用情况:

# 查看内存和 swap 使用情况
free -h

# 查看已启用的 swap
swapon --show

禁用 Swap

禁用 Swap 会使系统完全不再使用 Swap 空间:

# 临时禁用所有 swap
swapoff -a

启用 Swap

启用某个 Swap 文件或分区:

# 启用 swap 文件(例如 /swapfile)
swapon /swapfile

# 启用 swap 分区(例如 /dev/sda2)
swapon /dev/sda2

2. 创建和增加 Swap

在缺少 Swap 的情况下,你可以手动创建一个 Swap 文件,或使用 Swap 分区。

创建一个 Swap 文件

  1. 创建一个 Swap 文件:

    dd if=/dev/zero of=/swapfile bs=1M count=1024  # 1GB swap
    
  2. 设置文件权限:

    chmod 600 /swapfile
    
  3. 格式化为 Swap 格式:

    mkswap /swapfile
    
  4. 启用 Swap:

    swapon /swapfile
    
  5. 持久化设置(确保重启后 Swap 保持启用):

    编辑 /etc/fstab,添加以下行:

    /swapfile none swap sw 0 0
    

使用 Swap 分区

  1. 格式化分区为 Swap 格式:

    mkswap /dev/sda2
    
  2. 启用分区:

    swapon /dev/sda2
    
  3. 持久化设置(编辑 /etc/fstab):

    /dev/sda2 none swap sw 0 0
    

3. 调整 swappiness 参数

swappiness 控制内核何时将内存内容交换到 Swap 空间,范围是 0 到 100:

  • 0:尽量不使用 Swap,优先使用物理内存。

  • 100:尽量使用 Swap,优先把内存中的数据交换到 Swap。

查看当前 swappiness

sysctl vm.swappiness

临时修改 swappiness

sysctl vm.swappiness=10   # 设定为 10,表示优先使用物理内存

永久修改 swappiness

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

vm.swappiness=10

然后应用配置:

sysctl -p

4. 启用和禁用 Swap 相关参数

禁用 swap 文件或分区swapoff

swapoff /swapfile   # 禁用 swap 文件
swapoff /dev/sda2   # 禁用 swap 分区

增加 swappiness 和内存回收的频率

sysctl vm.swappiness=10    # 优先使用内存
sysctl vm.vfs_cache_pressure=50  # 增加磁盘缓存清理的频率

减少 swappiness

swappiness 设置为一个较低的值,可以减少 Swap 的使用。例如,设置为 10 表示只在内存接近满时才会使用 Swap:

sysctl vm.swappiness=10

5. 各个 Linux 发行版的 Swap 管理

CentOS / RHEL 系列

启用 Swap:

swapon /swapfile    # 启用文件类型 swap
swapon /dev/sda2    # 启用分区类型 swap

禁用 Swap:

swapoff -a          # 禁用所有 swap

修改 swappiness

echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p

创建 Swap 文件:

dd if=/dev/zero of=/swapfile bs=1M count=1024   # 创建 1GB Swap 文件
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

Ubuntu / Debian 系列

启用 Swap:

swapon /swapfile    # 启用文件类型 swap
swapon /dev/sda2    # 启用分区类型 swap

禁用 Swap:

swapoff -a          # 禁用所有 swap

修改 swappiness

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

创建 Swap 文件:

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024  # 创建 1GB Swap 文件
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

配置开机自动挂载 Swap 文件:

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

6. 清理和管理 Swap

清理 Swap 内容

如果想清理 Swap 中的数据(强制让系统释放内存),可以使用:

swapoff -a
swapon -a

这样会暂时禁用 Swap,并重新启用。它会将所有 Swap 中的数据清空并放回物理内存。


总结

  • 查看和管理 Swap:通过 freeswapon 查看当前 Swap 使用情况;使用 swapoffswapon 启用或禁用。

  • 增加/减少 Swap:可以通过创建 Swap 文件或使用 Swap 分区来增加 Swap 空间。

  • 调整 swappiness:可以根据系统需求调整 swappiness,减少或增加系统对 Swap 的依赖。

  • 持久化设置:通过修改 /etc/fstab/etc/sysctl.conf 来确保设置在重启后仍然生效。

这份资料覆盖了不同 Linux 发行版中的 Swap 管理方法,应该能满足你在各种系统上管理 Swap 的需求。如果有进一步的问题,随时告诉我!

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享