SWAP简介

相当于Windows的虚拟内存。
在物理运行内存不够的时候,将内存缓存到硬盘中,充当内存,缓解系统压力,保障系统不宕机。

服务器到底要不要swap

大内存服务器是否还需要swap?

建议还是象征意义的设置一下。
swap默认是内存占用40%就开始使用swap,可以调整内存占用比例为80%再开始使用swap
有些服务器,比如K8S特殊要求,可以不要swap.

线上服务器swap设置建议

线上服务器要设置swap,平时可能用不上,为了应对业务猛增时减少宕机的风险。

阿里云真的不需要swap吗?

不管官方建议不建议,都要设置swap。

创建swap

swap配置多少比较合适

参考: https://segmentfault.com/a/1190000008125116
在这里插入图片描述

查看swap大小

# 查看swap
[rocky root ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          1.9Gi       226Mi       1.3Gi       8.0Mi       435Mi       1.5Gi
Swap:         2.0Gi          0B       2.0Gi

# 查看所有交换分区
[rocky root ~]# swapon -s
文件名                          类型            大小    已用    权限
/dev/dm-1                               partition       2097148 0       -2

内存页存放位置

内存页存放位置: /sys/devices/system/memory

[root@c8 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          7.3Gi       343Mi       5.8Gi       1.0Mi       1.2Gi       6.7Gi
Swap:            0B          0B          0B
[root@c8 ~]# ls /sys/devices/system/memory/ |grep -i memory |wc -l
62
# 每个memory就是128M

利用分区方式扩充swap

在这里插入图片描述

利用swapfile扩充swap

注:
如果在 /etc/rc.local 中有 swapoff -a 需要修改为 swapon -a

# 生成一个4G的swap文件
dd if=/dev/zero bs=4M count=1024 of=/swapfile

# 设置文件为swap格式
mkswap /swapfile

# 设置600权限
chmod 600 /swapfile

# 加载swap文件
swapon /swapfile

在这里插入图片描述

将swap分区或swap文件写入开机挂载才能永久生效

在这里插入图片描述

# 将挂载信息写入/etc/fstab文件中
/swap swap swap defaults 0 0

# 自动加载/etc/fstab中的swap
swapon -a 

swap常用命令

# 显示简短的装置讯息
swapon -s

# 卸载所有swap
swapoff -a

# 卸载指定的swap文件/swap分区
swapoff /swapfile

# 加载指定的swap文件/swap分区
swapon /swapfile

修改swpapiness参数–禁用swap

  • swappiness 值为 0 时,表示最大限度地使用物理内存,物理内存使用完毕后,才会使用 swap 分区,
  • swappiness 值为 100 时,表示积极地使用 swap 分区,并且把内存中的数据及时地置换到swap分区
# 临时生效
echo 0 >/proc/sys/vm/swappiness

永久生效swpapiness配置

内核参数配置不使用swap

# 修改 /etc/sysctl.conf 文件中的 vm.swappiness 的值
vim /etc/sysctl.conf

# 禁用用swap
vm.swappiness = 0 

# 使之永久生效
sysctl -p 

关闭swap

# 先在/etc/fstab中注释swap挂载信息
sed -ri 's/.*swap.*/#&/' /etc/fstab

# 临时关闭swap
swapoff -a