公司一台centos服务器在安装之初,配备了1T的物理内存,以为虚拟内存要求不高,采用系统默认分配的虚拟内存,导致后期使用中,部分需要使用虚拟内存的软件在物理内存空余还600多G的情况下,提示内存不足。所以需要调整虚拟内存,解决软件报错问题。

解决步骤分为:

1.关闭虚拟内存
2.创建虚拟内存文件
3.重新开启虚拟内存

1.关闭虚拟内存

[root@localhost ~]# swapoff -a
[root@localhost ~]# free -h
          total        used        free      shared  buff/cache   available
Mem:           1.0T        258G        274G         27M        473G        746G
Swap:            0B          0B          0B
虚拟内存关闭后,显示为0

2.创建虚拟内存文件

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0 223.1G  0 disk 
├─sda1            8:1    0     1G  0 part /boot
└─sda2            8:2    0 222.1G  0 part 
  ├─centos-root 253:0    0 218.1G  0 lvm  /
  └─centos-swap 253:1    0     4G  0 lvm  
sdb               8:16   0   1.8T  0 disk 
└─sdb1            8:17   0   1.8T  0 part /local
找一个空间够大,速度够快的分区,创建虚拟内存用
[root@localhost ~]# mkdir /local/swap -p
[root@localhost ~]# dd if=/dev/zero of=/local/swap/swapfile bs=512M count=80
我这里是创建一个40G的虚拟内存文件,bs是块大小,count是次数,视服务器性能自行灵活调整。
[root@localhost ~]# mkswap /local/swap/swapfile

3.重新开启虚拟内存

[root@localhost ~]# swapon /local/swap/swapfile
[root@localhost ~]# free -h
          total        used        free      shared  buff/cache   available
Mem:           1.0T        258G        274G         27M        473G        746G
Swap:           39G          0B         39G

其他关联操作

1.调整fstab文件
2.调整虚拟内存阈值

1.调整fstab

[root@localhost ~]# vim /etc/fstab
注释原虚拟内存配置,并添加一行
/local/swap/swapfile swap swap defaults 0 0

2.调整虚拟内存阈值

[root@localhost ~]# cat /proc/sys/vm/swappiness
60
[root@localhost ~]# echo "vm.swappiness = 80" >>  /etc/sysctl.conf    # 永久修改虚拟内存阈值
[root@localhost ~]# sysctl vm.swappiness = 80    # 临时修改虚拟内存阈值
[root@localhost ~]# sysctl -p
vm.swappiness = 80
[root@localhost ~]# cat /proc/sys/vm/swappiness
80
swappiness=0意味着“在任何情况下都不要发生交换”。
swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面
默认为物理内存使用超过100%-60%=40%后再启用虚拟内存,调整后为100%-80%=20%
最后修改:2023 年 12 月 08 日
如果觉得我的文章对你有用,请随意赞赏