如何在 Ubuntu Linux 上添加和配置交换空间

SWAP 是一个分区或磁盘空间,可以为 RAM 承担一些负载,并且可以用作 Ubuntu 系统上的内存空间。 通常,在安装新的基于 Linux 的操作系统时,它会为您提供创建新的 SWAP 分区。 文件分区有一个SWAP标志,通常一个SWAP空间的大小平均为2GB。 当系统内存已满时,Linux 内核会自动将一些未使用的文件移动到 SWAP 区域,而不是停止它们。 众所周知,在 Linux 中,一切都是文件,SWAP 可以很好地处理文件。 因此,如果您在虚拟机上使用 Ubuntu 系统,您绝对应该尝试在您的机器上添加 SWAP 空间。

Ubuntu Linux 中的交换空间

您可能会问,我应该为 SWAP 空间使用多少存储空间? 由于 SWAP 可以承担额外的 RAM 负载,我可以根据需要分配尽可能多的 SWAP 吗? 好吧,这是标准公式。 如果您的机器上有超过 2GB 的物理 RAM,建议您使用 SWAP。

如果您有更多的物理内存,您也可以使用 SWP。 您应该使用的 SWAP 数量取决于您拥有多少实际 RAM。 请按照下表了解 RAM-SWAP 比率。 在这篇文章中,我们将看到如何在 Ubuntu 系统中添加一个 SWAP 空间。

内存大小交换大小(无休眠) 交换大小(休眠)
256MB 256MB 512MB
512MB 512MB 1GB
1GB 1GB 2GB
2GB 1GB 3GB
3GB 2GB 5GB
4GB 2GB 6GB
6GB 2GB 8GB
8GB 3GB 11GB
12GB 3GB 15GB
16 GB 4GB 20GB
24GB 5GB 29GB
32GB 6GB 38GB
64GB 8GB 72GB
128GB 11GB 139GB

第 1 步:检查 Ubuntu 上的当前系统交换空间

在您开始在基于 Ubuntu 和 Debian 的系统上创建新的 SWAP 空间之前,请确保系统上没有现有的 SWAP 空间。 您可以使用下面给出的任何以下命令来检查 Ubuntu 机器上的 SWAP 空间。

sudo swapon -s
sudo swapon --show

在终端 shell 中,您可以看到 SWAP 被称为“文件类型”,因为在 Linux 中,一切都是文件。

第 2 步:在 Ubuntu 上创建交换文件

在此步骤中,我们将使用 allocate 命令分配特定空间作为 SWAP 文件。 在下面提到的命令中,allocate 命令分配了 4 GB 的空间作为 SWAP 空间。 当命令完成文件创建后,请运行下一个更改模式命令,以允许 SWAP 文件读写权限。

sudo fallocate -l 4G /swapfile
chmod 600 /swapfile

如果您在使用 allocate 命令时遇到任何问题,请尝试以下命令来腾出 SWAP 空间。

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

现在,通过在具有 root 访问权限的终端 shell 上运行以下命令,使 SWAP 文件可执行并在您的 Ubuntu 系统上启用它。

sudo mkswap /swapfile
sudo swapon /swapfile

第 3 步:配置脚本并分配交换

在您的 Ubuntu 系统上创建 SWAP 空间后,您可以编辑配置以设置 SWAP 参数。 为了 example,使用以下命令以 root 访问权限,编辑 SWAP 分区,并查看 UUID。

sudo nano /etc/fstab

现在,当配置脚本打开时,在脚本中添加以下行,保存并退出文件。 该行表示挂载点、文件类型。

/swapfile none swap sw 0 0

现在,运行以下命令来编辑内核级脚本,以在您的机器上启用 SWAP 空间。

sudo nano /etc/sysctl.conf

当脚本打开时,在脚本中添加以下行,然后保存并退出它。 您可以根据紧急情况更改该值。

vm.swappiness=10

现在运行以下系统控制命令重新加载 SWAP 空间并查看对您机器的影响。

sudo sysctl -p

交换内核级编辑

您现在可以运行下面给出的 swapon 命令来检查 SWAP 空间是否在您的 Ubuntu 系统上被激活。

sudo swapon --show

第 4 步:在 Ubuntu 中调整 SWAP 的大小

如果您需要在 SWAP 磁盘中添加更多空间,您可以通过在其中添加更多磁盘空间来实现。 要在 Ubuntu 机器上调整 SWAP 空间的大小,您需要关闭 SWAP 空间,然后重新分配所需的空间。 您可以在具有 root 访问权限的 shell 上运行以下命令行来实现这一点。

sudo swapoff /swapfile 
sudo fallocate -l 2G /swapfile

调整大小完成后,将空间标记为 SWAP 并在系统上启用该文件。 运行以下命令来标记和启用 SWAP 空间。

sudo mkswap /swapfile 
sudo swapon /swapfile

第 5 步:在 Ubuntu Linux 上删除 SWAP

有时,当您有一台多引导计算机时,您可能需要在系统上为每个操作系统分配 SWAP 空间。 以下过程将允许您清空 Ubuntu 机器上的 SWAP 空间。 首先,运行以下 nano 命令来编辑 swap2ram 脚本以对其进行编辑。 当它打开时,添加下面给出的脚本,然后保存并退出文件。

sudo nano /usr/local/sbin/swap2ram.sh

然后,将以下行添加到脚本中,然后保存并退出文件以停用 SWAP 文件。

#!/bin/sh

mem=$(LC_ALL=C free | awk '/Mem:/ {print $4}')
swap=$(LC_ALL=C free | awk '/Swap:/ {print $3}')

if [ $mem -lt $swap ]; then
echo "ERROR: not enough RAM to write swap back, nothing done" >&2
exit 1
fi
swapoff -a &&
swapon -a

从 Ubuntu 中删除交换

如果您在编辑脚本和运行命令时遇到任何问题,请运行更改模式命令来执行文件。

sudo chmod +x /usr/local/sbin/swap2ram.sh
sudo /usr/local/sbin/swap2ram.sh

您还可以通过在终端 shell 上运行以下 rm 命令来关闭 SWAP 并将其删除。

sudo swapoff -v /swapfile
sudo rm /swapfile

您可能面临的问题

如果您使用的是旧硬件或操作系统,您可能会遇到一些问题。 为了 example,您可能需要更改 swappiness 值以让您的 Ubuntu 内核知道您希望机器在创建 SWAP 空间后多久使用一次 SWAP 空间。

如果您无法更改 Ubuntu 系统上的 swappiness 值,请尝试使用以下命令行在脚本中添加您的自定义行。 这里,60是内存分页(swappiness)值,你可以根据你的配置来改变它。

cd /etc/sysctl.d/
sudo touch 60-my-swappiness.conf

然后在记事本/编辑器上运行 SWAP 配置脚本来更改 vm.swappiness = 60 价值。

sudo nano 60-my-swappiness.conf

最后的话

毫无疑问,SWAP 可以加速您的系统,而在 Linux 中进行交换确实可以避免您的计算机因 RAM 空间不足而崩溃。 但在您的系统上创建 SWAP 空间之前,请确保您确实需要 SWAP 空间。

并且建议在安装操作系统时通过安装向导添加交换空间。 在整篇文章中,我已经描述了 SWAP 的概念、您可能需要多少次交换以及在 Ubuntu 系统上添加 SWAP 空间的过程。

如果您觉得这篇文章有用且技术性强,请与您的朋友和 Linux 社区分享。 您也可以在评论部分写下您对这篇文章的看法。