如何创建Linux交换文件

时间:2020-03-05 15:27:14  来源:igfitidea点击:

推动服务器性能和避免内存不足的推荐方式之一是通过创建交换空间或者交换文件。
Swap是位于硬盘上的虚拟内存,并在内存利用率高时扩展内存。

当系统流出主内存时,Linux内核从内存递送一部分内存并将其写入硬盘上。
这样,系统可以使用更多内存,并且流程可以顺利运行。

在本教程中,我们了解如何在Linux发行版(如Ubuntu和CentOS)上创建交换文件。

检查Swap已配置

查看了创建交换文件的优势,首先在系统上配置交换时首先要确认是否有重要意义。
这将有助于我们了解是否配置交换文件。

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

$ 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系统上的活动交换分区。
我们现在为系统创建交换文件。

检查硬盘空间

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

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

$df -h

在输出中,在"安装在"列中的单个前向斜杠(/)下表示的根分区的Lookout。
在下面的输出中,根分区标记为/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系统上确定了我们有足够的空间,我们将继续创建交换文件。
请记住,通常在安装期间创建交换空间。
如果Swap Space已经存在,那么你很高兴。
但是,如果我们没有交换空间,建议创建交换文件。

考虑到这一点,我们将创建1 GB的交换文件。
要实现此目的,请按照显示的返回命令发出:

$sudo fallocate -l 1G /swap_file

随意为交换文件提供任何我们喜欢的名字。
在这种情况下,我们已将其命名为swap_file。
但是,如果尚未存在划败实用程序,请执行以下命令:

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

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

$sudo chmod 600  /swap_file

Chmod 600参数仅将读写权限分配给交换文件。

设置交换区域

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

$sudo mkswap /swap_file

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

$sudo swapon /swap_file

在重新启动时使交换持久

在Linux系统上创建的交换文件不是永久性的,不会在重新启动中生存。
要使Swap文件持久性仍然在重新启动时,我们需要编辑/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

交换设置

此时,我们已成功创建了Swap文件。
我们将考虑一个交换的一个属性,这是一个swappiness价值。
swapping是指Linux内核中的属性,用于确定交换使用的频率。

SWAPPINITE值范围为0到100.低值意味着系统将导致内核尽可能地断开交换。
更高的值具有相反的效果,它使内核尽可能频繁地使用交换。

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

cat /proc/sys/vm/swappiness

虽然此值似乎可以确定,但对于生产服务器来说是不是首选。
要设置较低的值,请参考20,运行以下命令。

sudo sysctl vm.swappiness=20

对于在重新启动时保持持久性的值,将以下行添加到/etc/sysctl.conf文件中

vm.swappiness=20

交换文件与交换分区

Linux配备了2种交换空间,交换分区和交换文件。

交换分区是硬盘驱动器的独特部分,纯粹用于交换。
这里没有文件。

另一方面,交换文件是一个唯一的文件,符合数据和系统文件的文件系统。

Swap Space真的需要吗?多少?

安装Linux时的非常常见的问题是'我需要创建交换吗?
'。
正如我们之前所讨论的那样,当内存为一个原因或者另一个原因被耗尽时,交换空间旨在充当缓冲区。
当没有更多内存来容纳应用程序时,操作系统选择某种过程才能杀死。
这将开始影响系统的性能。

好吧,可能的机会是你可能永远不会完全使用所有的公羊。
然而,在安全方面,值得有一个互换空间。
将交换空间视为在游艇中的安全船。
在游艇捕捉到火灾的不太可能的情况下,我们可以使用它来航行到安全。

所以这是大问题,我需要创造多少交换空间?
要坦诚,对这个问题没有直接的答案,只是建议。
Redhat的建议建议创建了Linux系统上安装的20%的交换空间。

但是,这可以根据内存和操作系统的大小而有所不同。

例如,CentOS建议使用以下内容:

  • 如果内存小于2GB,则交换空间应为内存的大小的两倍。
  • 如果内存超过2GB,则交换空间= 2 + 内存大小。例如,如果内存为4 GB,则交换空间应为6 GB。

对于Ubuntu,这略有不同

  • 如果内存小于1GB,则交换空间应等于或者ram大小。
  • 否则,如果内存超过1GB,则交换空间应等于内存的平方根。

在休眠模式中,交换空间对于它通过将位于内存上的内容传送到交换分区来保留内存的状态至关重要。
因此,建议我们将交换大小设置为等于内存的大小。
因此,如果我们有8G的内存,则8G的交换文件就足够了。