Linux开启交换分区
买的云服务器内存比较低,只有 2G,所以打算开一个 4G 的交换分区。
创建大小为 4G 的分区。
1 | dd if=/dev/zero of=/data/swap bs=1G count=4 |
将该分区转换为交换分区。
1 | mkswap /data/swap |
开启该交换分区。
1 | swapon /data/swap |
设置交换分区开机自启。
1 | echo "/data/swap swap swap defaults 0 0" >> /etc/fstab |
输入 free -h
命令查看。
1 | total used free shared buff/cache available |
2024 年 1 月 16 日补充。
阿里云服务器开启交换分区后,交换内存使用量一直是 0。
后面上网查找原因,好像阿里云服务器默认要等实际内存使用完,才会使用交换内存。如果要提前使用,则需要修改 /etc/sysctl.conf。
添加一行 vm.swappiness = 60,其中 60 表示,当实际内存使用量超过 60% 时,开始使用交换内存。这个数值,可以根据需要自己调整。
然后 sysctl -p 即可。
2024 年 2 月 26 日补充。
准备把交换分区再扩大一点,所以打算删了当前交换分区再重建一个。
但是关闭当前交换分区的时候报错。
1 | swapoff /data/swap |
提示 swapoff: /data/swap: swapoff failed: Cannot allocate memory
。
根据提示,猜测是关闭当前交换分区时,会把交换内存的数据移到真实内存,真实内存不够所以导致报错。
把跑的服务都一个个关了,然后再次执行就可以了。