在Cloud Linux服务器上创建交换文件以防止内存不足

当Linux服务器的内存不足时,某些程序(例如MariaDB / MySQL)将自动关闭。 为了防止内存不足(OOM)问题,我们可以创建交换分区或交换文件以扩展内存。 在本教程中,我们将研究如何在内存较小的Linux服务器上创建交换文件。

首先,让我解释一些背景信息。

交换空间

在台式计算机或服务器上安装Linux时,要考虑的因素之一是要使用多少交换空间。 交换空间是一种虚拟内存。 Linux将RAM分成页面。 当物理RAM开始填满时,Linux可以将RAM中的某些页面换出到磁盘上的交换空间。 要计算系统有多少虚拟内存,只需添加物理RAM和交换空间即可。

Linux中的交换空间可以是交换分区,交换文件或它们的组合。 在Windows中,它只是存储在C驱动器中的页面文件。 通常,Linux安装程序(例如Ubuntu Ubiquity和CentOS Anaconda)会在安装系统时尝试设置交换分区。

要检查Linux系统的交换空间,请使用 swapon --show 命令。 您可能需要使用 sudo

swapon --show

我们可以获得以下信息。

  • 我们的Linux系统中有多少个交换分区或交换文件
  • 每个交换设备的大小
  • 正在使用多少交换空间
  • 每个交换设备的优先级

优先级控制首先使用哪个交换设备。 在交换编号较小的设备之前,先使用编号较大的交换设备。

创建交换文件

在云Linux服务器上,根文件系统可能只有一个分区。 在这种情况下,您将无法创建另一个分区并将其格式化为交换分区。 相反,我们可以在根文件系统中创建交换文件。

首先,我们使用 fallocate 命令创建文件。 例如,创建一个名为 swapfile 在根文件系统中具有512M容量:

sudo fallocate -l 512M /swapfile

要创建1G文件:

sudo fallocate -l 1G /swapfile

然后确保只有root可以读取和写入它。

sudo chmod 600 /swapfile

格式化以交换:

sudo mkswap /swapfile

输出:

Setting up swapspace version 1, size = 524284 KiB
no label, UUID=h32b3e10-0779-4865-9ea0-6e2af8f3kea9

启用交换文件

sudo swapon /swapfile

现在您可以看到它已启用 swapon --show 命令。

[email protected]:~$ sudo swapon --show
NAME      TYPE  SIZE  USED  PRIO
/swapfile file  512M  132K  -1

要使Linux在启动时自动挂载此交换文件,请将此行添加到 /etc/fstab 文件。

/swapfile  none  swap  defaults  0  0

交换文件

请注意,您需要使用Tab键分隔每列。

如何在Debian和Ubuntu上禁用交换文件

交换空间会使您的服务器速度变慢,并且会使服务器上的SSD磨损的速度比您想象的要快得多。 如果您需要更好的性能,则最好升级物理RAM,然后禁用交换空间。 要禁用交换文件,请运行以下命令。

sudo dphys-swapfile swapoff

上面的命令将把交换文件中的所有内容取回物理RAM,然后禁用交换文件。 现在,您可以删除交换文件以回收磁盘空间。

sudo dphys-swapfile uninstall

总是欢迎提出意见,问题或建议。 如果您认为这篇文章很有用,? 请在社交媒体上与您的朋友分享! 请继续关注更多Linux教程。

Sidebar