如何在 Linux Ubuntu 上增加交换空间?


在本文中,我们将学习如何增加交换空间,这将解决应用程序中的内存错误。这将涵盖如何在 Ubuntu Linux 中添加交换文件。

无论如何,建议将旋转硬盘驱动器用于交换,因为固态硬盘随着时间的推移可能会导致硬件退化问题。由于这个原因,不要在提供固态硬盘存储的云环境中启用交换。

什么是交换文件?

交换空间是操作系统可以存储临时数据的地方,因为 RAM 无法再容纳这些数据。基本上,这将增加服务器在工作内存中可以容纳的数据量的能力。硬盘驱动器上的交换空间主要在 RAM 中有足够空间容纳数据时使用。

写入磁盘的数据比 RAM 慢,但操作系统会优先将正在运行的应用程序和数据保存在内存中,并将旧数据保存在交换空间中。

检查系统以获取交换信息

我们首先检查系统中已经存在的交换空间。我们可以有多个交换文件或分区。

请注意,我们可以使用以下命令查看系统中可用的交换空间:

# sudo swapon --show
[sudo] password for ubuntu:
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 1020M 0B -1

或者我们可以使用 free **-h** 命令来显示交换空间。

$ free -h
total    used    free    shared    buffers    cached
Mem:     975M    254M    720M       4.8M       12M    133M
-/+ buffers/cache: 109M 866M
Swap:    1.0G    0B      1.0G

我们可以在机器输出中看到交换行。在这台机器上,我们分配了 1.0G 的交换空间。

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

在 Linux 上分配交换空间最常见的方法是使用为交换分配的单独分区。我们无法更改分区方案(这是不可能的),但我们可以轻松创建驻留在现有分区上的交换文件。

在执行此操作之前,我们将使用以下命令检查当前磁盘空间。

$ df -h
Filesystem    Size    Used    Avail    Use%    Mounted on
udev          473M       0    473M       0%     /dev
tmpfs          98M    4.9M     93M       5%     /run
/dev/dm-0      19G    3.1G     15G       18%    /
tmpfs         488M       0    488M       0%     /dev/shm
tmpfs         5.0M       0    5.0M       0%     /run/lock
tmpfs         488M       0    488M       0%     /sys/fs/cgroup
/dev/sda1     236M     51M    173M       23%    /boot
tmpfs          98M       0     98M       0%     /run/user/1000

** /dev ** 下的设备是硬盘驱动器,这里我们有 15G 的可用空间。

通常,建议将机器上 RAM 的数量或两倍数量作为良好的起始值。

创建交换文件

由于我们知道可用的硬盘空间,因此我们可以通过在文件系统中创建交换文件来继续。另外,请注意,我们称为“swapfile”的交换大小的文件位于我们的根分区 / 目录中。

创建交换文件的最佳方法是使用名为“fallocate”的程序,此命令将立即创建预分配大小的文件。

由于我们的机器分配了 1GB 的 RAM,因此我们将创建 2GB 的文件以满足 Linux 的最低要求。

$ sudo fallocate -l 2G /swapfile

我们可以使用以下命令进行验证。

$ ls -lh /swapfile
-rw-r--r-- 1 root root 2.0G May 16 12:52 /swapfile

启用交换文件

我们已经创建了所需大小的交换文件,但需要在此交换空间中将其打开。在打开交换文件之前,我们需要将文件的权限锁定为仅限 root 用户权限,这些用户可以读取文件内容,从而防止普通用户访问该文件。

我们可以使用以下命令执行此操作

$ sudo chmod 600 /swapfile

要验证权限,我们可以使用以下命令查看

$ ls -lh /swapfile
-rw------- 1 root root 2.0G May 16 12:52 /swapfile

我们可以使用以下命令打开“swapfile”以用作交换空间

$ sudo mkswap /swapfile
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=049218ad-50b4-4c78-98e4-7a1ea21ca77e

我们必须验证交换空间是否可用以及分配的空间大小。为此,我们可以使用以下命令:

$ sudo swapon --show
NAME       TYPE       SIZE    USED    PRIO
/dev/dm-1 partition   3068M    0B       -1

或者使用以下命令:

$ free -h
total    used    free    shared    buffers    cached
Mem:     975M    255M    720M       4.8M       12M    133M
-/+ buffers/cache: 108M 867M
Swap:    3.0G    0B    3.0G

使交换文件永久化

由于我们在当前会话中更改了交换文件,因此我们还需要重新引导服务器,这样才能将交换设置保留为永久设置。此外,我们可以自动将此交换文件设置添加到“/etc/fstab”文件中。

$ sudo vi /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/server--vg-root / ext4 errors=remount-ro 0 1
# /boot was on /dev/sda1 during installation
UUID=40f8b7fe-3195-414a-a0e4-a4443cceb78c /boot ext2 defaults 0 2
/dev/mapper/server--vg-swap_1 none swap sw 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0
/swapfile none swap sw 0 0

我们可以使用以上步骤使用交换文件来增加交换空间,从而解决与内存异常相关的问题。如果我们在任何 Linux 服务器上内存不足,那么以上内容将特别有用。

更新于:2020 年 1 月 27 日

4K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告