Linux创建swap交换分区

前言

当自己的内存不够用时,可以适当的添加 swap分区。

比如 java开发就很费内存,主要是idea费内存,这时候会产生一个kswpd0的进程,会把当前内存部分放入swap分区,如果没有设置swap分区,那么死机的几率就很大了。

首先确定有没有swap分区

1
2
3
4
5
6
free -m
# 交换(swap)分区为 0 0 0 就是没有交换分区
总计 已用 空闲 共享 缓冲/缓存 可用
内存: 7833 3259 3115 805 1458 3501
交换: 0 0 0

创建swap分区

1、新增硬盘分区(明显不行了,没有新的硬盘了)

2、用文件作为 swap 分区

下面所有的操作都需要root权限,需要谨慎

创建一个空的swap文件

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

其中 dd 命令的内容可以按自己的需求修改:

  • if =输入文件(或设备名称)。
  • of =输出文件(或设备名称)。
  • ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。
  • skip = blocks 跳过读入缓冲区开头的ibs*blocks块。
  • obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。
  • bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。
  • cbs = byte 一次转换bytes字节。
  • count=blocks 只拷贝输入的blocks块。

成功后的反馈

1
2
3
记录了8192+0 的读入
记录了8192+0 的写出
8589934592 bytes (8.6 GB, 8.0 GiB) copied, 17.0281 s, 504 MB/s

激活swap分区

Swap分区需要读写的权限,授权:

1
sudo chmod 600 /swapfile

查看授权:

1
sudo ls -lh /swapfile

成功提示:

1
-rw------- 1 root root 8.0G  1月 14 17:42 /swapfile

然后挂载Swap分区:

1
sudo mkswap /swapfile

成功提示:

1
2
正在设置交换空间版本 1,大小 = 8 GiB (8589930496  个字节)
无标签,UUID=cb8134b6-d8b9-4428-937a-caa9180afaad

打开swap

1
sudo swapon /swapfile

查看

1
free -m

设置开机自启

1
sudo vim /etc/fstab

在末尾添加

1
/swapfile none swap sw 0 0 

本文地址: https://github.com/maxzhao-it/blog/post/53370/