如何创建 Linux 交换文件

2024-03-18 08:48
文章标签 linux 创建 交换文件

本文主要是介绍如何创建 Linux 交换文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

提高服务器性能和避免内存不足的推荐方法之一是创建交换空间或交换文件。交换是位于硬盘上的虚拟内存,当内存利用率很高时会扩展 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 容量有多大,始终建议为任何不可预见的事件配置交换。

这篇关于如何创建 Linux 交换文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/821815

相关文章

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

linux解压缩 xxx.jar文件进行内部操作过程

《linux解压缩xxx.jar文件进行内部操作过程》:本文主要介绍linux解压缩xxx.jar文件进行内部操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、解压文件二、压缩文件总结一、解压文件1、把 xxx.jar 文件放在服务器上,并进入当前目录#

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon