本文介绍在Debian 10 Linux系统上添加Swap交换空间的方法,包括调整Swappiness值、删除Swap交换文件。Swap是磁盘上的空间,当物理内存量已满时使用,当Linux系统用完RAM时,非活动页面会从RAM移动到Swap空间,Swap空间可以采用专用Swap分区或Swap文件的形式,通常在运行Debian虚拟机时,不存在Swap分区,因此唯一的选择是创建Swap文件,参考在Linux上创建交换文件和删除交换文件的方法

在开始之前

虽然可能,但在一台机器上有多个Swap空间并不常见,要检查Debian安装是否已启用Swap,请运行以下命令:

sudo swapon –show

如果输出为空,则表示系统没有Swap交换空间。

否则,如果你得到类似下面的信息,你已经在你的Debian系统上启用了Swap:

在Debian 10 Linux上添加Swap交换空间和调整Swappiness值

要激活Swap,运行命令的用户必须具有sudo权限。

创建Swap交换文件

在这个例子中,我们将创建并激活1G的Swap,要创建更大的Swap,请将1G替换为所需Swap空间的大小。

以下步骤操作如何在Debian 10上添加Swap交换空间。

1、首先创建一个用于Swap的文件:

sudo fallocate -l 1G /swapfile

如果未安装fallocate或者你收到错误消息,指出fallocate失败:操作不受支持(fallocate failed: Operation not supported),你可以使用以下命令创建交换文件:

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

2、只有root用户才能读取和写入交换文件,输入以下命令以设置正确的权限:

sudo chmod 600 /swapfile

3、使用mkswap工具在文件上设置Linux Swap区域:

sudo mkswap /swapfile

4、激活Swap文件:

sudo swapon /swapfile

要使更改永久,打开/etc/fstab文件:

sudo nano /etc/fstab

并粘贴以下行:

/swapfile swap swap defaults 0 0

5、使用swapon或free命令验证Swap是否处于活动状态,如下所示:

sudo swapon –show

在Debian 10 Linux上添加Swap交换空间和调整Swappiness值

sudo free -h

在Debian 10 Linux上添加Swap交换空间和调整Swappiness值

参考:free命令_Linux free命令使用详解:显示内存的使用情况

调整Swappiness值

Swappiness是一个Linux内核属性,用于定义系统使用交换空间的频率,Swappiness可以具有0到100之间的值,较低的值将使内核尽可能避免Swap,而较高的值将使内核更积极地使用Swap交换空间。

默认的swappiness值为60,可以使用cat命令检查当前的swappiness值:

cat /proc/sys/vm/swappiness

返回数值:

60

虽然桌面可以使用60的swappiness值,但对于服务器,你应该设置较低的值。

例如,要将swappiness值设置为10,请输入:

sudo sysctl vm.swappiness=10

要使此参数在重新引导后保持不变,请将以下行附加到/etc/sysctl.conf文件:

vm.swappiness=10

最佳swappiness值取决于你的系统工作负载以及内存的使用方式,你应该以小增量调整此参数以查找最佳值。

删除Swap交换文件

要停用并删除交换文件,请执行以下步骤:

1、通过运行以下命令来停用交换空间:

sudo swapoff -v /swapfile

2、使用文本编辑器打开/etc/fstab文件,并删除交换文件条目/swapfile swap swap defaults 0 0。

3、最后,删除实际的swapfile文件:

sudo rm /swapfile

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等命令,仅供后续参考

发表评论

邮箱地址不会被公开。 必填项已用*标注