【Linux】使用swap分区解决内存不足问题

使用swap分区解决内存不足问题

文章目录

    • 使用swap分区解决内存不足问题
      • 开启 SWAP
        • 1、创建用于交换分区的文件:
        • 2、设置交换分区文件:
        • 3、立即启用交换分区文件:
        • 4、设置开机时自启用 SWAP 分区:
        • 5、修改 swpapiness 参数
      • 关闭 SWAP
        • 1、free -m 查询 SWAP 分区设置:
        • 2、使用命令 swapoff 关闭 SWAP,比如:
        • 3、修改 /etc/fstab 文件,删除或注释相关配置,取消 SWAP 的自动挂载:
        • 4、 通过 free -m 确认 SWAP 已经关闭。
        • 5、 swappiness 参数调整:

参考于阿里云文档: 云服务器 ECS Linux SWAP 配置概要说明

开启 SWAP

1、创建用于交换分区的文件:

# dd if=/dev/zero of=/mnt/swap bs=1M count=8192   //创建8g虚拟内存 bs=block_size count=number_of_block  

等待稍长时间后输出

8192+0 records in
8192+0 records out
8589934592 bytes (8.6 GB) copied, 55.5164 s, 155 MB/s

2、设置交换分区文件:

# mkswap /mnt/swap

完成后提示

Setting up swapspace version 1, size = 8388604 KiB
no label, UUID=23b4b66c-ef48-4a8a-a8dd-f9e977287932

3、立即启用交换分区文件:

# swapon /mnt/swap

是free指令查看是否生产swap分区

[root@izj6c47bc02i5akvuyb8xzz target]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1839         506          62          24        1270        1137
Swap:          8191           0        8191

注:如果在 /etc/rc.local 中有 swapoff -a 需要修改为 swapon -a

4、设置开机时自启用 SWAP 分区:

需要修改文件 /etc/fstab 中的 SWAP 行

# vim /etc/fstab

末尾添加 /mnt/swap swap swap defaults 0 0

# /etc/fstab
# Created by anaconda on Fri Aug 18 03:51:14 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=59d9ca7b-4f39-4c0c-9334-c56c182076b5 /                       ext4    defaults        1 1
/mnt/swap swap swap defaults 0 0

注:/mnt/swap 路径可以修改,可以根据创建的 SWAP 文件具体路径来配置。

5、修改 swpapiness 参数

在 Linux 系统中,可以通过查看 /proc/sys/vm/swappiness内容的值来确定系统对 SWAP 分区的使用原则。当 swappiness 内容的值为 0 时,表示最大限度地使用物理内存,物理内存使用完毕后,才会使用 SWAP 分区。当 swappiness 内容的值为 100 时,表示积极地使用 SWAP 分区,并且把内存中的数据及时地置换到 SWAP 分区。

查看修改前为 0,需要在物理内存使用完毕后才会使用 SWAP 分区:

  • 临时修改

假设我们配置为空闲内存少于 10% 时才使用 SWAP 分区:

echo 10 >/proc/sys/vm/swappiness
  • 永久修改

若需要永久修改此配置,在系统重启之后也生效的话,可以修改 /etc/sysctl.conf 文件,并增加以下内容:

# vim /etc/sysctl.conf

将配置文件中的vm.swappiness属性值改为10vm.swappiness=10

# sysctl -p

关闭 SWAP

当系统出现内存不足时,开启 SWAP 可能会因频繁换页操作,导致 IO 性能下降。如果要关闭 SWAP,可以采用如下方法。

1、free -m 查询 SWAP 分区设置:

[root@izj6c47bc02i5akvuyb8xzz target]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1839         506          62          24        1270        1137
Swap:          8191           0        8191

2、使用命令 swapoff 关闭 SWAP,比如:

swapoff /mnt/swap  

3、修改 /etc/fstab 文件,删除或注释相关配置,取消 SWAP 的自动挂载:

# /etc/fstab
# Created by anaconda on Fri Aug 18 03:51:14 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=59d9ca7b-4f39-4c0c-9334-c56c182076b5 /                       ext4    defaults        1 1
#/mnt/swap swap swap defaults 0 0

4、 通过 free -m 确认 SWAP 已经关闭。

[root@izj6c47bc02i5akvuyb8xzz target]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1839         506          62          24        1270        1137
Swap:             0           0           0

5、 swappiness 参数调整:

可以使用下述方法临时修改此参数,这里配置为 0%:

echo 0 >/proc/sys/vm/swappiness    

若需要永久修改此配置,在系统重启之后也生效的话,可以修改 /etc/sysctl.conf 文件,并增加以下内容:

# vim /etc/sysctl.conf

设置vm.swappiness=0

# sysctl -p

你可能感兴趣的:(服务器运维)