Linux创建交换文件swapfile方法

article/2025/11/9 10:22:56

说明

这个东西在网上真的一堆又一堆的,写出来就是为了记录一下,同时,也为了方便大家使用。
并且创建了一个群,没有主题的,欢迎加入:839421316

在创建linux swapfile中,会用到dd命令来创建swap文件。用mkswap命令设置交换分区或交换文件。

第一步

我们需要使用root权限。登录这些就不用多说了。

第二步

创建交换文件,这里会创建一个16GB的交换文件,具体的大小要根据你系统的内存或你的需求来看。
我们使用的命令为:

# sudo dd if=/dev/zero of=/opt/swapfile/16GB.swap bs=1024 count=16777216

if=/dev/zero : 从/dev/zero文件中读取数据。/dev/zero这个文件如果你比较了解,可以加到群里,给那些不了解的人讲讲。这里不多说。
of=/opt/swapfile/16GB.swap : 这里设置的文件为需要创建的交换文件,内容是从/dev/zero中读取来。
bs=1024 : 每次读取和写入1024 BYTES。
count=16777216 : 需要写入块的数量,块大小就是bs所设置的大小。这里设置的是16777216个。
这里需要注意的是,应该如何换算
1024102416=16777216
第一个1024是bs的大小,1024BYTE,为1M。
第二个1024是指1024个1M, 为1G
第三个16是指16G。

# dd if=/dev/zero of=/opt/swapfile/16GB.swap bs=1024 count=16777216
16777216+0 records in
16777216+0 records out
17179869184 bytes (17 GB) copied, 92.9432 s, 185 MB/s# ll -h /opt/swapfile/16GB.swap 
-rw-r--r-- 1 root root 16G Dec 18 12:49 /opt/swapfile/16GB.swap

这样,16G的交换文件创建完成。

第三步

设置交换文件的权限。这一步是为了安全。再讲就非常基础了。

# chown root:root /opt/swapfile/16GB.swap
# chmod 0600 /opt/swapfile/16GB.swap

第四步

将刚创建的交换文件设置为交换分区。

# mkswap /opt/swapfile/16GB.swap 
Setting up swapspace version 1, size = 16777212 KiB
no label, UUID=d1514772-2707-4462-80b2-e352c2e5655f

第五步

启用交换分区。

# swapon /opt/swapfile/16GB.swap

第六步

让系统开机自动启用。
需要悠/etc/fstab文件,在这个文件中加入以下内容:

/opt/swapfile/16GB.swap			none			  swap	  sw		  0 0

这样,linux在启动时会自动加载。

第七步

验证。
通过free -m 验证。

# free -mtotal        used        free      shared  buff/cache   available
Mem:          15886         407         369           0       15109       15133
Swap:         16383           0       16383

查看交换分区的使用情况:

# swapon -s
Filename				Type		Size	Used	Priority
/opt/swapfile/16GB.swap                	file	16777212	0	-1

也可以通过查看文件/proc/meminfo。

# grep -i --color swap  /proc/meminfo 
SwapCached:            0 kB
SwapTotal:      16777212 kB
SwapFree:       16777212 kB

也可以通过

top
atop
htop

查看交换分区的使用情况。

如何停用swap分区或swap文件

停用swap分区和文件,使用swapoff

# swapoff /opt/swapfile/16GB.swap

再查看交换分区的使用信息:

# swapon -s

配置交换分区

交换分区在设置好后,可以通过设置/proc/sys/vm/swappiness文件来控制内核将内存中的页交换到交换分区中。设置的值超市,则交换分区使用就会更高。默认值为60。如果需要修改,可以通过以下两种方法:

# sysctl vm.swappiness=20

# echo 30 > /proc/sys/vm/swappiness

如果需要永久的更改,可以将值写入到 /etc/sysctl.conf

echo 'vm.swappiness=30' >> /etc/sysctl.conf

如果有什么问题,可以加入QQ群进行讨论。QQ群:839421316

谢谢支持。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/vASd4Tau.shtml

相关文章

linux 创建 swap 文件,创建交换文件(swapfile)-linux

创建/删除交换文件(swapfile)-linux 交换空间是从硬盘中划分出来的一部分空间。交换空间可以是一 个专用的交换分区(推荐的方法),交换文件,或两者的组合。 交换空间的总大小应该相当于你的计算机内存的1~2倍和32 MB 这两个值中较大的一个&…

Linux扩容和删除运行内存(swapfile 交换文件)

1 新增swapfile 交换文件 Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。Android是基于Linux的操作系统&#xf…

[深入浅出C语言]理解取整、取余和取模

关于C语言的取模运算,也许你只了解正数取模,而从未接触过负数取模,本文就来分享一波C语言取整、取模和取余的个人学习经验与心得,希望对你有所帮助。 笔者水平有限,难免存在纰漏,欢迎指正交流。 关于取整…

取整和取余

取整和取余在数学的除法运算中,两个数相除是可以算到小数位的。但是,在c语言中两个整数相除其结果是一个整数,只有两数中至少有一个为实数的时候,他们相除的结果才是小数。因此,两个整数相除的结果就会涉及到取整问题。…

C/C++取整函数

C常用的取整函数有三个ceil,floor,round ceil的英文释义:装天花板,装船内格子板;函数功能是向上取整 floor的英文释义:楼层; 地面,地板;函数功能是向下取整 round的英文释义&…

【C语言】取整函数ceil()用法

ceil功能&#xff1a; 返回大于等于表达式的最小整数。 ceil--数学函数&#xff0c;同样要加数学头文件#include<math.h> ceil返回大于等于表达式的最小整数&#xff0c;例如&#xff1a;float a4.5 那么int ceil&#xff08;a&#xff09;5 ceil函数和float强制转换为…

【C语言】深度理解-取整

深度理解 取整的概念 关于取整的介绍向零取整trunc()函数----向0取整 向负无穷大取整floor()函数 向正无穷大取整ceil()函数 四舍五入取整round()函数 总结 关于取整的介绍 在数学中取整方法通常是“四舍五入”&#xff0c;但是在我们编程语言中的取整方法却大有不同。大部分学…

什么是取整?有几种取整方式?C语言又是哪种方式?取模取余一样吗?

大家都知道取整这回事&#xff0c;但是对于取整只有单一的认识&#xff0c;请看下面代码。 int main() {int j -2.9;int i 2.9;printf("%d\n", j);printf("%d\n", i);return 0; } 看这串代码我们先不管数据溢出的问题&#xff0c;直接看最后的结果等于 …

C语言学习之取整取余

1.前言 对于取整&#xff0c;在数学中我们最常见的作法就是四舍五入取整。而在C语言中&#xff0c;我们则是直接通过取整数部分&#xff0c;舍弃小数部分的方式进行取整。那么&#xff0c;所有语言的取整方式是相同的吗&#xff1f;而对于取余&#xff0c;我们可能经常会听到取…

C语言取整方法

文章目录 1. 直接赋值给整型变量int2. 整数除法运算&#xff08;“int / int”&#xff09;取整除法四舍五入 3. 使用floor函数4. 使用ceil函数5. 使用round函数 1. 直接赋值给整型变量int 作用&#xff1a; 使用该方法是将小数部分去除。 int i 3.5;或i (int)3.5; #include…

数据结构——浅谈链表

上午翻源码&#xff0c;翻到了原来学习数据结构时自己实现的链表源码&#xff0c;特此总结一下。源码可能有很多不完善的地方&#xff0c;请多谅解。 按照惯例&#xff0c;还是先来介绍下什么是链表。 链表是一种数据结构&#xff0c;在内存中通过节点记录内存地址而相互链接形…

数据结构:链表-C语言实现

文章目录 链表一. 前言二. 链表的定义2.1 概念2.2 分类 三. 单向无头不循环链表3.1 概念和说明3.2 定义链表结构体3.3 函数接口3.3.1 申请节点3.3.2 链表头插3.3.3 链表尾插3.3.4 在pos节点之后插入3.3.5 在pos节点之前插入3.3.6 链表头删3.3.7 链表尾删3.3.8 删去pos节点3.3.9…

数据结构——链表

数组是常用的数据结构&#xff0c;但是有其局限性&#xff1a; 编译期需要确定元素大小 数组在内存中是连续的&#xff0c;插入或者删除需要移动数组中其他数据 数组适合处理确定长度的&#xff0c;对于插入或者删除不敏感的数据。如果数据是频繁变化的&#xff0c;就需要选择…

数据结构-链表

链表 一、介绍1、单链表1、单链表结构体&#xff1a;2、单链表头插法&#xff1a;3、单链表尾插法&#xff1a; 二、例题1、双指针&#xff08;获取倒数第K个元素、获取中间位置的元素、判断链表是否存在环、判断环的长度、查找第一个公共节点、回文链表&#xff09;1、 判断链…

C语言数据结构、十字链表的分析及实现

目录 前言 一、什么是十字链表 二、认识十字链表 1.十字链表的组成 2.顶点和弧的连接 三、代码逻辑实现 1.出度 2.入度 总结 前言 无论是什么程序都要和数据打交道&#xff0c;一个好的程序员会选择更优的数据结构来更好的解决问题&#xff0c;因此数据结构的重要性不言…

JS 数据结构:链表

单链表 每个节点中只包含一个指针域的链表称为单链表。 头结点—其指针域指向表中第一个结点的指针&#xff08;头结点不是必须的&#xff0c;只是习惯上加上头结点&#xff0c;而头结点的数据域一般记录的是该链表的相关数据&#xff0c;如&#xff1a;链表长度&#xff09;…

数据结构中链表和列表的区别

顺序表和链表由于存储结构上的差异&#xff0c;导致它们具有不同的特点&#xff0c;适用于不同的场景。通过系统地学习顺序 表和链表我们知道&#xff0c;虽然它们同属于线性表&#xff0c;但数据的存储结构有本质的不同。 • 顺序表存储数据&#xff0c;需预先申请一整块足够…

数据结构(六)——循环链表

一、循序链表简介 1、循环链表的定义 循环链表的任意元素都有一个前驱和一个后继&#xff0c;所有数据元素在关系上构成逻辑上的环。 循环链表是一种特殊的单链表&#xff0c;尾结点的指针指向首结点的地址。 循环链表的逻辑关系图如下&#xff1a; 2、循环链表的设计实现 …

数据结构-使用链表实现栈

目录结构 Stack接口 package LinkedListStack;public interface Stack<E> {int getSize();boolean isEmpty();void push(E e); //向栈中添加元素E pop();//向栈中取出元素E peek();//查看栈顶的元素 }LinkedList类 package LinkedListStack;public class LinkedList<…

数据结构 | 链表的实现

目录 单链表双链表数组结构和链式结构的对比 线性表中&#xff0c;除了顺序表这一重要的结构&#xff0c;还有链式结构&#xff0c;而这也是我们常说的链表。 一般是通过定义结构体(类)的方式来表示链表的每一个结点。一般而言&#xff0c;链表的结点都会有数据域和地址域。数据…