在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教程。