Linux内核-tmpfs虚拟文件系统

news2024/11/28 6:45:59

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们的Linux进阶部分,到目前为止,已经讲过:硬件,日常运维,基础软件,日志,进阶命令,防火墙,Shell编程,以及本章将要讲解的内核相关内容,和最后一章Linux系统。

让我们了解和熟悉基本的Linux内核相关的信息,Linux内核我们主要从以下几个方面来讲解:

Linux内核-什么是内核

Linux内核-内核模块&参数

Linux内核-proc文件系统

Linux内核-sys文件系统

Linux内核-tmpfs文件系统(本章节)

前面讲了2个虚拟文件系统,一个是主要是针对内核的,一个主要是针对cgroup,而tmpfs则是第三个虚拟文件系统,那它是主要针对什么呢?还有名字比较类似的devtmpfs又是做什么的呢?

图片

devtmpfs

devtmpfs是一种在 Linux 内核中用于管理设备文件的临时文件系统。以下是关于它的详细介绍:

一、基本概念

devtmpfs的全称为 “device temporary file system”(设备临时文件系统)。它在内核启动过程中自动创建,并随着系统运行持续存在,为用户空间提供了一种统一的方式来访问设备文件。

二、主要作用

  1. 设备文件管理:

    • 在传统的 Linux 系统中,设备文件通常是在系统启动时通过静态方式创建,或者在设备被检测到时手动创建。而devtmpfs简化了这个过程,内核可以自动在这个文件系统中创建和管理设备文件。

    • 当新的设备被插入或检测到时,内核会自动在devtmpfs中创建相应的设备文件,使得用户空间的程序可以立即访问这些设备,无需等待额外的手动配置或启动脚本。

    • 例如,当你插入一个 USB 存储设备时,内核会自动在devtmpfs中创建对应的设备文件,如/dev/sdX,这样用户空间的文件管理器或其他应用程序就可以通过这个设备文件来访问和操作该存储设备。

tmpfs

tmpfs是一种基于内存和交换空间的临时文件系统,在 Linux 系统中被广泛应用。以下是关于tmpfs的详细介绍:

一、基本概念

tmpfs全称为 “temporary file storage facility”(临时文件存储设施)。它主要用于存储临时数据,这些数据在系统重启后会被自动清除。tmpfs可以使用物理内存和交换空间来存储文件,其大小可以根据系统资源的可用性动态调整。

二、主要特点

  1. 动态大小调整

    • tmpfs的大小不是固定的,而是可以根据系统的需求动态变化。当有更多的临时数据需要存储时,tmpfs可以占用更多的内存和交换空间;当临时数据减少时,它会释放占用的资源。

    • 这使得tmpfs非常适合存储那些临时产生且大小不确定的文件,例如程序的临时输出、缓存文件等。

    • 例如,一个图像处理程序在运行过程中可能会产生大量的临时图像文件,tmpfs可以根据这些文件的大小自动调整其占用的内存空间,确保系统资源的有效利用。

  2. 快速读写性能

    • 由于tmpfs的数据存储在内存中,因此它具有非常高的读写速度。与传统的硬盘文件系统相比,tmpfs可以大大提高对临时数据的访问速度。

    • 这对于那些需要频繁读写临时数据的应用程序非常重要,例如数据库缓存、编译器的临时文件等。

  3. 数据易失性

    • tmpfs中的数据是易失性的,这意味着在系统重启或关闭时,存储在tmpfs中的所有数据都会被丢失。

三、文件系统和内存系统的对比

内存速度-写入/run目录

 fio --name=tmpfs_test1 --filename=/run/testfile --rw=randread --ioengine=libaio --bs=4k --size=256m --numjobs=4 --runtime=60

图片

文件速度-写入/root目录

  fio --name=tmpfs_test --filename=/root/testfile --rw=randread --ioengine=libaio --bs=4k --size=256m --numjobs=4 --runtime=60

图片

可以看出来速度差距很大,可以把我们那些临时文件并且对速度有要求的都可以放置在这里。从下面目录和文件也可以看出来,很多应用软件包括,sshd,crond,docker都会把一些pid文件和socket文件放置到该目录下。

图片

四、在线调整tmpfs

#一般没特殊需要,不要调整
mount -o remount,size=512M tmpfs /run
#如果已经使用,调整到比已经使用部分还小则会出错。

 

图片

总结

  1. 整个内核部分只是简单的讲解了如何升级内核,加载管理内核模块同内核参数的修改和持久化;以及3个基于内存的虚拟文件系统。

  2. 其中/proc记录了当前内核的运行状态,很多监控命令的数据都来源此。

  3. /sys主要记录是设备信息和cgroup限制,通过cgroup限制,我们可以实现cpu,内存,磁盘等限制,是我们实现虚拟化,容器的底层技术原理。

  4. 而/tmpfs则是普通用于放置一些临时文件,来提高应用速度,在日常运维中,我们也可以根据需要来使用它。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2227658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器视觉运动控制一体机在DELTA并联机械手视觉上下料应用

市场应用背景 DELTA并联机械手是由三个相同的支链所组成,每个支链包含一个转动关节和一个移动关节,具有结构紧凑、占地面积小、高速高灵活性等特点,可在有限的空间内进行高效的作业,广泛应用于柔性上下料、包装、分拣、装配等需要…

基于SSM+小程序的购物管理系统1

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM小程序的购物管理系统1,可以实现首页、个人中心、商品分类管理、商品信息管理、特价商品管理、用户管理、留言板管理、系统管理、订单管理等功能。方便用户对首页、商品…

Redis 事务 总结

前言 相关系列 《Redis & 目录》(持续更新)《Redis & 事务 & 源码》(学习过程/多有漏误/仅作参考/不再更新)《Redis & 事务 & 总结》(学习总结/最新最准/持续更新)《Redis & 事务…

正点原子阿尔法ARM开发板-IMX6ULL(十一)——IIC协议和SPI协议--AP3216C环境光传感器和ICM20608六轴传感器

文章目录 一、前言二、 IIC协议2.1 协议解读2.1.1 起始位、停止位、数据传输2.1.2 写时序2.1.3 读时序 2.2 代码分析2.3 AP3216C环境光传感器的代码分析 三、SPI协议3.1 协议解读3.2 代码分析3.3 ICM-20608六轴传感器代码分析 一、前言 看了IIC,我之前毕设用过这个…

Vmware虚拟机解决摄像头无效,相机失效

问题: 使用vmware虚拟机,打开windows的虚拟机,发现找不到摄像头,打开自带的相机软件报错: 解决方法如下,依次点击vmware状态栏的 虚拟机-可移动设备-chicony integrated camera-连接(断开与主…

MySQL用户权限管理属于SQL语句中的DCL语句

1.用户授权 语法:grant 权限,权限,on 库名,表名 to 用户名 [identified by 密码] MySQL5的版本,如果这个用户事先不存在,这个grant命令去给用户授权的时候,会将用户一起创建出来&#xff0…

已解决 django.db.utils.OperationalError: (1051, “Unknown table

报错信息: django.db.utils.OperationalError: (1051, "Unknown table bjybolg.tool_submission")python manage.py migrate --fake 命令用于告诉 Django 假装已经应用某个迁移,而不实际执行该迁移的操作。这通常在以下情况下非常有用&#x…

Linux shell编程学习笔记87:blkid命令——获取块设备信息

0 引言 在进行系统安全检测时,我们需要收集块设备的信息,这些可以通过blkid命令来获取。 1 blkid命令的安装 blkid命令是基于libblkid库的命令行工具,可以在大多数Linux发行版中使用。 如果你的Linux系统中没有安装blkid命令,…

堆的应用——堆排序和TOP-K问题

1.堆排序 想法⼀&#xff1a; 基于已有数组建堆、取堆顶元素完成排序。也就是利用写好的堆数据结构&#xff08;之前的文章有讲解&#xff09;&#xff0c;去实现排序。 void HeapSort(int* a, int n){HP hp;for(int i 0; i < n; i){HPPush(&hp,a[i]);}int i 0;whi…

HexForge:一款用于扩展安全汇编和十六进制视图的IDA插件

关于HexForge HexForge是一款用于扩展安全汇编和十六进制视图的IDA插件&#xff0c;在该工具的帮助下&#xff0c;广大研究人员可以方便地直接从 IDA Pro 界面数据解码、解密或执行安全数据审计任务。 功能介绍 1、从 IDA 的反汇编或十六进制视图复制原始十六进制&#xff1b;…

00 DSA-- 入门、实现动态数组、实现链表、栈和队列、环形数组、哈希表

两种代码模式 核心代码模式 核心代码模式&#xff1a;就是给你一个函数框架&#xff0c;你需要实现函数逻辑&#xff0c;这种模式一般称之为。 目前大部分刷题平台和技术面试/笔试场景都是核心代码模式。 比如力扣第一题两数之和&#xff0c;就是给出 twoSum 函数的框架如下…

Jmeter压力测试简单教程(包括服务器状态监控)

前段时间公司需要对服务器进行压力测试&#xff0c;包括登录前的页面和登录后的页面&#xff0c;主要目的是测试负载均衡的实现效果。不知道是不是因为Jmeter不如loadRunner火爆还是什么&#xff0c;网上关于Jmeter的资料有很多但是大多千篇一律&#xff0c;要么简单弄个页面测…

Android 开发 调节声音 SeekBar自定义样式

效果图 xml布局 mipmap/seekbar图片随意一张图都可以&#xff0c;这里我的图就不贴出来了 <SeekBarandroid:id"id/seekBar"android:layout_marginLeft"8dp"android:layout_width"377dp"android:layout_height"8dp"android:layou…

循序渐进丨openGauss / MogDB 数据库内存占用相关SQL

一、内存总体分布 数据库总体内存使用分布 select * from gs_total_memory_detail; 当dynamic_used_memory大于max_dynamic_memory就会报内存不足&#xff1b;如果此时dynamic_used_memory小于max_dynamic_memory&#xff0c;而dynamic_peak_memory大于max_dynamic_memory表…

基于vite和vue3、 eslint、prettier、stylelint、husky规范

前言 在现代的前端开发中&#xff0c;代码规范非常重要。它可以提高团队的协作效率&#xff0c;减少代码错误&#xff0c;使代码更易于维护。为了实现代码规范化&#xff0c;我们可以使用一些工具来辅助我们的开发流程&#xff0c;包括eslint、prettier、stylelint、husky&am…

MYSQL-SQL-03-DQL(Data Query Language,数据查询语言)(单表查询)

DQL&#xff08;数据查询语言&#xff09; DQL英文全称是Data Query Language(数据查询语言)&#xff0c;数据查询语言&#xff0c;用来查询数据库中表的记录。 查询关键字: SELECT 在一个正常的业务系统中&#xff0c;查询操作的频次是要远高于增删改的&#xff0c;当我们去访…

宇音天下最新力作 | VTX356语音识别合成芯片问世

北京宇音天下科技有限公司&#xff0c;依托在语音技术领域的丰富经验和技术积累&#xff0c;成功推出了一款具有里程碑意义的语音识别合成芯片——VTX356。这款芯片的问世&#xff0c;不仅彰显了公司在智能语音处理领域的专业实力&#xff0c;也预示着智能家居、车载电子、智能…

开始菜单增强工具 StartAllBack v3.7.10.4910 直装激活版

StartAllBack中文版(StartIsBack)是一款Win11开始菜单增强工具&#xff0c;可以为Windows11恢复经典样式的Windows7主题风格开始菜单和任务栏&#xff0c;功能包括了&#xff1a;自定义开始菜单样式和操作&#xff0c;个性化任务栏及资源管理器等。 详细功能 √ 全面更新中文语…

java中Scanner的nextLine和next方法

思考&#xff0c;输入1 2 3 4 5加上enter&#xff0c;输出什么 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int[][] m new int[2][2];for (int i 0; i < 2; i) {for (int j 0; j < 2;…

DataX数据同步

背景&#xff1a; 业务需求中&#xff0c;经常会有同步各种系统或者数仓的数据到自己的库进行使用。比如从oracle同步到自己的mysql&#xff0c;自己写代码如果数据量大需要考虑多线程并发等。最近使用了阿里的Datax项目&#xff0c;操作简单并高效。 Datax Datax概述&支…