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 | $ sudo chmod 600 /swapfile |
制作 swap 系统,如果成功会有一个类似下面的提示:
1 | Setting up swapspace version 1, size = 4194300 KiB |
启动 swap
1 | $ sudo swapon /swapfile |
查看结果
1 | free -m |
检查 swap 是否已经在运行、有容量了。
开机自动挂载
在文件 /etc/sysctl.conf
末尾追加内容、并保存
1 | /swapfile swap swap sw 0 0 |
禁用系统默认的 swap 分区
某些场景下,不能使用 swap 分区,此时则应该禁用 swap 分区:
取消挂载
编辑 /etc/fstab
文件,取消 swap 分区的挂载:
1 | # /etc/fstab |
swap
文件系统那一行对应的路径就是目前挂载的 swap 分区。
我们将这一行删掉,或者注释掉,保存退出。
下次系统启动时就不会自动挂载该 swap 分区。
如果不想重启系统,根据 swap 分区的路径,执行下面的命令即可立即禁用 swap 分区。
1 | $ swapoff /dev/mapper/centos-swap |
释放分区
todo