分区扩容和文件扩容:
一、查看当前 Swap 使用情况
# 查看当前 Swap 信息
free -h
swapon --show
cat /proc/swaps
二、方法1:使用 Swap 文件扩容(推荐)
这是最简单灵活的方法,适用于大部分场景:
1. 创建新的 Swap 文件
# 创建 4GB 的 Swap 文件
sudo fallocate -l 4G /swapfile
# 或者使用 dd(如果 fallocate 不可用)
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
# 设置权限
sudo chmod 600 /swapfile
# 格式化为 Swap
sudo mkswap /swapfile
# 启用新的 Swap 文件
sudo swapon /swapfile
2. 设置开机自动挂载
# 编辑 /etc/fstab
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
3. 调整 Swappiness 参数(可选)
# 查看当前值
cat /proc/sys/vm/swappiness
# 临时调整(推荐值:10-60)
sudo sysctl vm.swappiness=30
# 永久生效
echo 'vm.swappiness=30' | sudo tee -a /etc/sysctl.conf
三、方法2:使用 LVM 调整 Swap 分区大小
如果 Swap 在 LVM 逻辑卷上:
1. 查看 LVM 配置
sudo lvs
sudo vgs
sudo pvs
2. 扩展逻辑卷
# 关闭 Swap
sudo swapoff -v /dev/vgname/swap_lv
# 扩展逻辑卷(增加 4G)
sudo lvextend -L +4G /dev/vgname/swap_lv
# 重新格式化
sudo mkswap /dev/vgname/swap_lv
# 重新启用
sudo swapon /dev/vgname/swap_lv
四、方法3:调整独立 Swap 分区
1. 使用 fdisk/gdisk 调整分区
# 1. 关闭 Swap
sudo swapoff /dev/sdXN
# 2. 删除原分区并重新创建(使用相同起始扇区)
sudo fdisk /dev/sdX
# 在 fdisk 中:d -> n -> p -> 输入起始扇区 -> 输入新大小
# 3. 重新格式化
sudo mkswap /dev/sdXN
# 4. 启用 Swap
sudo swapon /dev/sdXN
# 5. 更新 /etc/fstab
五、方法4:结合使用多个 Swap 空间
可以同时使用多个 Swap 文件或分区:
# 创建第二个 Swap 文件
sudo fallocate -l 2G /swapfile2
sudo chmod 600 /swapfile2
sudo mkswap /swapfile2
sudo swapon /swapfile2
# 查看所有激活的 Swap
swapon --show
六、安全注意事项
1. 数据备份
- 调整分区前务必备份重要数据
- 对于生产环境,建议在维护窗口操作
2. 内存考虑
- Swap 大小建议为物理内存的 1-2 倍
- 对于 SSD,避免频繁的 Swap 交换以延长寿命
3. 性能优化
# 调整缓存压力
sudo sysctl vm.vfs_cache_pressure=50
# 验证设置
sudo sysctl -p
七、完整示例:将 Swap 从 2G 扩展到 8G
# 1. 禁用旧 Swap
sudo swapoff -v /swapfile
# 2. 删除旧文件
sudo rm /swapfile
# 3. 创建 8G 新文件
sudo fallocate -l 8G /swapfile
# 4. 设置权限
sudo chmod 600 /swapfile
# 5. 格式化
sudo mkswap /swapfile
# 6. 启用
sudo swapon /swapfile
# 7. 验证
free -h
swapon --show
八、故障排查
# 检查 Swap 错误
sudo dmesg | grep -i swap
# 查看内存使用详情
cat /proc/meminfo
# 测试 Swap 性能
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1000000
总结建议
首选 Swap 文件方案:灵活性高,无需调整分区
云服务器用户:通常使用 Swap 文件方式
物理服务器:如有空闲分区,可使用分区方案
数据库服务器:谨慎设置 Swap,避免影响性能
容器环境:考虑使用 zram 替代传统 Swap
根据你的具体环境和需求选择合适的方法,操作前确保已备份重要数据。