介绍
小白有个小内存吃灰鸡,跑了点东西,内存居然溢出,遇到内存不足导致进程被杀掉。服务器的内存只有1个G,明显不满足日常需求,要么花钱加内存,要么,就采用虚拟内存的办法,将硬盘空间划过来一部分当内存。
以前安装Linux的时候,就遇到分配交换空间的问题,其实这个交换空间就是所谓的虚拟内存。虚拟内存是硬盘中划出来的一段虚拟内存空间,用于扩展操作系统的物理内存。当系统的物理内存不够用的时候,操作系统把内存中最不常用的数据“交换”到虚拟内存,从而将物理内存中的一部分空间释放出来供其他程序使用。当程序需要用到虚拟内存内的数据的时候,操作系统再将数据从交换分区恢复到物理内存中。
Linux操作系统有两种实现虚拟内存的方法:交换分区(swap分区)和交换文件(swap文件)。
采用交换分区的办法其实就是新建一个分区,然后将该分区挂载作为交换空间,方法步骤与传统的新建分区一样。只不过格式化分区和挂载分区分别采用mkswap和swapon命令。在创建分区之前,我们常常要用过fdisk -l和df -Th命令来查看硬盘信息和挂载信息,来确定分区的大小。
这里就给大家简单介绍一下采用交换文件的方法吧。
实操
登录SSH后,输入以下命令进行查看Swap分区大小:
#查看Swap分区大小 free -h
这时可能会有两种情况:
- 已经设置过swap
- 没有设置swap
如果要增加Swap交换分区,就要先删除目前的Swap分区,删除后我们再增加Swap交换分区。(不删除目前的Swap交换分区是不能增加新的Swap交换分区)。
删除Swap交换分区
输入以下命令删除Swap交换分区
#删除Swap交换分区 swapoff -a
命令输入后“回车”,“回车”后在SSH上面是没反应的,但是已经删除了Swap交换分区,如果不确定有没有删除Swap交换分区,我们可以再次查看Swap分区大小。输入命令:
查看Swap分区大小 free -h
然后我们再次查看Swap分区大小已经变为了0M,说明已经删除了Swap交换分区。
新增SWAP交换分区
创建swap分区的文件,输入以下命令:
#创建swap分区的文件 dd if=/dev/zero of=/mnt/swapfile bs=1M count=2048
以上命令中:if表示input_file输入文件,of表示output_file输出文件,bs表示block_size块大小,count表示计数。这里,我采用了数据块大小为1M,数据块数目为2048,这样分配的空间就是2G大小。
SWAP交换分区大小大家可以自行修改。
然后,格式化交换文件:
mkswap /mnt/swapfile
之后,挂载交换文件:
swapon /mnt/swapfile
这样,可以看到添加了2G虚拟内存之后的内存大小
为了保证开机自动加载虚拟内存,还需要在/etc/fstab文件中加入如下命令:
nano /etc/fstab
/mnt/swapfile swap swap defaults 0 0
这样,就可以顺利执行一些比较消耗内存的操作了。
一键脚本
wget -O swap.sh https://down.vpsxb.net/swap.sh && bash swap.sh