悠悠楠杉
Linux交换分区(swap)创建与管理完全指南
一、什么是swap空间?
当物理内存(RAM)耗尽时,Linux会将部分内存数据临时存储到磁盘上的swap区域。虽然磁盘速度远低于RAM,但swap能有效防止系统因内存不足而崩溃。现代Linux系统通常建议设置swap空间为RAM的1-2倍(如16GB内存配16-32GB swap)。
二、swap的两种实现方式
1. 独立swap分区
传统方式,通过磁盘分区实现,性能更稳定:
bash
查看现有swap空间
free -h
swapon --show
使用fdisk/gdisk创建新分区(假设为/dev/sdb2)
sudo fdisk /dev/sdb # 创建类型为"Linux swap"的分区
sudo mkswap /dev/sdb2 # 格式化
sudo swapon /dev/sdb2 # 启用
永久生效(编辑/etc/fstab)
echo '/dev/sdb2 none swap sw 0 0' | sudo tee -a /etc/fstab
2. swap文件方式
无需重新分区,灵活性更高:
bash
创建4GB大小的swap文件
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
持久化配置
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
三、高级配置与优化
1. swappiness参数调整
控制内核使用swap的倾向(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. 优先级设置
当存在多个swap空间时,可通过priority指定使用顺序(数字越大优先级越高):
bash
在/etc/fstab中添加优先级
/swapfile none swap sw,pri=100 0 0
/dev/sdb2 none swap sw,pri=50 0 0
四、常见问题排查
1. 扩容swap空间
步骤:
1. 禁用现有swap:sudo swapoff /swapfile
2. 删除原文件:sudo rm /swapfile
3. 新建更大尺寸文件并重新启用
2. 性能瓶颈诊断
- 使用
vmstat 1
观察si/so(swap in/out)频率 - 高频率swap活动可能表明需要增加物理内存
五、是否还需要swap?
对于大内存服务器(如64GB以上),swap的作用可能转变为:
- 提供休眠(hibernate)支持
- 作为内存压力的缓冲层
- 满足某些应用(如Oracle数据库)的强制要求