如何在Rocky Linux 9上增加交换空间

引言

提防应用程序的内存不足错误的一种方法是为服务器增加一些交换空间。在本指南中,我们将介绍如何向Rocky Linux 9服务器添加交换文件。

什么是交换?

交换空间是硬盘存储的一部分,用于临时存储操作系统无法在RAM中继续存储的数据。这样可以增加服务器在工作内存中保存的信息量,但有一些限制条件。当RAM中没有足够的空间来存储正在使用的应用程序数据时,硬盘上的交换空间主要用于存储。

将信息写入磁盘的速度比保留在RAM中的信息要慢得多,但操作系统更倾向于将应用程序数据保留在内存中,并使用交换空间来存储较旧的数据。总体而言,在系统的RAM耗尽时,拥有交换空间作为备用可以有效地防止发生内存不足异常,尤其是在可用非固态硬盘存储的系统上。

步骤一 – 检查系统的交换信息

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

我们可以通过输入命令来查看系统是否配置了交换分区。

  1. sudo swapon –show

 

如果您没有收到任何输出,这意味着您的系统当前没有可用的交换空间。

你可以使用免费的工具来验证是否存在活跃的交换文件。

  1. free -h

 

Output

total used free shared buff/cache available Mem: 1.7Gi 173Mi 1.2Gi 9.0Mi 336Mi 1.4Gi Swap: 0B 0B 0B

正如您在输出的Swap行中所看到的,系统上没有正在运行的交换。

步骤2-检查硬盘分区上的可用空间

在我们创建交换文件之前,我们将检查当前的磁盘使用情况,以确保我们有足够的空间。输入以下命令来执行此操作:

  1. df -h

 

Output

Filesystem Size Used Avail Use% Mounted on devtmpfs 855M 0 855M 0% /dev tmpfs 888M 0 888M 0% /dev/shm tmpfs 355M 9.4M 346M 3% /run /dev/vda1 59G 1.4G 58G 3% / /dev/vda2 994M 155M 840M 16% /boot /dev/vda15 100M 7.0M 93M 7% /boot/efi tmpfs 178M 0 178M 0% /run/user/0

在“安装于”栏中标注的设备是我们这里的磁盘。在这个例子中,我们有足够的可用空间(只使用了1.4G)。你的使用情况可能会有所不同。

虽然对于适当的交换空间大小有许多不同的意见,但这实际上取决于个人的喜好和应用需求。一般来说,与您系统上的内存量相等或两倍于内存量的交换空间是一个不错的起点。另一个好的经验法则是,如果您只将其作为内存备用使用,超过4G的交换空间可能是不必要的。

第三步-创建交换文件

现在我们知道了可用的硬盘空间,我们可以在文件系统上创建一个交换文件。我们将在根目录(/)下分配一个我们想要的大小的文件,命名为swapfile。

创建交换文件的最佳方式是使用fallocate程序。这个命令会立即创建指定大小的文件。

由于我们示例中的服务器有2G的内存,所以在本指南中我们将创建一个2G的文件。根据您自己服务器的需要进行调整。

  1. sudo fallocate -l 1G /swapfile

 

我们可以通过输入来验证正确的空间量是否已经被保留。

  1. ls -lh /swapfile

 

  1. -rw-r–r–. 1 root root 2.0G Sep 13 17:52 /swapfile

 

我们的文件已经创建,并已设置正确的空间。

第四步- 启用交换文件。

现在我们有一个正确大小的文件可用,我们需要将其转换为交换空间。

首先,我们需要锁定文件的权限,以便只有具有管理员权限的用户才能读取其内容。这可以防止普通用户能够访问该文件,这将带来重大的安全影响。

通过输入以下命令,将文件的访问权限限制只给root用户。

  1. sudo chmod 600 /swapfile

 

通过输入验证权限是否更改

  1. ls -lh /swapfile

 

Output

-rw——- 1 root root 2.0G Sep 13 17:52 /swapfile

正如您所看到的,只有超级用户拥有读取和写入权限标志。

我们现在可以通过键入的方式将文件标记为交换空间。

  1. sudo mkswap /swapfile

 

Output

Setting up swapspace version 1, size = 2 GiB (2147479552 bytes) no label, UUID=585e8b33-30fa-481f-af61-37b13326545b

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

  1. sudo swapon /swapfile

 

通过输入来验证交换是否可用。

  1. sudo swapon –show

 

Output

NAME TYPE SIZE USED PRIO /swapfile file 2G 0B -2

我们可以再次检查免费工具的输出来证实我们的发现。

  1. free -h

 

Output

total used free shared buff/cache available Mem: 1.7Gi 172Mi 1.2Gi 9.0Mi 338Mi 1.4Gi Swap: 2.0Gi 0B 2.0Gi

我们的交换已成功设置,我们的操作系统将根据需要开始使用它。

第五步 – 将交换文件设为永久性

我们最近的更改已经在当前会话中启用了交换文件。然而,如果我们重新启动,服务器不会自动保留交换设置。我们可以通过将交换文件添加到我们的 /etc/fstab 文件来解决这个问题。

如果出现任何问题,请备份/etc/fstab文件。

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

 

通过键入将交换文件信息添加到/etc/fstab文件的末尾。

  1. echo ‘/swapfile none swap sw 0 0’ | sudo tee -a /etc/fstab

 

接下来,我们将审查一些可以更新的设置,以调整我们的交换空间。

第6步 – 调整您的交换设置

在处理交换时,有几个选项可以配置,会对系统的性能产生影响。

调整Swappiness属性

swappiness参数配置了系统将数据从内存交换到交换空间的频率。这是一个介于0和100之间表示百分比的值。

当内核的值接近零时,只有在非常必要的情况下才会将数据交换到磁盘上。请记住,与交换文件的互动是“昂贵的”,因为它们比与RAM的互动花费更长的时间,并且可能导致性能显著降低。告诉系统不要过多依赖交换文件通常会让您的系统更快。

值接近100的话会更倾向于将更多的数据放入交换空间,以保持更多的内存空间空闲。根据您的应用程序的内存配置文件或您使用服务器的目的,这在某些情况下可能更好。

我们可以通过键入来查看当前的swappiness值。

  1. cat /proc/sys/vm/swappiness

 

Output

60

对于桌面电脑而言,将swappiness设置为60并不是一个坏的值。对于服务器来说,你可能希望把它调低到0附近。

我们可以使用sysctl命令将swappiness设置为不同的值。

例如,我们可以将swappiness设置为10,输入命令即可:

  1. sudo sysctl vm.swappiness=10

 

Output

vm.swappiness = 10

这个设置将一直保持到下次重启。我们可以通过将该行添加到我们的/etc/sysctl.conf文件中,在重新启动时自动设置这个值。

Rocky Linux 9自带的默认文本编辑器是vi。vi是一款非常强大的文本编辑器,但对于缺乏经验的用户来说可能有些晦涩难懂。您可能希望安装一个更易于使用的编辑器,比如nano,来方便编辑Rocky Linux 9服务器上的配置文件。

  1. sudo dnf install nano

 

现在你可以使用nano编辑sysctl.conf文件。

  1. sudo nano /etc/sysctl.conf

 

底部可添加:

/etc/sysctl.conf 的中文翻译为:/etc/sysctl.conf。
vm.swappiness=10

当你完成时,请保存并关闭文件。如果你使用nano,你可以通过按下CTRL + X保存并退出,然后在提示时按Y,然后按Enter。

调整缓存压力设置

你可能想要调整的另一个相关值是vfs_cache_pressure。此设置配置系统在其他数据之上选择缓存索引节点和目录项信息的程度。

这是关于文件系统的访问数据。查找这些数据通常非常昂贵且频繁请求,因此将其缓存是系统的一个很好的选择。您可以通过再次查询proc文件系统来查看当前的值。

  1. cat /proc/sys/vm/vfs_cache_pressure

 

Output

100

目前,我们的系统配置使得inode信息从缓存中被移除得太快。我们可以通过输入以下命令将其设置为更加保守的值,例如50。

  1. sudo sysctl vm.vfs_cache_pressure=50

 

Output

vm.vfs_cache_pressure = 50

再次强调,这仅适用于我们当前的会话。我们可以像我们之前设定swappiness设置一样,将其加入配置文件中进行更改。

  1. sudo nano /etc/sysctl.conf

 

在底部添加指定您的新值的行。

/etc/sysctl.conf 翻译成中文可以是:系统控制参数配置文件
vm.vfs_cache_pressure=50

在完成后保存并关闭文件。

结论

按照这个指南的步骤操作,可以在本应导致内存溢出异常的情况下给您一些缓冲空间。交换空间对于避免这些常见问题非常有用。

如果你遇到了内存溢出错误,或者发现你的系统无法使用所需的应用程序,最好的解决方案是优化你的应用程序配置或升级你的服务器。

发表回复 0

Your email address will not be published. Required fields are marked *


广告
将在 10 秒后关闭
bannerAds