这是最灵活且无需重新分区的方法:
# 1. 创建新的swap文件(比如4GB)
sudo fallocate -l 4G /swapfile
# 或者使用dd(如果fallocate不可用)
# sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
# 2. 设置正确的权限
sudo chmod 600 /swapfile
# 3. 格式化为swap
sudo mkswap /swapfile
# 4. 启用swap文件
sudo swapon /swapfile
# 5. 永久生效(添加到/etc/fstab)
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# 6. 验证
sudo swapon --show
free -h
如果swap在LVM卷上:
# 1. 关闭swap
sudo swapoff -a
# 2. 扩展逻辑卷(假设swap在lv_swap上)
sudo lvextend -L +2G /dev/vgname/lv_swap
# 3. 重新创建swap
sudo mkswap /dev/vgname/lv_swap
# 4. 重新启用
sudo swapon -a
# 5. 验证
free -h
需要重新分区的情况:
# 1. 禁用swap
sudo swapoff /dev/sdXN # 替换为你的swap分区
# 2. 删除并重新创建分区(使用fdisk/gdisk)
sudo fdisk /dev/sdX
# 删除原swap分区,创建新的大小的分区,类型设为Linux swap
# 3. 通知内核分区表变更
sudo partprobe
# 4. 格式化新分区
sudo mkswap /dev/sdXN
# 5. 启用
sudo swapon /dev/sdXN
# 6. 更新/etc/fstab
sudo vim /etc/fstab # 更新UUID或设备路径
调整系统使用swap的倾向:
# 查看当前值(0-100,越高越倾向使用swap)
cat /proc/sys/vm/swappiness
# 临时调整
sudo sysctl vm.swappiness=10
# 永久调整
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 1. 设置swap优先级(数值越高优先级越高)
# 如果有多个swap设备,系统会优先使用优先级高的
sudo swapon -p 100 /swapfile
# 2. 使用zram(内存压缩swap,适合内存较小系统)
sudo apt install zram-config # Ubuntu/Debian
# 3. 使用Btrfs swap文件(需要内核5.0+)
sudo chattr +C /swapfile
最简单的方法是使用swap文件,无需分区操作,且可以动态调整。