Linux云服务器开启SWAP分区(虚拟内存)


Linux服务器的SWAP分区,类似于Windows系统中的虚拟内存,开启了,可以提高系统可用内存。

默认情况下,云服务器都没有开启SWAP分区,需要自己手动开启。

确定服务器有没有开启SWAP分区,在终端执行以下命令:

free -m
[root@VM-16-10-centos ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           7768         214        6581           1         972        7303
Swap:             0           0           0

Swap那一行都是0,说明没有开启SWAP分区。

开启SWAP分区步骤如下:

① 创建交换分区的文件

dd if=/dev/zero of=/mnt/swap bs=1M count=1024

bs=1M count=1024代表设置1G大小SWAP分区,这2个参数可以自行调整。

[root@VM-16-10-centos ~]# dd if=/dev/zero of=/mnt/swap bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 1.09435 s, 981 MB/s

② 设置交换分区文件

mkswap /mnt/swap
[root@VM-16-10-centos ~]# mkswap /mnt/swap
mkswap: /mnt/swap: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=a1b75688-f9a5-456d-8ab4-74ef7aa9eab3

③ 启用交换分区文件

swapon /mnt/swap
[root@VM-16-10-centos ~]# swapon /mnt/swap
swapon: /mnt/swap: insecure permissions 0644, 0600 suggested.

如果/etc/rc.local文件里有swapoff -a,需要修改为swapon -a。

cat /etc/rc.local
[root@VM-16-10-centos ~]# cat /etc/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local

上面文件中没有,所以不需要修改。

④ 开启自启

/mnt/swap swap swap defaults 0 0

⑤ 查看SWAP分区的使用原则

cat /proc/sys/vm/swappiness
[root@VM-16-10-centos ~]# cat /proc/sys/vm/swappiness
30

当 swappiness内容的值为0时,表示最大限度地使用物理内存,物理内存使用完毕后,才会使用SWAP分区。当swappiness内容的值为100时,表示积极地使用SWAP分区,并且把内存中的数据及时地置换到SWAP分区。

修改这个值,改为10

echo 10 >/proc/sys/vm/swappiness

如果需要永久修改,编辑/etc/sysctl.conf文件

添加或修改

vm.swappiness = 10

查看是否修改成功

sysctl -p

⑥ 通过top命令查看SWAP分区使用情况

top
Tasks:  89 total,   2 running,  87 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.7 us,  2.0 sy,  0.0 ni, 95.3 id,  0.3 wa,  0.7 hi,  0.0 si,  0.0 st
MiB Mem :   7768.8 total,   5518.3 free,    223.3 used,   2027.2 buff/cache
MiB Swap:   1024.0 total,   1024.0 free,      0.0 used.   7281.2 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND             
   5637 root      20   0  599280  22900   5672 S   1.0   0.3  26:51.51 barad_agent         
   7027 root      20   0  970668  63908  31864 S   1.0   0.8  23:31.82 YDService           
      1 root      20   0  172860  10896   7948 S   0.0   0.1   0:16.86 systemd             
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.01 kthreadd            
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp              
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp          
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-event+ 
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq        
     10 root      20   0       0      0      0 S   0.0   0.0   0:27.72 ksoftirqd/0  

查看这一行

MiB Swap:   1024.0 total,   1024.0 free,      0.0 used.   7281.2 avail Mem 

至此,Linux服务器开启SWAP分区教程结束,关闭SWAP分区教程请自行搜索。