Swap 概述
Swap 是 Linux 系统中的虚拟内存。当物理内存(RAM)不足时,系统会将一部分内存内容移动到 Swap 空间。Swap 空间通常是硬盘或 SSD 上的一个专用区域,它比内存慢得多,因此应尽量减少对 Swap 的依赖。
1. 启用、禁用、查看 Swap
查看当前 Swap 使用情况
可以通过 free 或 swapon 命令查看当前的 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 文件
-
创建一个 Swap 文件:
dd if=/dev/zero of=/swapfile bs=1M count=1024 # 1GB swap -
设置文件权限:
chmod 600 /swapfile -
格式化为 Swap 格式:
mkswap /swapfile -
启用 Swap:
swapon /swapfile -
持久化设置(确保重启后 Swap 保持启用):
编辑
/etc/fstab,添加以下行:/swapfile none swap sw 0 0
使用 Swap 分区
-
格式化分区为 Swap 格式:
mkswap /dev/sda2 -
启用分区:
swapon /dev/sda2 -
持久化设置(编辑
/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:通过
free和swapon查看当前 Swap 使用情况;使用swapoff和swapon启用或禁用。 -
增加/减少 Swap:可以通过创建 Swap 文件或使用 Swap 分区来增加 Swap 空间。
-
调整
swappiness:可以根据系统需求调整swappiness,减少或增加系统对 Swap 的依赖。 -
持久化设置:通过修改
/etc/fstab和/etc/sysctl.conf来确保设置在重启后仍然生效。
这份资料覆盖了不同 Linux 发行版中的 Swap 管理方法,应该能满足你在各种系统上管理 Swap 的需求。如果有进一步的问题,随时告诉我!
