这是最灵活且无需重新分区的方法:
# 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文件,无需分区操作,且可以动态调整。