zl程序教程

您现在的位置是:首页 >  系统

当前栏目

如何创建 Linux 交换文件

Linux 如何 创建
2023-09-14 09:09:25 时间

提高服务器性能和避免内存不足的推荐方法之一是创建交换空间或交换文件。交换是位于硬盘上的虚拟内存,当内存利用率很高时会扩展 RAM。

当您的系统用完主内存时,Linux 内核会从 RAM 中交换一部分内存并将其写入硬盘。这样,系统可以使用更多 RAM,并且进程可以顺利运行。

在本教程中,我们将学习如何在 Ubuntu 和 CentOS 等 Linux 发行版上创建交换文件。

检查交换配置

在查看了创建交换文件的优点之后,首先确认您的系统上是否配置了交换是很重要的。这将帮助您了解是否配置交换文件。

要检查是否创建了交换空间,请运行以下命令:

$  swapon

该命令将显示交换分区的大小和文件系统标签。这是命令的一些输出。

NAME      TYPE      SIZE   USED PRIO

/dev/sda9 partition 3.8G 383.3M   -2

如果您运行该命令并且没有得到任何输出,则意味着您没有配置交换分区。您可以通过运行以下命令来确认没有交换空间:

$ free -h

这将显示主内存和交换利用率的统计信息。

              total        used        free      shared  buff/cache   available

Mem:           7.6G        5.6G        386M        1.1G        1.7G        675M

Swap:          0B          0B          0G

从输出中,我们可以清楚地看到在“交换”行中,没有打印内存。这是对 Linux 系统上没有活动交换分区的确认。现在让我们为系统创建一个交换文件。

检查硬盘空间

如前所述,交换空间是驻留在硬盘上的虚拟内存,它为 RAM 提供了扩展。考虑到这一点,我们将在硬盘上创建一个交换文件。但在我们这样做之前,检查可用的硬盘空间总是谨慎的。

要检查 Linux 上的可用硬盘空间,请运行以下命令:

$ df -h

在输出中,请注意在“ Mounted on ”列下由单个正斜杠 ( / )表示的根分区。在下面的输出中,根分区被标记为 /dev/sda7 文件系统,并且有 97G 的可用空间,绰绰有余。

Filesystem      Size  Used Avail Use% Mounted on

udev            3.9G     0  3.9G   0% /dev

tmpfs           784M  2.3M  781M   1% /run

/dev/sda7       156G   54G   97G  39% /

tmpfs           3.9G  828M  3.1G  22% /dev/shm

tmpfs           5.0M  4.0K  5.0M   1% /run/lock

tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup

/dev/sda10       29G  5.9G   21G  22% /var

/dev/sda8       1.9G  124M  1.7G   7% /boot

创建交换文件

确定我们的 Linux 系统上有足够的空间后,我们将继续创建交换文件。请记住,交换空间通常是在安装期间创建的。如果交换空间已经存在,那么您就可以开始了。但是,如果您没有交换空间,建议创建一个交换文件。

考虑到这一点,我们将创建一个 1 GB 的交换文件。为此,请发出fallocate命令,如下所示:

$ sudo fallocate -l 1G /swap_file

随意给交换文件取任何你喜欢的名字。在这种情况下,我们将其命名为swap_file。但是,如果 fallocate 实用程序不存在,请执行以下命令:

$ sudo dd if=/dev/zero of=/swap_file bs=1024 count=1048576

接下来,为交换文件设置正确的文件权限,因为只允许 root 读取和写入权限:

$ sudo chmod 600  /swap_file

chmod 600参数仅将读取和写入权限分配给交换文件。

设置交换区

要设置交换区域,请使用mkswap实用程序使用以下命令,如下所示:

$ sudo mkswap / swap_file

要激活交换文件,请运行以下命令:

$ sudo swapon /swap_file

重新启动时保持交换

在 Linux 系统上创建的交换文件不是永久性的,并且不会在重新启动后继续存在。为了使交换文件即使在重新启动时仍然存在,我们需要编辑/etc/fstab文件并附加新创建的交换条目。

使用您喜欢的文本编辑器,打开/etc/fstab 文件。我们使用了 vim 编辑器,如图所示:

$ sudo vim /etc/fstab

接下来粘贴以下内容

/swap_file swap swap defaults 0 0

保存更改并退出 /etc/fstab 文件。要确认已创建交换文件,请运行以下命令:

$ sudo swapon --show

你应该得到与我们相似的输出

NAME       TYPE  SIZE   USED   PRIO

/swap_file file 1024M  346.4M   -2

交换设置

至此,我们已经成功创建了我们的交换文件。我们将考虑交换的另一个属性,那就是交换价值。Swappiness 是指 Linux 内核中确定交换使用频率的属性。

swappiness 值的范围从 0 到 100。低值意味着系统将导致内核尽可能地停止交换。较高的值会产生相反的效果——它使内核尽可能频繁地使用交换。

默认情况下,swappiness 值为 60。您可以通过运行以下命令来确认:

cat /proc/sys/vm/swappiness

虽然这个值看起来不错,但它不是生产服务器的首选。要设置较低的值,例如 20,请运行以下命令。

sudo sysctl vm.swappiness=20

要使此值在重新启动时保持不变,请将以下行添加到 /etc/sysctl.conf 文件

vm.swappiness=20

交换文件与交换分区

Linux 自带两种交换空间,交换分区和交换文件。交换分区是硬盘驱动器的一个独特部分,纯粹用于交换。此处不存在文件。

另一方面,交换文件是与数据和系统文件一起位于文件系统上的唯一文件。

真的需要交换空间吗?多少?

安装 Linux 时最常见的问题是“我需要创建交换吗?”。正如我们之前所讨论的,交换空间的目的是在 RAM 因某种原因或其他原因耗尽时充当缓冲区。当没有更多内存来容纳应用程序时,操作系统会选择某个进程来杀死。这将开始影响系统的性能。

好吧,您可能永远不会完全用完所有这些 RAM。然而,为了安全起见,有一点交换空间是值得的。将交换空间想象成游艇中的安全船。万一游艇着火了,您可以用它安全航行。

所以这里有一个大问题,我需要创建多少交换空间?坦率地说,这个问题没有直接的答案,只有建议。RedHat 的建议是,建议创建占安装在 Linux 系统上的物理 RAM 的 20% 的交换空间。但是,这可能因 RAM 和操作系统的大小而异。

例如,CentOS 推荐以下内容:

  1. 如果 RAM 小于 2GB,则交换空间应该是 RAM 大小的两倍。
  2. 如果 RAM 大于 2GB,则交换空间 = 2 + RAM 大小。例如,如果 RAM 为 4 GB,则交换空间应为 6 GB。

对于 Ubuntu,这略有不同

  1. 如果 RAM 小于 1GB,则交换空间应等于或两倍于 RAM 大小。
  2. 否则,如果 RAM 大于 1GB,则交换空间应等于 RAM 的平方根。

休眠模式下,交换空间是必不可少的,因为它通过将位于 RAM 上的内容传输到交换分区来保留 RAM 的状态。因此,建议您将交换大小设置为等于 RAM 的大小。所以,如果你有 8G 的 RAM,一个 8G 的交换文件就足够了。

结论

我们不能再强调在您的系统上拥有交换空间的必要性。当主内存耗尽时,它会派上用场,并帮助您处理视频编辑软件等繁重的应用程序。无论您的 Linux 系统上的 RAM 容量有多大,始终建议为任何不可预见的事件配置交换。