swap 空间,即交换空间,是 Linux 系统中类似 Windows 虚拟内存的机制,它旨在帮助设备,应对内存消耗大于内存容量的场景。
基本原理
红帽文档给出这样的描述:
当物理内存 (RAM) 已满时,将使用 Linux 中的 交换空间。如果系统需要更多的内存资源并且 RAM 已满,内存中的不活动页面将移到交换空间。虽然交换空间可以帮助具有少量 RAM 的计算机,但不应将其视为更多 RAM 的替代品。交换空间位于硬盘驱动器上,其访问时间比物理内存要慢。交换空间可以是专用的交换分区(推荐)、交换文件,或者交换分区和交换文件的组合。请注意,Btrfs 不支持 swap 空间。
背景:Zabbix 告警
Zabbix 纳管虚拟机,如果 swap 占用过高,会有如下告警:
1
| High swap space usage (less than 50% free)
|
查看对应设备的 swap 分区占用情况:
1 2 3 4 5
| ╭─dsf@app ~ ╰─$ free -m total used free shared buff/cache available Mem: 9652 7222 745 9 1999 2429 Swap: 3995 3030 965
|
如果排查过后,您认为此告警并不由内存异常的场景原因触发,可能需要调大 swap 分区。
红帽推荐的 swap 空间大小如下:
系统中的 RAM 量 |
推荐的 swap 空间 |
如果允许休眠则推荐使用 swap 空间 |
⩽ 2 GB |
RAM 量的 2 倍 |
RAM 量的 3 倍 |
> 2 GB – 8 GB |
与 RAM 量相等 |
RAM 量的 2 倍 |
> 8 GB – 64 GB |
至少 4 GB |
RAM 量的 1.5 倍 |
> 64 GB |
至少 4 GB |
不推荐休眠 |
调整 swap
操作目标是增加 10G 空间。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| ╭─dsf@app ~ ╰─$ free -m total used free shared buff/cache available Mem: 9652 7222 745 9 1999 2429 Swap: 3995 3030 965 # ╭─dsf@app /usr ╰─$ sudo dd if=/dev/zero of=/usr/swap/swap0 bs=1M count=10240 status=progress 9088008192字节(9.1 GB,8.5 GiB)已复制,3 s,3.0 GB/s 记录了10240+0 的读入 记录了10240+0 的写出 10737418240字节(11 GB,10 GiB)已复制,3.49771 s,3.1 GB/s # ╭─dsf@app /usr ╰─$ sudo chmod 600 /usr/swap/swap0 # ╭─dsf@app /usr ╰─$ sudo mkswap /usr/swap/swap0 正在设置交换空间版本 1,大小 = 10 GiB (10737414144 个字节) 无标签,UUID=da341844-72da-44c5-abf5-6f2c5d9c1f61 # ╭─dsf@app /usr ╰─$ sudo swapon /usr/swap/swap0 # ╭─dsf@app /usr ╰─$ echo '/usr/swap/swap0 none swap sw 0 0' | sudo tee -a /etc/fstab /usr/swap/swap0 none swap sw 0 0
|
再次查看 swap 信息,已经生效(无需重启机器):
1 2 3 4 5 6 7 8 9 10
| ╭─dsf@app /usr ╰─$ free -m total used free shared buff/cache available Mem: 9652 7220 179 9 2563 2431 Swap: 14235 3030 11205 ╭─dsf@app /usr ╰─$ swapon --show NAME TYPE SIZE USED PRIO /dev/dm-1 partition 3.9G 3G -2 /usr/swap/swap0 file 10G 0B -3
|
参考
-EOF
查看最新版,请访问本文链接:https://blog.onehat.cn/p/4a82.html
原创作品,转载请保留出处。