如何在Ubuntu 16.04上增加Swap分区

       最近在安装一些软件的时候经常出现因为内存不足而崩溃的错误,故查看了Linux Swap分区的介绍,以及如何创建swap分区。内容转自下面两篇优质文章。谢谢这两位作者的整理与无私奉献。读者可直接点击链接了解。

Linux交换空间(swap space)详细介绍

如何在Ubuntu 16.04上增加Swap分区

通过学习上述两篇博客,将Swap分区增加到5G,在catkin_make VINS的时候顺利安装。如下图:

运行:

gnome-system-monitor

 可以在安装软件过程中查看内存使用情况,可直观了解到是否是内存不足引起的问题。(我在安装VINS的时候物理内存加swap内存用到了9.5G,刚刚够。怎么这么耗内存!妈耶)

如何在Ubuntu 16.04上增加Swap分区


以下是第二篇博客内容。

最近想在Ubuntu上边装一个Windows虚拟机玩玩,可是苦于提示没有交换空间,然后怎么办捏,都怪我当时偷懒没有弄交换分区(Swap分区),不过不重要,还可以再弄嘛,下边开始创建Swap分区。

首先来了解一下什么是Swap

Swap分区(也称交换分区)是硬盘上的一个区域,被指定为操作系统可以临时存储数据的地方,这些数据不能再保存在RAM中。 基本上,这使您能够增加服务器在工作“内存”中保留的信息量,但有一些注意事项,主要是当RAM中没有足够的空间容纳正在使用的应用程序数据时,将使用硬盘驱动器上的交换空间。写入磁盘的信息将比保存在RAM中的信息慢得多,但是操作系统更愿意将应用程序数据保存在内存中,并使用交换旧数据。 总的来说,当系统的RAM耗尽时,将交换空间作为回落空间可能是一个很好的安全网,可防止非SSD存储系统出现内存不足的情况。

检查系统的交换信息

在开始之前,我们可以检查系统是否已经有一些可用的交换空间,可能有多个交换文件或交换分区,但通常应该是足够的。我们可以通过如下的命令来查看系统是否有交换分区:

sudo swapon --show

如何在Ubuntu 16.04上增加Swap分区查看是否有交换分区

然后你会发现根本没有提示,那么就是没有交换空间咯,你也可以用free -h来查看一下:

free -h

如何在Ubuntu 16.04上增加Swap分区查看是否有交换分区

然后下边写的0000,全是0哦,那么就没办法咯,就是没有呢。

检查硬盘驱动器分区上的可用空间

为swap分配空间的最常见方式是使用专门用于具体某个任务的单独分, 但是,改变分区方案并不是一定可行的,我们只是可以轻松地创建驻留在现有分区上的交换文件。在开始之前,我们应该通过输入df -h来检查当前磁盘的使用情况:

df -h

如何在Ubuntu 16.04上增加Swap分区查看磁盘使用情况

在这种情况下,/dev下的设备是我们的磁盘。在这个例子中我们有足够的空间(只使用了1.1G),当然,您的使用情况可能会有所不同。尽管对于交换空间的适当大小有许多意见,但这取决于您的个人偏好和应用程序要求。 一般来说,相当于系统内存量的两倍或者两倍以上是一个很好

的起点。 另一个很好的经验是,如果你只是把它用作RAM备用,那么swap分区的大小尽量不要超过4 GB。

创建Swap分区

现在我们知道了可用的硬盘空间,那我们就可以在文件系统中创建一个交换文件,我们将在我们的根(/)目录下创建一个名为swapfile的文件。创建交换文件最好的方法是使用fallocate命令,这个命令能立即创建一个预分配大小的文件。由于本示例中的服务器RAM的大小为8G,因此我们将在本教程中创建一个10GB大小的文件,并适当加以调整,以满足您自己的服务器的需求。

sudo fallocate -l 10G /swapfile

如何在Ubuntu 16.04上增加Swap分区创建交换文件

创建完成之后,我们可以通过这个命令来验证是否保留了正确的交换空间:

ls -lh /swapfile

如何在Ubuntu 16.04上增加Swap分区是否保留了正确的交换文件

这就说明我们的文件已经创建了正确的空间大小。

启用交换文件

现在我们有一个10 GB大小的文件,我们需要把它变成交换空间。首先,我们需要锁定文件的权限,以便只有拥有root权限的用户才能读取文件内容,这可以防止普通用户能够访问该文件,以免造成重大的安全隐患。锁定文件的root权限:

sudo chmod 600 /swapfile

如何在Ubuntu 16.04上增加Swap分区锁定文件的root权限

查看下权限是否设置成功,一般都是没问题的:

ls -lh /swapfile

如何在Ubuntu 16.04上增加Swap分区查看交换文件权限

接下来,我们可以通过以下命令将文件标记为交换空间:

sudo mkswap /swapfile

如何在Ubuntu 16.04上增加Swap分区标记为交换空间

标记文件之后,我们可以启用该交换文件,让我们的系统开始使用它:

sudo swapon /swapfile

如何在Ubuntu 16.04上增加Swap分区启用交换文件

可以通过以下命令验证交换空间是否可用:

sudo swapon --show

如何在Ubuntu 16.04上增加Swap分区查看交换空间

这时,我们可以通过free再次查看我们的设置:

free -h

如何在Ubuntu 16.04上增加Swap分区查看交换空间

可以看到swap分区已成功创建,大小为10.0 G,操作系统将在必要时使用。

永久保留交换文件

我们最近的更改启用了当前会话的swap文件,但是,如果我们重新启动,服务器不会自动保留swap设置,我们可以通过将swap文件添加到/etc/fstab文件中来改变这一点。备份/etc/fstab文件以防出错(提示:玩Linux因为只要权限够什么都能动,所以修改之前最好备份一下,以防止万一):

sudo cp /etc/fstab /etc/fstab.bak

如何在Ubuntu 16.04上增加Swap分区备份fstab文件

将swap文件信息添加到/etc/fstab文件的末尾:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

如何在Ubuntu 16.04上增加Swap分区添加交换文件信息

这样就保留了swap文件。