如何在linux上创建交换文件

为Linux计算机添加交换空间,或者增加已经存在的交换空间,而不必乱搞分区。我们将向您展示定制交换空间的简单方法。...

为Linux计算机添加交换空间,或者增加已经存在的交换空间,而不必乱搞分区。我们将向您展示定制交换空间的简单方法。

交换文件与交换分区

有几种情况下,您可能希望增加现有的交换空间或向Linux计算机添加新的交换空间。

  • 可能您的交换空间经常处于最大值或接近最大值。
  • 在安装过程中很容易单击错误的选项,并在无意中拒绝向系统添加swap。
  • 也许你以前决定你有这么多的随机存取内存(RAM),你不需要任何交换,你改变主意了。
  • 有时您继承了一个没有交换的系统的管理,原因是您永远无法发现。

解决所有这些问题的简单方法是在计算机中添加一个交换文件。这是一个特殊文件,预先分配并保留用作交换空间。交换文件将与您可能有的任何现有交换(无论是交换文件还是交换分区)一起工作。

与交换分区相比,使用交换文件的性能一度受到影响。在Linux操作系统中,机械(旋转)硬盘性能的提高和交换功能的更高效不再是这种情况。事实上,一些Linux发行版现在默认创建交换文件,而不是交换分区。

交换不仅仅是在内存不足时释放RAM的一种方法。这是一个运转良好的系统的重要组成部分。没有任何交换,内核很难实现合理的内存管理。让我们看看添加一些交换空间的简单方法。

在我们潜入之前:btrfs和ssd

有两点我们想尽快讨论。

Btrfs文件系统对交换文件有一些警告。曾经有一段时间,Btrfs的copy-on-write特性存在冲突,Btrfs希望以一种方式操作,而交换文件则需要以另一种方式操作。交换文件所依赖的一些函数没有实现,并且交换文件中关于块编号的一些假设在Btrfs中不成立。所以不支持交换文件。

从kernel 5.0开始,如果Btrfs文件系统中的交换文件设置有以下要求,则可以在其中进行交换:

  • 无写时拷贝(NOCOW)文件。
  • 它们没有压缩。
  • 它们不会跨在不同的硬盘上。

大多数读者将使用默认的ext4文件系统,所以这对他们来说不是什么问题。

相关:您应该使用哪个Linux文件系统?

当固态驱动器(SSD)首次出现时,人们担心在文件系统写入频繁的情况下使用它们。人们被警告不要在ssd上放置交换空间,甚至要避免系统登录ssd。

如今,这一点已经不那么令人担心了,许多在售的SSD的预期使用寿命将超过大多数PC机。SSD上的交换文件将比机械硬盘上的交换分区具有更好的性能。

相关报道:固态硬盘到底能使用多久?

检查现有交换空间

三思而后行。让我们检查一下您的计算机上有哪些交换空间。你可以用两种方法,我们都用。free命令将显示已使用和可用内存。当-h(人类可读)选项显示内存值时,它将使其可以自由使用感测单元。

free -h

如何在linux上创建交换文件

free的输出显示此计算机上没有配置交换空间。

在没有内存和空闲内存的情况下,永远不会讨论交换。因此,值得注意的是,空闲内存为237MB。不要把它误认为是可用内存的总和。该值由“可用”数字提供,即881 MB。

Linux为自己的目的使用免费RAM,比如文件缓存和内核缓冲区。专用于此的RAM量是“buff/cache”数字,即871 MB。但是这个内存仍然被视为“可用”内存,“buf/cache”内存的内容可以被立即丢弃,并被任何需要一些内存的应用程序使用。

检查交换空间是否可用的另一种方法是使用swapon命令。--show选项不会对计算机上的交换进行任何更改。它只提供统计数据。

swapon --show

如何在linux上创建交换文件

如果此命令没有输出,则未配置交换。

如果这些命令显示已经配置了一些交换空间,那么在决定要创建的交换文件的大小时,应该考虑现有交换空间的大小。

我需要多少交换空间?

传统的回答是“两倍于你拥有的内存量”,但这是在计算机的内存非常有限的时候产生的。随着RAM的价格越来越便宜,程序和游戏对内存的要求也越来越高,PC的规格也相应地进行了调整。如今,拥有32gb内存的家用电脑并不少见。如果你有32 GB的RAM,你就不会分配64 GB的硬盘空间来交换空间。那显然太过分了。

你所需要的交换量是一个煽动性的话题,类似于“哪个是最好的编辑器”。我们在Ubuntu交换FAQ中看到的关于这个话题的最明智的讨论之一。这是一种简短而常识性的方法(尽管,和许多人一样,他们误解了交换在Linux上的工作原理)。这里有一个方便的表格,显示了建议的交换空间量,包括系统内存量,以及是否休眠计算机。

好消息是,你选择什么价值并不重要。我们总是可以删除一个交换文件,并用一个更大的或更小的文件替换它。或者你可以添加另一个交换文件。

从表中选择交换文件大小,并运行一段时间。监视系统对交换空间的使用情况。如果需要微调,则很容易进行更改。对于交换文件,这是一个两分钟的工作。将其与在实时Linux计算机上调整分区进行比较。

相关:Linux上的交换性是什么?(以及如何更改)

创建交换文件

您不应该使用fallocate命令来创建交换文件。这来自swapon的手册页:

The swap file implementation in the kernel expects to be able to write to the file directly, without the assistance of the file system. This is a problem on files with holes or on copy-on-write files on file systems like Btrfs. Commands like cp(1) or truncate(1) create files with holes. These files will be rejected by swapon. Preallocated files created by fallocate(1) may be interpreted as files with holes too depending of the filesystem. Preallocated swap files are supported on XFS since Linux 4.18. The most portable solution to create a swap file is to use dd(1) and /dev/zero.

因此,虽然fallocate更快,但我们将使用dd创建交换文件。用于本文研究的机器有2GB的RAM。我们将创建一个1GB交换文件。

选项包括:

  • if:输入文件。在本例中,我们使用/dev/zero,它将提供一个零字节的流。
  • of:输出文件。我们将在根目录中创建一个名为swapfile的文件。
  • 以字节为单位的块大小。指定一次从输入文件读取和写入输出文件的字节数。
  • 计数:读取和写入的块数。将这个数字乘以bs值得到文件大小。
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

如何在linux上创建交换文件

创建文件时会提供一些统计信息。

如何在linux上创建交换文件

我们可以看到写入文件的块(记录)的数量、文件的大小、创建文件所用的时间以及有效的数据传输速率。

使用ls命令在根目录中查看文件:

ls /

如何在linux上创建交换文件

准备交换文件

我们需要先用mkswap命令准备交换文件,然后才能使用它。除了文件的路径和名称之外,我们不需要为mkswap提供任何参数:

sudo mkswap /swapfile

如何在linux上创建交换文件

该文件准备用作交换文件。请注意有关文件权限的警告。我们需要更改这些设置,以便根用户是唯一可以读写交换文件的用户。

使用交换文件

默认权限太自由,我们需要限制它们,以便只有root用户可以使用交换文件。使用chmod更改文件权限:

sudo chmod 600 /swapfile

如何在linux上创建交换文件

这将删除文件组成员和其他成员的所有权限,但允许文件所有者root对文件进行读写。

相关:如何在Linux上使用chmod命令

我们需要使用swapon命令让Linux知道有一个新的交换文件可供使用。我们只需要提供路径和文件名:

sudo swapon /swapfile

如何在linux上创建交换文件

交换文件现在处于活动状态。

将交换文件添加到fstab

要确保重新启动后交换文件可用,请将其添加到/etc/fstab文件中。您可以使用任何您喜欢的文本编辑器,但我们将展示使用图形Gedit文本编辑器的过程。

sudo gedit /etc/fstab

如何在linux上创建交换文件

我们需要添加到文件底部的行是:

/swapfile none swap sw 0 0

如何在linux上创建交换文件

字段包括:

  • 文件系统:交换文件的路径和名称。
  • 装入点:文件不像文件系统那样装入,因此条目为“无”
  • 类型:这是“交换”
  • 选项:在启动时swapon-a(启动所有标记为swap的设备)将从其中一个启动脚本调用。此选项告诉Linux将此条目视为swapon-a命令控制下的交换资源。这里使用“defaults”是很常见的,因为有些Linux用户错误地认为这个字段被忽略了。我们将看到,情况并非如此。所以使用正确的选项是有意义的。
  • 转储:可以设置为零。这与本案无关。
  • 通过:可以设置为零。这与本案无关。

保存更改并关闭编辑器。

相关:如何在Linux上编写fstab文件

检查交换使用情况

要查看是否正在使用交换空间,请将swapon命令与--show选项一起使用:

swapon --show

如何在linux上创建交换文件

这些列是:

  • 名称:交换分区或交换文件的名称。
  • 类型:交换设备的类型。
  • 大小:交换资源的大小。
  • 已用:已用交换空间的数量。
  • Prio:交换空间的优先级。

交换空间优先级

每个交换空间分配一个优先级。如果您不提供一个,则自动分配一个。自动分配的优先级总是负数。可以手动分配的优先级范围是0到32767。优先使用具有更高优先级的交换资源。

如果有多个交换空间具有相同的优先级,则会交替使用这些空间,直到它们都已满,然后系统会查找具有下一个最低优先级的交换空间。如果只有一个交换空间,那么优先级当然是不相关的。但我们将更改我们创建的交换文件的优先级,以演示如何执行此操作。

要设置优先级,请将pri=(priority)选项添加到/etc/fstab条目中。编辑添加到/etc/fstab的行,如下所示:

/swapfile none swap sw,pri=10 0 0

也就是说,将pri=10添加到opti***字段中,并用逗号与“sw”分隔。不要在“sw”、“逗号”和“pri=10”之间留下任何空格。重新启动计算机并使用swapon--show命令:

swapon -- show

如何在linux上创建交换文件

此交换空间的优先级已提升到10。这证明了/etc/fstab条目中的opti***字段没有被忽略。

轻松交换空间

通过介绍和解释,我们可以轻松快速地创建一个新的交换文件,如下所示:

sudo dd if=/dev/zero /of=/swapfile2 bs=1024 count=104857 sudo mkswap /swapfile2 sudo chmod 600 /swapfile2 sudo swapon /swapfile2

让我们检查一下它是否有效:

swapon --show

如何在linux上创建交换文件

如果要永久删除,请将其放入/etc/fstab文件中。

繁荣。工作完成了。

  • 发表于 2021-04-14 19:44
  • 阅读 ( 115 )
  • 分类:互联网

你可能感兴趣的文章

如何编译自己的linux内核

... 在编译内核之前,您需要告诉GCC您希望如何完成它。您可以使用名为make的命令行工具来执行此操作。键入以下命令: ...

  • 发布于 2021-03-15 10:33
  • 阅读 ( 156 )

如何在mac上安装和双引导linux

...dows,但安装Linux则完全是另一回事。按照下面的步骤学习如何做到这一点。 ...

  • 发布于 2021-03-18 04:03
  • 阅读 ( 381 )

linux下如何重命名文件

要在Linux中重命名文件吗?如果您知道如何在Windows、macOS或Chrome操作系统中完成这项工作,那么您就知道如何在这里完成这项工作。在大多数版本的Linux上,您只需右键单击一个文件并选择Rename选项。 ...

  • 发布于 2021-03-22 02:48
  • 阅读 ( 276 )

如何用古墓保护您最敏感的数据信息

... 有兴趣吗?下面是如何做到这一点。 ...

  • 发布于 2021-03-26 08:43
  • 阅读 ( 167 )

如何从linux终端检查内存使用情况

...ee、vmstat和top。我们还将直接查看reading/proc/meminfo。 linux如何使用ram RAM是一种有限的资源,所有进程(如应用程序和守护进程)都需要它的一部分。只有这么多了。内核判断内存争用,并将定量分配的内存分配给所有饥饿的进...

  • 发布于 2021-04-02 13:03
  • 阅读 ( 213 )

如何在linux上使用suid、sgid和sticky位

...权限的人才能访问存储的密码,那么那些没有该权限的人如何更改他们的密码? 提升你的地位 通常,Linux命令和程序运行时与启动程序的人具有相同的权限集。当root运行passwd命令以更改密码时,它将以root的权限运行。这意味着...

  • 发布于 2021-04-02 14:48
  • 阅读 ( 174 )

如何在linux上使用free命令

...用。它的输出可能会让新手感到困惑,但我们将向您展示如何理解它。 自由命令 free命令在终端窗口中打印内存使用情况的快速摘要。它没有太多的选择和技巧,也不需要花太多的时间和精力去学习如何使用它。然而,要学会...

  • 发布于 2021-04-02 19:12
  • 阅读 ( 177 )

linux上的交换是什么?(以及如何更改)

...。 对于拥有最新硬件的普通桌面用户来说?保持原样。 如何设置linux交换值 在更改交换值之前,您需要知道它的当前值是什么。如果你想减少一点,问题是比什么少一点?使用此命令可以找到: cat /proc/sys/vm/swappiness 要配置交...

  • 发布于 2021-04-02 20:43
  • 阅读 ( 181 )

如何在linux上使用mkfs命令

...后才能使用连接到Linux计算机的任何数据存储设备。学习如何使用mkfs和其他实用程序来为各种文件系统实现这一点。我们教你怎么做。 mkfs**文件系统 mkfs命令生成文件系统。在其他操作系统上,创建文件系统称为格式化。不管...

  • 发布于 2021-04-03 02:03
  • 阅读 ( 202 )

如何在linux上安全地删除文件

...擦除SSD中的数据,应使用SSD**商提供的实用程序。 相关:如何在Linux终端中删除文件和目录 粉碎命令 shread是为执行覆盖而设计的,因此无法恢复已删除的文件。它包含在本文研究期间测试的所有Linux发行版中,包括Ubuntu、Fedora和...

  • 发布于 2021-04-03 10:54
  • 阅读 ( 193 )
小马哥once
小马哥once

0 篇文章

相关推荐