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文件
-
创建 swap 目录:
sudo mkdir -p /var/cache/swap
-
使用
dd
命令创建 SWAP 文件(例如创建 4GB 的 SWAP):# count 的值 = 所需的 GB 数 × 1024 sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=1M count=4096 status=progress
-
设置正确的权限:
sudo chmod 600 /var/cache/swap/swap0
-
格式化为SWAP文件系统:
sudo mkswap /var/cache/swap/swap0
步骤三:启用SWAP
-
启用SWAP文件:
sudo swapon /var/cache/swap/swap0
-
设置开机自动启用,编辑
/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 设置:
-
调整
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
-
配置 SWAP 预读取(可选):
# 设置预读取页面数 echo 'vm.page-cluster=0' | sudo tee -a /etc/sysctl.d/99-swap.conf
安全注意事项
- SWAP文件权限必须设置为600
- 确保有足够的磁盘空间
- 在使用 XFS 文件系统时,建议将 SWAP 文件放在单独的分区
- 定期监控SWAP使用情况
- 考虑使用 SELinux 上下文(如果启用了 SELinux):
sudo chcon -t swapfile_t /var/cache/swap/swap0
故障排除
如果遇到问题,请检查:
-
SELinux 状态:
sudo getenforce sudo ausearch -m avc -ts recent
-
系统日志:
sudo journalctl -xe
-
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× 内存大小