在Linux系统上扩展swap空间

一、what is swap?

SWAP的作用类似Windows系统下的“虚拟内存”。当物理内存不足时,拿出部分硬盘空间当SWAP分区(虚拟成内存)使用,从而解决内存容量不足的情况。

当某进程向OS请求内存发现不足时,OS会把内存中暂时不用的数据交换出去,放在SWAP分区中,这个过程称为SWAP OUT。

当某进程又需要这些数据且OS发现还有空闲物理内存时,又会把SWAP分区中的数据交换回物理内存中,这个过程称为SWAP IN。

swap使用完,操作系统会触发OOM-Killer机制,把消耗内存最多的进程kill掉以释放内存。

二、涉及命令

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

三、操作

3.1.查看当前swap情况

root@VM-4-6-ubuntu:~# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        955M        111M        4.9M        765M        697M
Swap:          4.0G        3.5M        4.0G

3.2.关闭所有swap

swapoff -a

3.3.创建swap分区的文件

dd if=/dev/zero of=swapfile bs=1M count=8192

bs是每块的大小,count是块的数量;bs*count,就是swap文件的大小

swapfile文件路径

3.4.格式化swapfile并启用swap分区文件

mkswap swapfile
swapon swapfile

3.5.添加开机启动

修改/etc/fstab这个文件,添加或者修改这一行:

/swapfile swap swap defaults 0 0

swapfile为全路径

此项不是必须的。如果不修改开机启动配置,重启之后的swap空间会重置,之前配置丢失。

3.6. 设置swap占用

  1. 查看系统的 swappiness

    $ cat /proc/sys/vm/swappiness
    ## 一般默认 60  (内存达40 开始使用swap)
    
  2. 修改swappiness值为10

    $ sudo sysctl vm.swappiness=10
    ## 临时性的修改,在你重启系统后会恢复默认
    
  3. 永久修改

    $ sudo vim /etc/sysctl.conf
    ## 添加 vm.swappiness=10 保存,重启,OK
    

3.7.[扩展方式] 通过新建分区来扩展原有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
    

参考资料

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值