在Linux下禁用、添加|修改Swap分区(虚拟内存)教程
swap分区
linux内存通过 virtual memory 虚拟内存来管理整个内存, 虚拟内存管理着物理内存,也管理着swap交换空间。Linux使用交换空间来增加主机可用的虚拟内存量。
Swap分区,即交换区,Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。
我们一般所说的swap,指的是一个交换分区或文件。在Linux上可以使用swapon -s
命令查看当前系统上正在使用的交换空间有哪些,以及相关信息。
从功能上讲,交换分区主要是在内存不够用的时候,将部分内存上的数据交换到swap空间上,以便让系统不会因内存不够用而导致oom或者更致命的情况出现。
Linux Swap 分区大小选择
Linux Swap 分区大小跟你服务器本身的物理内存大小有关,内存越大,设置的 Swap 分区也应该越大,两者的关系如下。
物理内存 交换分区(SWAP)
<= 4g 至少 4G
4~16G 至少 8G
16G~64G 至少 16G
64G~256G 至少 32G
swappiness
/proc/sys/vm/swappiness
这个文件,可以用来调整跟swap相关的参数。这个文件的默认值是60,可以的取值范围是0-100。
这个文件的值用来定义内核使用swap的积极程度:
- 值越高,内核就会越积极的使用swap;
- 值越低,就会降低对swap的使用积极性。
- 如果这个值为0,那么内存在free和file-backed使用的页面总量小于高水位标记(high water mark)之前,不会发生交换。
Linux下禁用swap分区
- 第一步,关闭 swap 分区
关闭 swap 分区,如果无法关闭 Swap 分区,那可能是因为物理内存当前用量 + Swap 分区当前用量已经超过了物理内存的总大小,我们可以先重启服务器,在机器刚启动的时候关闭 Swap 分区。
执行完命令,建议多等一会~
swapoff -a
- 修改配置文件
修改配置文件,—注释"/dev/mapper/centos_master-swap swap"一行
vim /etc/fstab
- 确认swap已经关闭
检查 SWAP 状态, —Swap一行全部为0则为关闭状态,若都显示 0 则表示关闭成功
[root@dev logs]# free -h
total used free shared buff/cache available
Mem: 15G 5.3G 284M 822M 9G 8.9G
Swap: 0B 0B 0B
[root@dev logs]#
- 调整 swappiness 参数
echo 0 > /proc/sys/vm/swappiness # 临时生效
永久生效
vim /etc/sysctl.conf
修改 vm.swappiness 的修改为 0
vm.swappiness=0
使配置生效
sysctl -p
在Linux下添加|修改Swap分区
在Linux下添加|修改Swap分区(虚拟内存)教程
参考URL: https://www.liujason.com/old-blog/2832.html
第一步,确认是否添加过swap分区
为了防止出现任何以外,请先看一下内存中是否已经有swap:
free -m
一般情况下运行命令后会出现如下的内容:
total used free shared buffers cached
Mem: 1840 1614 226 15 36 1340
-/+ buffers/cache: 238 1602
Swap: 0 0 0
如果你看到 Swap 分区中是0的话,那么就可以接着看第二步
如果不是的话说明你已经有了swap分区,你可以通过下面的命令查看swap文件:
# swapon -s
Filename Type Size Used Priority
/swap.img file 4194300 104448 -2
第二步,创建Swap分区
mkdir /swap
cd /swap
使用dd来创建一个空的swap文件(120G 2048*60为例):
dd if=/dev/zero of=/swap/swapfile count=122880 bs=1M