添加swap空间

写在前面

① swap 直译“交换”,Linux系统中常称为“swap分区”
② 类似Windows的“虚拟内存”,当物理内存不足时,拿出部分硬盘空间当“内存”使用,以解决内存容量不足的情况
③ 当某个进程申请内存,但OS发现内存不足时,OS会把内存中不活跃的数据“交换到swap分区中,当OS发现又要用到swap中的数据,而且物理内存还有空余,又会从swap分区拿回来;这两个过程分别叫 swap out和swap in
④ swap也有上限,一旦不够开销,OS会把占内存最多的进程kill掉以释放内存(OOM-Killer机制)
⑤ 虽然swap在装机时已经划分好了,但还是可以添加的

热身

$ swapon -s          # 查看当前swap空间(KB)
Filename    Type   Size    Used    Priority
/swap       file   135164  93720   -1
$ cat /proc/swaps    # 或者查看该文件也可以
  • 增加的方式有两种:① 使用一个硬盘分区 ② 使用一个文件

只介绍第二种

$ sudo dd if=/dev/zero of=/root/myswapfile bs=1M count=1024
1024+0 records in
1024+0 records out

$ ls -l /root/myswapfile             # 可以看到创建了一个文件,大小1GB
-rw-r--r-- 1 root root 1073741824 Oct 23 05:39 /root/myswapfile

$ sudo chmod 600 /root/myswapfile    # 修改权限,只root能读写

$ sudo mkswap /root/myswapfile       # 把文件设置成swap类型
Setting up swapspace version 1, size = 1073737 kB

$ sudo swapon /root/myswapfile       # 设置生效(临时,reboot后失效)

设置永久生效

$ sudo vi /etc/fstab
  • 把下面的内容添到文件末尾
    /root/myswapfile        swap         swap    defaults     0 0
    

验证

$ swapon -s
Filename                                Type            Size    Used    Priority
/swap                                   file            135164  93720   -1
/root/myswapfile                        file            1048572 39640   -2

可以解决的问题

  • git clone 时报错
    remote: Couting objects: 9527, done.
    remote: Compressing objects: 100% (45601/45601), done.
    fatal: Out of memory, malloc failed (tried to allocate 1752150036 bytes)
    
posted @ 2020-10-30 14:36  z417  阅读(133)  评论(0编辑  收藏  举报