Linux 调整 Swap
Swap 分区是什么
Swap(交换分区),类似于 Windows 中的虚拟内存,当内存不足的时候,把一部分硬盘空间虚拟成内存使用,以解决内存容量不足的问题。
因此,Swap 分区的作用就是牺牲硬盘,增加内存,解决 VPS 内存不够用或者爆满的问题。
Swap 分区大小选择
Swap 合理的大小是与 VPS 的物理内存有关的,建议配置(Red Hat Enterprise Linux)如下:
内存 <= 4g:Swap 至少 4G
内存 4~16G:Swap 至少 8G
内存 16G~64G:Swap 至少 16G
内存 64G~256G:Swap 至少 32G
实际上,系统中交换分区的大小并不取决于物理内存的量,而是取决于系统中内存的负荷,所以在安装系统时要根据具体的业务来设置 Swap 的值。
Swap 分区设置
查看当前分区情况
free -m如果是增加 swap 分区,则先把当前所有分区都关闭了
swapoff -a创建要作为 Swap 分区文件(其中
/data/swapfile是文件位置,bs*count 是文件大下,例如以下命令就会创建一个 4G 的文件)
dd if=/dev/zero of=/data/swapfile bs=1M count=4096设置权限
默认交换空间文件的权限只有 root 用户才能写入和读取交换文件的数据。因此我们需要修改交换空间文件的权限为 600。
chmod 600 /data/swapfile格式化为 Swap 分区文件
需要格式化交换空间的文件。交换空间文件所使用的文件系统与普通文件系统不一样。
mkswap /data/swapfile启用 Swap 分区
swapon /data/swapfile查看 Linux 当前分区,如果有 Swap 就说明创建成功了
设置开启启动
在 /etc/fstab 文件中加入一行代码
/data/swapfile swap swap defaults 0 0系统在什么情况下才会使用 Swap
系统不是等所有的物理内存都消耗完毕之后,才去使用 swap 的空间,什么时候使用是由 swappiness 参数值控制
swappiness 是一个 Linux 内核属性,用于定义系统使用交换空间的频率。
swappiness 可以是 0 到 100 之间的值。swappiness=0 的时候表示最大限度使用物理内存,然后才是交换空间,swappiness=100 的时候表示积极的使用交换空间。
可以运行命令 cat /proc/sys/vm/swappiness 命令查看当前 swappiness 值的大小。
运行下面的命令对 swappiness 进行临时修改
sysctl -w vm.swappiness=10sysctl 命令用于在运行时配置 Linux 内核的参数,更改仅在当前会话中可用,即重启会恢复为默认值。
为让 swappiness 的值持久化,则需要将值写入到 /etc/sysctl.conf 文件中。sysctl.conf 是 Linux 内核的配置文件。在 Linux 内核启动时将会次配置文件的参数。
运行以下命令持久化 Linux 内核参数 swappiness 的值。
echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/sysctl.conf删除 swap 分区
运行命令 swapoff 关闭交换空间。
swapoff -v /swapfile如果交换空间文件还启用 fstab 方式的自动挂载,你还需要删除 /etc/fstab 文件中定义的自动挂载配置。
打开文件 /etc/fstab,并移除行定义交换空间自动挂载的行。
最后运行 rm 命令删除交换空间文件。