×

Linux 扩大swap的方法和配置使用交换分区的策略

2022-11-04 12:33:46 Falcon

扩大swap分区

# 将现有swap移动到主内存,可能需要几分钟
sudo swapoff -a

# 创建新的swap文件,bs×count=最后生成的swap大小,这里设置2G
sudo dd if=/dev/zero of=/swapfile bs=512M count=4

# 设置权限
sudo chmod 0600 /swapfile

# 设置swap
sudo mkswap /swapfile

# 打开swap
sudo swapon /swapfile

# 检查设置是否有效
grep Swap /proc/meminfo # 或者htop看一下

# 设置永久有效
sudo gedit /etc/fstab
# 在末尾行加上 
# /swapfile swap swap sw 0 0

温馨提示, 在执行这条命令时: 

sudo dd if=/dev/zero of=/swapfile bs=512M count=4

如果你的系统物理内存少于512M,会遇到以下报错:

dd: memory exhausted by input buffer of size ....

而大多数人都是因为物理内存太少才会选择去给swap扩容,所以可以设置bs需要设定比物理内存略低的数值,然后更改count,使其达到目标容量。如 256M X 8

sudo dd if=/dev/zero of=/swapfile bs=256M count=8

控制使用swap的策略

Linux系统有个值控制物理内存使用率到多少时开始使用swap。

默认值swappiness=60,表示内存使用率超过100-60=40%时开始使用交换分区。

swappiness=0,表示最大限度使用物理内存,然后才是swap空间;

swappiness=100,表示积极使用swap分区,并把内存上的数据及时搬运到swap空间。

调整方式如下:

#查看参数值
cat /proc/sys/vm/swappiness

#临时调整
sysctl vm.swappiness = 10 

#永久调整
sudo vim /etc/sysctl.conf
# 在末尾加上
# vm.swappiness=10

#重启
本文收录于