如何创建 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-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

[Linux]:进程(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 进程终止 1.1 进程退出的场景 进程退出只有以下三种情况: 代码运行完毕,结果正确。代码运行完毕,结果不正确。代码异常终止(进程崩溃)。 1.2 进程退出码 在编程中,我们通常认为main函数是代码的入口,但实际上它只是用户级