添加交换分区

建立swapfile

sudo dd if=/dev/zero of=/var/swapfile bs=1G count=8

命令

解释

sudo

执行命令需要超级用户前缀

dd

用于复制和转换文件的命令

if=/dev/zero

if指定输入文件。/dev/zero是一个特殊文件,读取会返回null字节(‘\0’)

of=/var/swapfile

of指定输出文件

bs=1G

设置块大小为1G。表示dd命令每次从输入文件读取1G的数据,然后写入到输出文件。

count=8

指定要复制块的数量。

修改权限

sudo chmod 600 /var/swapfile

将文件设置为交换分区

sudo mkswap /var/swapfile

打开交换分区

sudo swapon /var/swapfile 
#或
sudo swapon -a

永久使用

默认重启后就会失效

/etc/fstab添加一条,表明/var/swapfile是一个交换文件。

sudo sed -i '$a /var/swapfile swap swap default 0 0' /etc/fstab

查看是否生效

sudo swapon --show

查看内存情况


free -m
#或
free -g

优先使用交换分区

swappiness值为0表示优先使用物理内存,值为100则优先使用swap内存,Ubuntu默认为60,建议优先使用内存,所以这里改成10

查看当前swappiness值

cat /proc/sys/vm/swappiness

修改swappiness值为10(临时修改,重启后即还原为默认值)

sudo sysctl vm.swappiness=10

永久修改swappiness默认值(重启生效)

sudo vi /etc/sysctl.conf
#添加:
vm.swappiness=10

关闭交换分区

sudo swapoff /var/swapfile
#或
sudo swapoff -a

减小交换分区

先关闭

交换文件减小为4G

sudo fallocate -l 4G /swapfile
#或
sudo truncate -s 4G /swapfile

fallocate:主要用于预先分配物理空间,占用实际的磁盘空间

truncate:生成空洞文件,看起来大小很大,但实际上它并不占用任何磁盘空间