如何创建 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系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

Linux线程同步/互斥过程详解

《Linux线程同步/互斥过程详解》文章讲解多线程并发访问导致竞态条件,需通过互斥锁、原子操作和条件变量实现线程安全与同步,分析死锁条件及避免方法,并介绍RAII封装技术提升资源管理效率... 目录01. 资源共享问题1.1 多线程并发访问1.2 临界区与临界资源1.3 锁的引入02. 多线程案例2.1 为

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l