基本知识
swap 分区通常被称为交换分区,这是一块特殊的硬盘空间,即当实际内存不够用的时候,操作系统会从内存中取出一部分暂时不用的数据,放在交换分区中,从而为当前运行的程序腾出足够的内存空间。
也就是说,当内存不够用时,我们使用 swap 分区来临时顶替。这种“拆东墙,补西墙”的方式应用于几乎所有的操作系统中。
使用 swap 交换分区,显著的优点是,通过操作系统的调度,应用程序实际可以使用的内存空间将远远超过系统的物理内存。由于硬盘空间的价格远比 RAM 要低,因此这种方式无疑是经济实惠的。当然,频繁地读写硬盘,会显著降低操作系统的运行速率,这也是使用 swap 交换分区最大的限制。
下面的操作基于root账号权限,如果你没有登录root账号,请在命令前加sudo或者登录root账号后操作
free查看你当前内存的使用情况和swap分区大小
root@VM-0-13-ubuntu:/swap# free
total used free shared buff/cache available
Mem: 8003668 5367116 141384 9244 2495168 2317800
Swap: 0 0 0
创建一块硬盘内存作为swap分区
内存大小根据你自己机器内存大小来定
物理内存 建议的交换空间大小 如果开启休眠功能建议的交换空间大小
2GB 内存的2倍 内存的3倍
2GB – 8GB 等于内存大小 内存的2倍
8GB – 64GB 至少4G 内存的1.5倍
64GB 至少4G 不建议使用休眠
mkdir /swap
cd /swap
# 创建一个bs*count=1M*8192=8G的硬盘内存块来做swap分区
dd if=/dev/zero of=swapfile bs=1M count=8192
把生成的文件转为swap文件
ls
ll
mkswap swapfile
执行效果:
root@VM-0-13-ubuntu:/swap# ls
swapfile
root@VM-0-13-ubuntu:/swap# ll
total 8388620
drwxr-xr-x 2 root root 4096 Jan 13 12:19 ./
drwxr-xr-x 27 root root 4096 Jan 13 12:26 ../
-rw-r--r-- 1 root root 8589934592 Jan 13 12:19 swapfile
root@VM-0-13-ubuntu:/swap# mkswap swapfile
mkswap: swapfile: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 8 GiB (8589930496 bytes)
no label, UUID=35c269b7-d1b1-49d4-9a1a-385801699adb
激活swap空间
# 启用swap分区文件
swapon swapfile
查看swap分区情况
root@VM-0-13-ubuntu:/swap# free
total used free shared buff/cache available
Mem: 8003668 5365644 145892 9216 2492132 2319300
Swap: 8388604 268 8388336
开机挂载swap分区
# 备份
cp /etc/fstab /etc/fstab.bak
# 写入
echo '/swap/swapfile none swap sw 0 0' | tee -a /etc/fstab
删除swap分区(如果不用了)
# 停用之前设置的swap空间
swapoff -v /swapfile
# 编辑删除上面插入的行并保存
vi /etc/fstab
# 删除swap空间文件
rm /swap/swapfile