CentOS7设置swap交换文件的完整过程

今天在服务器部署nuxt项目时 执行npm run build总是执行到一半时出现 Killed
后经过查询,说这个是因为内存不足导致的。解决的办法就是设置交换分区或交换文件。
交换分区就不尝试了,直接设置交换文件。一般按照交换区的大小是内存的2-4倍,服务器的内存是1G,所以设置2GB的交换文件大小。那么如果创建这么大的文件呢?网上都是提供的fallocate命令:

fallocate -l 2G /swapfile

结果提示:

fallocate: /swapfile: fallocate failed: Operation not supported

还说什么呢?运气背,没办法。好吧,那就用其他方式吧。后来找到了:truncate -s 2G swapfile
然后,在设置交换文件后,启动交换文件的时候,提示:

swapon: /swapfile: skipping - it appears to have holes. 

对,你没看错,你的文件有很多洞洞,好搞笑。
再换一种:

dd if=/dev/zero of=/swapfile bs=4096 count=512k
不要把if=/dev/zero去掉,似乎有问题。这样就成功创建了一个大文件,没有洞洞了。
好了,下面就将设置swap交换文件的流程说一下,请在root权限下操作,非root用户,请使用root权限,在命令前加上sudo:

1.查看系统是否已经设置了swap交换文件(交换分区)

swapon -s

如果什么也没有就退出了,表示没有设置任何交换文件(分区)。

2.查看内存大小**

 free -m

看到内存大小,来确定交换文件的大小,建议值是内存的2-4倍。当然这只是建议值,你可以根据情况来选择。

3.查看磁盘大小**

df -h

看看磁盘容量,来确定到底设置多大的交换文件比较好。

4.创建交换文件

你也可以创建一个交换分区。我们创建交换文件就好了。有的主机没有办法创建交换分区。相对于创建交换分区来讲,创建交换文件是要容易很多了。
交换文件一般都很大,如何创建大文件的空文件呢?下面有可供选择的命令:

命令1:

fallocate -l 2G /swapfile

2G是容量,/swapfile是文件名和所在的路径,这里是在根目录下创建这样一个文件。但是有些系统就可能会失败。如果失败,就换下一个命令。

命令2:

truncate -s 2G /swapfile

参数基本相同。这个命名创建文件的速度很快,但是可能有问题。我遇到的就是在设置交换文件的时候提示文件有很多洞洞,也就是没法使用。那就换下一个命令。

命令3:

dd if=/dev/zero of=/swapfile bs=4096 count=512k

这个命令就OK了。但是不要去掉 if=/dev/zero,不然还是会出问题的。of后面是文件的路径和文件名,bs是文件块大小,count是块的数量。bs*count=文件大小。我测试过,bs没有要求要对齐到扇区大小的512 字节,但是建议对齐一下,也就是设置为512的整倍数,以免一些系统又出问题。文件越大创建的速度越慢,但是只要最后可以,还是可以等的。创建完会有这样的提示:

524288+0 records in
524288+0 records out
2147483648 bytes (2.1 GB) copied, 38.2492 s, 56.1 MB/s

文件名可以是其他的,不一定要是swapfile哦。

5.设置文件的权限

将文件的权限设置为``` 600```,因为在设置交换文件时需要。下面是设置命令:
chmod 600 /swapfile

6.设置交换文件,将swapfile指定为交换文件

mkswap /swapfile

设置完后,提示:

Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=9ab7410d-5c33-49f1-9f20-a192dc2e0088

7.启动交换文件

swapon /swapfile

8.查看交换文件设置情况

 swapon -s

提示如下:

Filename    Type    Size    Used    Priority
/swapfile   file    2097148 0       -1

9.再使用free确认一遍

free

提示如下:

              total        used        free      shared  buff/cache   available
Mem:        1016516      432388       63392         184      520736      399700
Swap:       3146744     1189312     1957432

这样,系统需要时就会使用它了。

10.如果不再需要了,可以关闭

swapoff /swapfile

关闭之后,再用

swapon -s

就不到交换文件信息了。

11.永久生效交换文件

上面设置的只是临时使用的,重启系统就没有了。如要永久使用这个交换文件,就要写到配置文件里。
配置文件是:/ect/fstab
我们用vi编辑这个文件:

vi /ect/fstab

进入后,按i进入编辑模式,然后在最后一行加入:

/swapfile   swap    swap    sw  0   0

按Esc键退出编辑状态,然后输入:wq,回车就可以退出了。
这样就搞定了。


原文链接

你可能感兴趣的:(CentOS7设置swap交换文件的完整过程)