戏里戏外

Rocky Linux 上添加 SWAP 交换分区

2024-11-13#CentOS

SWAP(交换分区)是Linux系统中的一种重要机制,它可以在物理内存不足时提供额外的虚拟内存空间。

本文将介绍如何在 Rocky Linux 系统中添加 SWAP 交换分区。

前提条件

  • Rocky Linux 系统(8.x 或 9.x)
  • root 权限或 sudo 权限
  • 确保有足够的磁盘空间

步骤一:检查当前 SWAP 状态

在添加新的 SWAP 之前,先检查系统当前的 SWAP 使用情况:

# 查看当前内存和 SWAP 使用情况
free -h

# 查看当前SWAP详细信息
swapon --show

# 查看文件系统使用情况
df -h

步骤二:创建SWAP文件

  1. 创建 swap 目录:

    sudo mkdir -p /var/cache/swap
    
  2. 使用 dd 命令创建 SWAP 文件(例如创建 4GB 的 SWAP):

    # count 的值 = 所需的 GB 数 × 1024
    sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=1M count=4096 status=progress
    
  3. 设置正确的权限:

    sudo chmod 600 /var/cache/swap/swap0
    
  4. 格式化为SWAP文件系统:

    sudo mkswap /var/cache/swap/swap0
    

步骤三:启用SWAP

  1. 启用SWAP文件:

    sudo swapon /var/cache/swap/swap0
    
  2. 设置开机自动启用,编辑 /etc/fstab 文件:

    echo '/var/cache/swap/swap0 none swap sw 0 0' | sudo tee -a /etc/fstab
    

步骤四:验证SWAP设置

确认 SWAP 是否成功添加:

# 查看 SWAP 信息
swapon --show

# 再次检查内存使用情况
free -h

# 验证 fstab 配置
findmnt --verify

SWAP优化设置

在 Rocky Linux 中优化 SWAP 设置:

  1. 调整 swappiness 参数:

    # 查看当前值
    cat /proc/sys/vm/swappiness
    
    # 临时修改(推荐值:10)
    sudo sysctl vm.swappiness=10
    
    # 永久修改
    echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.d/99-swap.conf
    
  2. 配置 SWAP 预读取(可选):

    # 设置预读取页面数
    echo 'vm.page-cluster=0' | sudo tee -a /etc/sysctl.d/99-swap.conf
    

安全注意事项

  1. SWAP文件权限必须设置为600
  2. 确保有足够的磁盘空间
  3. 在使用 XFS 文件系统时,建议将 SWAP 文件放在单独的分区
  4. 定期监控SWAP使用情况
  5. 考虑使用 SELinux 上下文(如果启用了 SELinux):
    sudo chcon -t swapfile_t /var/cache/swap/swap0
    

故障排除

如果遇到问题,请检查:

  1. SELinux 状态:

    sudo getenforce
    sudo ausearch -m avc -ts recent
    
  2. 系统日志:

    sudo journalctl -xe
    
  3. SWAP 文件状态:

    sudo ls -l /var/cache/swap/swap0
    sudo file /var/cache/swap/swap0
    

移除SWAP

如果需要移除SWAP,执行以下步骤:

# 停用SWAP
sudo swapoff /var/cache/swap/swap0

# 从 /etc/fstab 中删除SWAP条目
sudo sed -i '/swap0/d' /etc/fstab

# 删除SWAP文件
sudo rm /var/cache/swap/swap0

# 删除swap目录(如果为空)
sudo rmdir /var/cache/swap
TIP

Rocky Linux推荐的SWAP大小

  • 系统内存 < 2GB:SWAP = 2× 内存大小
  • 系统内存 2-8GB:SWAP = 1× 内存大小
  • 系统内存 > 8GB:SWAP = 0.5× 内存大小