Linux环境下Swap配置方法与技巧
一、检查现有Swap状态
在配置Swap前,先检查系统当前的Swap使用情况:
bash
free -h
swapon --show
cat /proc/swaps
二、创建Swap文件(推荐方法)
1. 创建Swap文件
bash
# 创建4GB的Swap文件(根据需求调整大小)
sudo fallocate -l 4G /swapfile
# 如果fallocate不可用,可以使用dd命令
# sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
2. 设置权限
bash
sudo chmod 600 /swapfile
3. 格式化为Swap
bash
sudo mkswap /swapfile
4. 启用Swap文件
bash
sudo swapon /swapfile
5. 永久生效(开机自动挂载)
编辑/etc/fstab文件,添加以下行:
/swapfile none swap sw 0 0
三、创建Swap分区(传统方法)
1. 使用fdisk/gparted创建新分区
bash
sudo fdisk /dev/sdX # 替换为实际磁盘
在分区工具中创建新分区,类型设置为Linux swap(82)。
2. 格式化Swap分区
bash
sudo mkswap /dev/sdXN # 替换为实际分区
3. 启用Swap分区
bash
sudo swapon /dev/sdXN
4. 永久生效
同样需要在/etc/fstab中添加:
/dev/sdXN none swap sw 0 0
四、调整Swap使用策略
1. 修改swappiness值(0-100)
bash
# 查看当前值
cat /proc/sys/vm/swappiness
# 临时修改(推荐值10-60)
sudo sysctl vm.swappiness=30
# 永久修改
echo "vm.swappiness=30" | sudo tee -a /etc/sysctl.conf
2. 修改vfs_cache_pressure(控制缓存回收)
bash
查看当前值
cat /proc/sys/vm/vfs_cache_pressure
# 临时修改(推荐值50-100)
sudo sysctl vm.vfs_cache_pressure=50
# 永久修改
echo "vm.vfs_cache_pressure=50" | sudo tee -a /etc/sysctl.conf
五、Swap优化技巧
SSD优化:如果Swap在SSD上,可以降低swappiness值以减少写入
ZRAM:对于内存有限的系统,考虑使用ZRAM(压缩的内存交换)
多个Swap文件:可以创建多个较小的Swap文件分散IO负载
优先级设置:如果有多个Swap设备,可以设置优先级
六、删除Swap
1. 禁用Swap
bash
sudo swapoff /swapfile
# 或
sudo swapoff /dev/sdXN
2. 删除Swap文件
bash
sudo rm /swapfile
3. 从/etc/fstab中删除对应行
七、Swap大小建议
内存 < 2GB:Swap = 2倍内存
内存 2-8GB:Swap = 等于内存
内存 > 8GB:Swap = 0.5倍内存或更少
服务器:根据应用需求,通常4-8GB足够
八、高级技巧
使用Btrfs文件系统:可以创建Swap子卷
加密Swap:增强安全性
监控Swap使用:使用vmstat 1或sar -S 1监控Swap活动