Ubuntu系统调整Swap交换文件大小

2020年12月18日 6894点热度 0人点赞 0条评论

什么是Swap分区

Swap分区在系统的物理内存不够用的时候,把硬盘内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。

系统安装时自动创建的swap交换文件只有1G,然而跑编译的时候一直会提示错误,后来才发现是交换文件太小了,需要另外再增加一些swap交换文件的大小。

查看Swap文件大小

free -m m 是以兆为单位, g是以GB为单位, 默认是kb

我们可以看到默认配置的swap文件是2G,如果是用来编译处理大数据的话肯定是不够用的。

创建目录和SWAP文件

在相应目录下创建一个存放swap文件的文件夹 并进入该目录

sudo mkdir /home/swapfile

cd home/swapfile

用dd命令创建swap文件

用dd命令创建一个2G的交换空间文件

sudo dd if=/dev/zero of=swap bs=1G count=2

dd 命令解释

dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2

参数注释:
1 if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >

2 of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >

3 ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
  obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
  bs=bytes:同时设置读入/输出的块大小为bytes个字节。

4 cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。

5 skip=blocks:从输入文件开头跳过blocks个块后再开始复制。

6 seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
  注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。

7 count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。

8 conv=conversion:用指定的参数转换文件。
       ascii:转换ebcdic为ascii
       ebcdic:转换ascii为ebcdic
       ibm:转换ascii为alternate ebcdic
       block:把每一行转换为长度为cbs,不足部分用空格填充
       unblock:使每一行的长度都为cbs,不足部分用空格填充
       lcase:把大写字符转换为小写字符
       ucase:把小写字符转换为大写字符
       swab:交换输入的每对字节
       noerror:出错时不停止
       notrunc:不截短输出文件
       sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

转换swap文件

sudo mkswap -f swap

激活Swap文件

sudo swapon swap

有时候会出现报错 swapon: /swapfile: insecure permissions 0644, 0600 suggested.

此时需要将swap文件修改权限为644 或者600即可

chmod 644 swap

永久激活Swap文件

编辑 fstab 文件

sudo nano /etc/fstab

在最后加上之前创建的swap文件路径和参数,重启后就正常加载swap文件了

/home/swapfile/swap none swap defaults 0 0

查看swap文件状态

swapon

会将所有的swap文件位置都列出来

再次查看状态

free -m 此时已经正常显示交换文件大为4G。

停止swap交换文件

sudo swapoff /home/swapfile/swap

删除交换文件

sudo rm /home/swapfile/swap

暗暗

这个人很懒,什么都没留下

文章评论