Skip to main content

Swap常用操作

Linux Swap 常用操作指南

Swap(交换空间)是Linux系统中用于内存扩展的磁盘空间,当物理内存(RAM)不足时,系统会将不活跃的内存页移动到Swap空间。

1. 查看当前Swap使用情况

free -h
# 或
swapon --show
# 或
cat /proc/swaps

2. 查看内存和Swap使用详情

top
# 然后按 M 按内存排序,按 P 按CPU排序
# 或者使用
htop

3. 创建Swap文件

# 创建一个4GB的Swap文件
sudo fallocate -l 4G /swapfile
# 或者使用dd命令(较慢但更可靠)
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096

# 设置正确的权限
sudo chmod 600 /swapfile

# 格式化Swap文件
sudo mkswap /swapfile

# 启用Swap文件
sudo swapon /swapfile

4. 永久启用Swap文件

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

/swapfile none swap sw 0 0

5. 调整Swap使用倾向(swappiness)

swappiness值范围0-100,表示系统使用Swap的倾向程度(默认通常为60)

# 查看当前值
cat /proc/sys/vm/swappiness

# 临时修改(重启后失效)
sudo sysctl vm.swappiness=10

# 永久修改
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

6. 调整缓存压力(vfs_cache_pressure)

# 查看当前值
cat /proc/sys/vm/vfs_cache_pressure

# 临时修改
sudo sysctl vm.vfs_cache_pressure=50

# 永久修改
echo "vm.vfs_cache_pressure=50" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

7. 禁用并删除Swap文件

# 禁用Swap
sudo swapoff /swapfile

# 删除Swap文件
sudo rm /swapfile

# 从/etc/fstab中删除相关行
sudo nano /etc/fstab

8. 调整Swap空间大小

# 首先禁用Swap
sudo swapoff /swapfile

# 重新创建Swap文件(如改为8GB)
sudo fallocate -l 8G /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

9. 使用分区作为Swap

# 创建Swap分区(假设为/dev/sdb1)
sudo mkswap /dev/sdb1
sudo swapon /dev/sdb1

# 添加到/etc/fstab
/dev/sdb1 none swap sw 0 0

10. 监控Swap使用

# 实时监控
watch -n 1 free -h

# 查看哪些进程在使用Swap
sudo smem -s swap -r
# 或
sudo swapon --show

最佳实践建议

  1. 对于现代系统(RAM ≥ 4GB),可以设置较低的swappiness值(如10-30)
  2. 对于SSD,可以考虑减少Swap使用以延长SSD寿命
  3. Swap大小通常建议:
    • RAM < 2GB:Swap = 2倍RAM
    • 2GB ≤ RAM < 8GB:Swap = 等于RAM
    • RAM ≥ 8GB:Swap = 0.5倍RAM或更少
  4. 生产服务器建议使用独立Swap分区而非Swap文件

这些操作可以帮助你有效管理Linux系统中的Swap空间,优化系统性能。