zoukankan      html  css  js  c++  java
  • linux增加swap空间的方法小结

    起因及背景

    近期编译AOSP(android 10.0)是总是遇到内存溢出,查了半天,无果。猜测增加下swap空间大小是否能解决,随即尝试下,果然是如此。
    当然,还有其他作法,比如直接增加主机的内存(硬件方案)。

    我的系统是Ubuntu 18.04。

    Linux下swap空间大小通常在安装系统时设置swap分区时预设的,不过系统提供了添加或改动swap分区的命令。

    涉及的命令

    • free:查看内存状态命令,可以显示memory、swap、buffer/cache等的大小及使用状况;
    • dd:读取,转换并输出数据命令;
    • mkswap:设置交换区
    • swapon:启用交换区,相当于mount
    • swapoff:关闭交换区,相当于umount

    查看swap空间大小

    通过查看内存状态命令free可以获得swap空间大小,正常状况下可使用以下三个命令之一:

    free
    free -m
    free -h

    比如下面是free -h在我主机上的输出:

    $ free -h
                         total        used        free      shared  buff/cache   available
    Mem:            13G        3.5G        2.7G        367M        7.4G        9.4G
    Swap:           11G        126M         11G
    

    关闭所有交换分区

    命令如下:

    swapoff -a

    通过swap分区文件增加swap空间

    1. 创建swap分区的文件

    dd if=/dev/zero of=swapfile bs=1M count=1024
    其中bs是每块的大小,count是块的数量;bs*count,就是swap文件的大小:这里1M*1024=1G。可以根据需要自行调整。

    此外,swapfile是swap文件的路径,可以根据需求修改。

    2. 格式化交换分区文件

    mkswap swapfile
    这里的路径和之前的路径要对应起来。

    3. 启用swap分区文件

    swapon swapfile

    4. 添加开机启动

    修改/etc/fstab这个文件,添加或者修改这一行:
    swapfile swap swap defaults 0 0
    注意,路径还是要对应,而且必须是全路径。最后两个是零,不是大写字母O。
    此项不是必须的。如果不修改开机启动配置,重启之后的swap空间会重置,之前配置丢失。

    通过新建分区来扩展原有swap空间

    这个是Linode的默认做法,这里也介绍一下。此方法与swap文件类似,只是使用了一个独立分区,而不是文件。

    1. 使用fdisk创建交换分区(假设是 /dev/sdb2
    2. 使用mkswap设置交换分区:
      mkswap /dev/sdb2
    3. 启用交换分区
      swapon /dev/sdb2
    4. 修改/etc/fstab添加到开启启动项:
      /dev/sdb2 swap swap defaults 0 0

    小结

    本文简单介绍了在Linux如何实现swap空间的增大,主要使用了swapon/swapoff/free等命令,仅供后续参考。

    参考资料

  • 相关阅读:
    filter&map&reduce
    Linux通过进程ID查看文件路径
    PyCharm使用最多也最常用默认快捷键介绍
    Python中的深浅拷贝
    类加载器&反射
    Java web.xml 配置详解
    SpringMVC + Spring + MyBatis 整合 + Spring shrio + easyUI + 权限管理框架,带shrio session和shrio cache集群实现方案
    JAVA大数据数组排序
    高访问量WEB开发中的架构模式,学习从点滴开始
    WEB项目会话集群的三种办法
  • 原文地址:https://www.cnblogs.com/tocy/p/linux-swap-cmd-summary.html
Copyright © 2011-2022 走看看