Ubuntu设置交换SWAP分区

检查原来的系统中是否有swap分区

1
free -h

如下是有交换分区的,

检查硬盘可用空间

1
df -h

如下是我的磁盘空间,剩余空间还有27G

没有SWAP分区

创建分区,设置swap分区,创建一个2G的swap分区

1
sudo fallocate -l 2G /swapfile

检查是否创建成功

1
ls -lh /swapfile

注意这里创建的交换文件在根目录中,可以通过如下命令查看该文件

1
ll

就可以看到swapfile交换文件。

使能分区

1
2
3
4
5
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon --show
free -h

sudo chmod 600 /swapfile 给交换分区分配读写权限

sudo mkswap /swapfile 交换文件成为交换空间

sudo swapon /swapfile 启用交换文件

sudo swapon --show 显示交换分区信息

free -h 检查交换分区是否分配成功

到这里,分区创建完成了,但是下次启动会丢失。接下来固化SWAP

固化swap分区,/ect/fstab下进行添加,使swap永久生效

1
2
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

删除swap分区

1
2
3
sudo swapoff /swapfile  
sudo rm /swapfile
sudo cp /etc/fstab.bak /etc/fstab

sudo swapoff /swapfile 关闭释放交换分区

sudo rm /swapfile 删除交换分区文件

sudo cp /etc/fstab.bak /etc/fstab 将文件还原到以前的状态

可以通过检查原来的系统中是否有swap分区查看是否删除swap

如果想要分配更大的区域。

那就先删除之前的区域,重新分配空间就好

Ubuntu解决swap分区未被使用的问题

1
2
3
4
5
打开
sudo gedit /etc/sysctl.conf
在最后面添加如下语句
vm.min_free_kbytes=250000
#更改swap配置,让系统RAM还有250000kbyte(可根据自己电脑的RAM自定义,系统的默认值很小,导致已经卡死了才会启动swap,我是8G内存所以设置250000)

vm.swappiness 作用 vm.swappiness=60

也就是说,你的内存在使用到100-60=40%的时候,就开始出现有交换分区的使用。大家知道,内存的速度会比磁盘快很多,这样子会加大系统io,同时造的成大量页的换进换出,严重影响系统的性能,所以我们在操作系统层面,要尽可能使用内存,对该参数进行调整。

配置生效

需运行 sysctl -p 后配置才会生效‌

刷新 SWAP

当Swap占用率高达30%,对系统性能可能会有一定影响,所以在适当情况下,我们可以执行上述的两个命令刷新一次Swap(将Swap里的数据转储回内存,并清空Swap里的数据)

1
swapoff -a && swapon -a

注意:需要切换到root用户下执行。

执行上述命令,即可达到相应目的。

其实,刷新Swap原理就是把Swap关闭后再重启