CentOS 分配和禁用 swap 空间

CentOS 分配和禁用 swap 空间

云服务的内存不够,也没有自动分配 swap 空间,导致 mysql 服务器无法启动。

此时我们可以自己分配 swap 空间作为缓存,个人感觉 swap 类似于 windows 里的虚拟内存。

分配并启用 swap

获取硬盘设备路径

1
$ df -h

分配空间4G

1
$ sudo dd if=/dev/vda1 of=/swapfile count=4096 bs=1MiB

DO 文档里面的 sudo fallocate -l 4G /swapfile 是错误的,评论区出人才!

权限设置

1
2
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile

制作 swap 系统,如果成功会有一个类似下面的提示:

1
2
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=b99230bb-21af-47bc-8c37-de41129c39bf

启动 swap

1
$ sudo swapon /swapfile

查看结果

1
free -m

检查 swap 是否已经在运行、有容量了。

开机自动挂载

在文件 /etc/sysctl.conf 末尾追加内容、并保存

/etc/sysctl.conf
1
/swapfile   swap    swap    sw  0   0

禁用系统默认的 swap 分区

某些场景下,不能使用 swap 分区,此时则应该禁用 swap 分区:

取消挂载

编辑 /etc/fstab 文件,取消 swap 分区的挂载:

/etc/fstab
1
2
3
4
5
6
7
8
9
# /etc/fstab
# Created by anaconda on Sat Feb 29 05:30:30 2020
#
# 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
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=666d6259-55da-4501-91fb-40b2c0b16ca2 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0

swap 文件系统那一行对应的路径就是目前挂载的 swap 分区。

我们将这一行删掉,或者注释掉,保存退出。

下次系统启动时就不会自动挂载该 swap 分区。

如果不想重启系统,根据 swap 分区的路径,执行下面的命令即可立即禁用 swap 分区。

1
$ swapoff /dev/mapper/centos-swap

释放分区

todo

参考链接

How To Add Swap on CentOS 7

CentOS 7 关闭 swap 分区

评论