在Linux系统中,交换区(Swap)用于扩展系统的虚拟内存,当物理内存(RAM)不足时,系统会将非活动内存页暂存到交换区。合理设置交换区可提升系统稳定性与性能,尤其在内存有限的场景中至关重要。

交换区可通过分区或文件实现:
1. 交换分区(Swap Partition):物理磁盘上的独立分区,性能更优。
2. 交换文件(Swap File):灵活性高,无需重新分区,适合云环境或动态调整。
步骤1:检查现有交换区
free -h # 查看内存与交换区使用情况 swapon --show # 确认当前启用的交换空间
步骤2:创建交换文件(以4GB为例)
sudo fallocate -l 4G /swapfile # 快速创建文件(推荐) # 若fallocate不可用,可使用:sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 sudo chmod 600 /swapfile # 设置安全权限 sudo mkswap /swapfile # 格式化文件为交换区 sudo swapon /swapfile # 立即启用交换区
步骤3:永久生效配置
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab # 添加至文件系统表
步骤1:创建新分区
sudo fdisk /dev/sdX # 用fdisk/gdisk创建新分区(类型设为Linux Swap) sudo mkswap /dev/sdXn # 格式化分区
步骤2:启用与持久化
sudo swapon /dev/sdXn echo '/dev/sdXn none swap sw 0 0' | sudo tee -a /etc/fstab
1. Swappiness(交换倾向性): 控制内核使用交换区的频率,范围0-100(默认60)
sysctl vm.swappiness=10 # 临时修改(降低交换倾向) echo 'vm.swappiness=10' >> /etc/sysctl.conf # 永久生效
| 应用场景 | 推荐值 |
|---|---|
| 数据库服务器 | 1-10 |
| 桌面环境 | 30-60 |
| 内存不足设备 | 70-100 |
2. 交换区容量建议:
| 物理内存大小 | 建议交换空间 | 启用休眠时 |
|---|---|---|
| ≤ 2GB | 内存的2倍 | ≥ 物理内存大小 |
| 2GB - 8GB | 等于内存大小 | |
| 8GB - 64GB | 4GB - 8GB | |
| > 64GB | 4GB(或按需) |
swapoff /swapfile # 禁用交换文件 sudo tune2fs -m 0 /dev/sdXn # 调整预留空间(仅限ext4分区) zramctl # 使用压缩交换(ZRAM)
1. 交换区未生效: 检查文件权限(必须为600)、文件系统类型(Btrfs需特殊配置)。
2. 性能问题: SSD建议降低swappiness值,HDD避免频繁交换。
3. 删除交换文件: 先执行 swapoff -v /swapfile,再删除文件及fstab条目。
在内存受限设备(如树莓派)推荐使用ZRAM,通过压缩内存数据替代传统交换区:
sudo modprobe zram # 加载内核模块 echo lz4 > /sys/block/zram0/comp_algorithm # 选择压缩算法 echo 2G > /sys/block/zram0/disksize # 设置ZRAM大小 mkswap /dev/zram0 && swapon /dev/zram0 # 启用设备
注: 生产环境中建议根据负载测试确定最佳交换区配置,并监控sar -S或vmstat 1的输出数据。

查看详情

查看详情