阿里云服务器添加 Swap 分区

18-03-30 22:04 21875 0 技术

Linux 中 Swap(即:交换分区),类似于 Windows 的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。

由于我的 MySQL 总是报错 InnoDB: Fatal error: cannot allocate memory for the buffer pool 分配内存不足,使用 Swap 分区可以缓解内存不够的情况。

查看是否启用swap分区

# cat /proc/swaps
Filename				Type		Size	Used	Priority

看到无 swap 分区。

查看内存使用情况

# free -m
              total        used        free      shared  buff/cache   available
Mem:           3790        1785        1449          31         555        1723
Swap:             0           0           0

可以看到 swap 大小为0!

创建 swap 分区

dd if=/dev/zero of=/mnt/swapfile bs=1MB count=4096
语法:dd [选项]
if =输入文件(或设备名称)。
of =输出文件(或设备名称)。
ibs = bytes 一次读取 bytes 字节,即读入缓冲区的字节数。
skip = blocks 跳过读入缓冲区开头的 ibs*blocks 块。
obs = bytes 一次写入 bytes 字节,即写入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置 ibs 和 obs)
cbs = byte 一次转换 bytes 字节。
count = blocks 只拷贝输入的 blocks 块。

注:此文件的大小是 count 的大小乘以 bs 大小,上面命令的大小即 4GB

格式化虚拟内存文件

mkswap /mnt/swapfile

修改 vm.swappiness 中的数值

查看内核参数 vm.swappiness 中的数值是否为 0,如果为 0 则根据实际需要调整成 30 或者 60

cat /proc/sys/vm/swappiness
sysctl -a | grep swappiness
sysctl -w vm.swappiness=60

查看 swappiness 值,如果为 0 ,则将其改为 60

vim /etc/sysctl.conf

永久设置 swappiness,如果该文件里没有,则追加 vm.swappiness = 60

激活虚拟内存文件

swapon /mnt/swapfile

让系统开机的时候自动加载虚拟内存文件

vim /etc/fstab

在最后加上最后这句话:

/mnt/swapfile swap swap defaults 0 0

注:阿里云默认在启动项里关闭了 SWAP 分区,在/etc/rc.d/rc.local 文件里有一行 swapoff -a ,表示禁用 swap。把这行删掉就好了。

请登录后发表评论 点击登录

文章归档

文章日历

2024 年 11 月
26 27 28 29 30 01 02
03 04 05 06 07 08 09
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

文章标签

最新评论

友情链接