如何创建 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

相关文章

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、