tmpfs文件系统介绍

一、概述

        tmpfs是一种基于内存的文件系统,它将一部分系统内存用作临时存储空间。在Linux系统中,tmpfs常用于挂载临时目录,如/run、/tmp和var等目录,用于存储临时文件、进程运行时数据和其他临时性数据。

tmpfs的优点:

  1. 快速访问:由于tmpfs将数据存储在内存中,读写速度非常快,比传统的磁盘文件系统更高效。

  2. 自动分配和释放内存:tmpfs会根据需要动态分配和释放内存空间,根据文件的使用情况进行调整(

    tmpfs内部使用了一种称为"page cache"的机制来管理内存。Page cache是一种内核中的缓存机制,用于将文件数据从磁盘加载到内存中,并在需要时进行读取和写入操作。tmpfs使用page cache来缓存tmpfs文件系统中的数据。

    当文件被写入tmpfs时,内核会将数据存储在page cache中,并将其标记为属于tmpfs文件系统。如果系统内存足够,数据将保留在内存中,以提供快速的读写访问。如果系统内存不足,内核会根据一定的策略将部分数据写回到磁盘,以释放内存空间。

  3. 临时性:tmpfs中的数据在系统重启后会被清除,因此适合存储临时文件和临时数据。

要在Linux系统上使用tmpfs,可以使用mount命令将其挂载到指定的目录。以下是一个示例:

sudo mount -t tmpfs -o size=1G tmpfs /var

这将创建一个1GB大小的tmpfs实例,并将其挂载到指定的目录。可以根据需要调整size参数的值。

二、tmpfs挂载

        tmpfs的大小和使用方式可以通过挂载选项进行配置。在挂载tmpfs时,可以指定其大小、文件系统权限等参数。下面是一些常用的挂载选项:

  1. rw:挂载为可读写的文件系统。
  2. seclabel:启用安全标签(SELinux)支持。
  3. nosuid:禁止设置文件的SUID和SGID权限位。
  4. nodev:禁止在文件系统上创建特殊设备文件。
  5. size:指定tmpfs文件系统的最大大小。这个值表示以字节为单位的大小,可以使用K(千字节)、M(兆字节)或G(千兆字节)作为后缀,例如size=1G表示1GB大小的tmpfs文件系统。
  6. nr_inodes:指定tmpfs文件系统的最大inode数量(文件和目录的索引节点)。这个值表示tmpfs文件系统可以支持的最大文件和目录数量。
  7. mode:指定tmpfs文件系统的默认权限模式。这个值表示文件和目录的默认权限,通常以八进制表示,例如mode=1777表示权限为rwxrwxrwt。

通过设置不同的挂载选项,可以为不同的目录(如/run和/tmp)创建不同大小的tmpfs实例,并为其设置不同的权限和所有者,这些参数可以根据需要进行调整。例如,可以根据系统的内存情况和使用需求来设置size参数,以控制tmpfs文件系统的大小。nr_inodes参数可以用于限制tmpfs文件系统中的文件和目录数量,以防止过多的文件占用内存。

例如,可以使用以下命令将一个1GB大小的tmpfs挂载到/run目录:

sudo mount -t tmpfs -o size=1G tmpfs /run

有时看到系统启动后可以看到多个tmpfs目录,并且每个目录大小不同,其就是通过size来指定的,如下:

# df | grep tmpfs
tmpfs                   326460      1128    425632   1% /run
tmpfs                   326460         0    526760   0% /sys/fs/cgroup
tmpfs                   326460      2840    323620   1% /var/cache
 

再比如一些多参数解析:

tmpfs /run tmpfs rw,seclabel,nosuid,nodev,size=481160k,nr_inodes=12545,mode=755 0 0

这里主要介绍后两位0 0,其他参考上述参数含义。

0 0:这是用于文件系统检查和备份的选项,表示在启动时不进行文件系统检查,并且不进行备份。

  • 第一个0:表示在系统启动时对该文件系统进行检查的顺序。0表示不进行检查,1表示首先检查,2表示在其他文件系统之后检查。
  • 第二个0:表示备份选项。0表示不进行备份,1表示备。
  • 挂载选项中的0 0只是用于指定文件系统检查和备份的选项,并不直接执行备份操作,如需备份需通过tarrsynccp等来进行文件系统的备份操作。

三、fstab和mtab区别和调用

  /etc/fstab/etc/mtab是两个不同的文件,用于存储关于文件系统挂载和已挂载文件系统的信息。

  • /etc/fstab(文件系统表)是一个静态的配置文件,用于定义系统在启动时应该如何挂载文件系统。它包含了文件系统的设备名、挂载点、文件系统类型以及挂载选项等信息。通过编辑/etc/fstab文件,可以配置系统在启动时自动挂载所需的文件系统。

  • /etc/mtab(挂载表)是一个动态的文件,记录了当前已挂载的文件系统的信息。它包含了已挂载文件系统的设备名、挂载点、文件系统类型、挂载选项以及挂载的状态等息。/etc/mtab文件是由系统自动生成和更新的,它反映了当前系统中的挂载情况。可以看到mtab是软链接到/proc/self/mounts中的,而mounts是由内核生成的节点。

ls -l /etc/mtab
lrwxrwxrwx 1 root root 19 Nov 25 10:29 /etc/mtab -> ../proc/self/mounts

对于如何调用以及在哪里调用的,由上可知mtab是由内核来记录的。对于fstab,通常是这样的:

内核代码init_main.c(kernel_init函数)----->try_to_run_init_process("/sbin/init")----->systemd----->systemd 会读取并解析 /etc/fstab 文件,然后根据其中的配置信息挂载文件系统。

  1. 文件系统设备或UUID:指定要挂载的文件系统的设备名称或UUID。
  2. 挂载点:指定文件系统要挂载到的目录。
  3. 文件系统类型:指定文件系统的类型,如 ext4、ntfs、tmpfs 等。
  4. 挂载选项:指定挂载时的选项,如读写权限、自动挂载等。
  5. dump:用于备份的标志,一般设置为 0 或者 1。
  6. fsck:指定系统启动时是否需要进行文件系统检查,一般设置为 0、1 或者 2。

对于 dump 标志,一般设置为 0 或 1。其中,0 表示不需要备份,1 表示需要备份。通常,对于不需要备份的文件系统,可以将其设置为 0。

对于 fsck 标志,一般设置为 0、1 或 2。其中,0 表示不需要进行文件系统检查,1 表示在启动时进行文件系统检查,2 表示进行文件系统检查,但如果文件系统标记为 "clean",则跳过检查。通常,对于根文件系统,建议将其设置为 1,以确保在系统启动时进行文件系统检查。

以下是一个示例 /etc/fstab 文件的片段,展示了如何设置 dump 和 fsck 标志:

/dev/sda1    /    ext4    defaults    1    1
/dev/sdb1    /data    ext4    defaults    0    2

说明:/sbin/init实际上是一个符号链接,指向真正的初始化程序,如systemdSysV init等。

四、tmp清除规则

systemd有systemd-tmpfiles-clean.service相关服务,可借助此来完成。

/etc/tmpfiles.d/tmp-cleanup.conf
# 清除tmp目录下的临时文件和目录
# 清除规则的格式为:d <路径> <权限> <所有者> <组> <延迟>
# - 表示删除文件或目录
# L 表示遵循符号链接
# r 表示递归删除目录中的文件和子目录
# /tmp/whitelist 表示白名单文件路径
# /tmp/blacklist 表示黑名单文件路径# 清除tmp目录下的所有文件和目录
/tmp/* - - - - -# 从白名单文件中读取要保留的文件和目录
/tmp/whitelist r! - - - -# 从黑名单文件中读取要删除的文件和目录
/tmp/blacklist r - - - -# 设置清除间隔为每周一次
d /tmp - - - 7d

其中使用1d表示每天一次,1w表示每周一次,1m表示每月一次等。

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

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

相关文章

【机器学习】深度学习概论(二)

五、受限玻尔兹曼机&#xff08;Restricted Boltzmann Machine&#xff0c;RBM&#xff09; 5.1 RBM介绍 示例代码&#xff1a; Python 编写了一个简单的 RBM 实现&#xff0c;并用一些假数据训练了它。然后&#xff0c;他展示了如何用 RBM 来解释用户的电影偏好&#xff0c;以…

使用rust读取usb设备ACR122U的nfc卡片id

rust及其高效和安全著称&#xff0c;而且支持跨平台&#xff0c;所以就想使用这个rust开发一个桌面端程序&#xff0c;来读取nfc设备的nfc卡片的id信息&#xff0c;下面就做一个最简单的入门教程吧&#xff0c;也是我写的第三个rust应用。 当你电脑上安装好了rust环境之后&…

MySql篇——MySql使用常见问题及解决办法

这里汇总MySql使用常见问题及解决办法&#xff0c;会持续更新。 问题1.ERROR 1819 (HY000): Your password does not satisfy the current policy requirements。 含义&#xff1a;你设置的密码不符合当前的密码等级。 可使用 SHOW VARIABLES LIKE validate_password%; 查看…

Spring-4-代理

前面提到过&#xff0c;在Spring中有两种类型的代理&#xff1a;使用JDK Proxy类创建的JDK代理以及使用CGLIB Enhancer类创建的基于CGLIB的代理。 你可能想知道这两种代理之间有什么区别&#xff0c;以及为什么 Spring需要两种代理类型。 在本节中&#xff0c;将详细研究代理…

count distinct在spark中的运行机制

文章目录 预备 数据和执行语句Expand第一次HashAggregateShuffle and Second HashAggregate最后结果性能原文 预备 数据和执行语句 SELECT COUNT(*), SUM(items), COUNT(DISTINCT product), COUNT(DISTINCT category) FROM orders;假设源数据分布在两个1核的结点上&#xff0…

速盾cdn:ddos防护手段

速盾CDN采用多种手段来进行DDoS防护&#xff0c;以确保网络和网站的正常运行。以下是速盾CDN可能采用的一些主要DDoS防护手段&#xff1a; 实时监测和分析&#xff1a; 速盾CDN实时监测网络流量&#xff0c;通过分析流量模式来检测异常行为&#xff0c;以迅速发现潜在的DDoS攻击…

ElasticSearch 聚合统计

聚合统计 度量聚合&#xff1a;求字段的平均值&#xff0c;最小值&#xff0c;最大值&#xff0c;总和等 桶聚合&#xff1a;将文档分成不同的桶&#xff0c;桶的划分可以根据字段的值&#xff0c;范围&#xff0c;日期间隔 管道聚合&#xff1a;在桶聚合的结果上执行进一步计…

【Java 进阶篇】Redis 缓存优化:提升应用性能的不二选择

在现代的软件开发中&#xff0c;性能一直是开发者们追求的目标之一。对于数据库访问频繁、数据读取较慢的场景&#xff0c;使用缓存是提升性能的有效手段之一。而 Redis 作为一款高性能的内存数据库&#xff0c;被广泛用作缓存工具。本文将围绕 Redis 缓存优化进行详解&#xf…

swing快速入门(三十二)消息对话框

注释很详细&#xff0c;直接上代码 上一篇 新增内容 1.自定义对话框前列图标 2.消息对话框的若干种形式 package swing21_30;import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent;public class swing_test_30 {// 定义一个JFrameJFrame jFrame n…

Modbus,DNP3的理解

Modbus&#xff0c;DNP3的理解 目录概述需求&#xff1a; 设计思路实现思路分析1.概念理解3.区别 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for…

B1007 素数对猜想

description 让我们定义 dn 为&#xff1a;dn pn1 – pn&#xff0c;其中 pi 是第i个素数。显然有 d11 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。 现给定任意正整数N (< 105)&#xff0c;请计算不超过N的满足猜想的素数对的个数。…

【远程开发】穿越跳板机和CLion远程开发——全面配置流程

文章目录 穿越跳板机配置 ProxyJump 方案Cygwin上的配置 建立 SSH Tunneling 方案 代码映射目录映射方案配置Rsync加速 远程服务器方案(todo) 远程Debug tips&#xff1a;本文讲了两种穿越跳板机的方案(推荐ProxyJump方案)&#xff0c;和两种代码映射的方案。实际任选一对搭配即…

python脚本监控日志文件并将匹配行内容发送给钉钉

筛选日志文件内最近一个小时内的日志并将匹配项及后三行编辑成内容发送给钉钉 import time import os import requests import re from datetime import datetime, timedelta# 监控的日志文件根路径 log_root_path /data/logs/# 钉钉机器人 Webhook URL dingding_webhook ht…

【基础篇】七、线程上下文类加载器打破双亲委派机制

文章目录 1、SPI机制2、JDBC案例之SPI机制3、打破双亲委派机制&#xff1a;线程上下文类加载器4、打破双亲委派机制&#xff1a;osgi模块化5、JDK9之后的类加载器6、小总结 1、SPI机制 SPI&#xff0c;Service Provider Interface&#xff0c;是JDK内置的一种服务提供发现机制…

C语言通过指针访问数组元素介绍

介绍 在编程中我们经常会遇到遍历数组&#xff0c;或者取数组中某一位置的值&#xff0c;采取数组索引的方式也是可以的&#xff0c;今天我介绍一个通过指针访问数组数据。 废话不多说&#xff0c;先上代码。 #include <stdio.h>int main() {// 定义一个整型数组并初始…

Evidential Deep Learning to Quantify Classification Uncertainty

本片文章发表于NeurIPS 2018。 文章链接&#xff1a;https://arxiv.org/abs/1806.01768 一、概述 近年来&#xff0c;神经网络在不同领域取得了革命性的进步&#xff0c;尤其是在dropout、normalization以及skip connection等方法被提出之后&#xff0c;撼动了整个机器学习领…

【Vue】computed详解

✨ 专栏介绍 在当今Web开发领域中&#xff0c;构建交互性强、可复用且易于维护的用户界面是至关重要的。而Vue.js作为一款现代化且流行的JavaScript框架&#xff0c;正是为了满足这些需求而诞生。它采用了MVVM架构模式&#xff0c;并通过数据驱动和组件化的方式&#xff0c;使…

【DDPM】扩散模型DDPM的原理介绍(2)

本篇博客是上一篇博客的续。在上一篇博客中介绍了扩散模型DDPM的扩散过程和反向过程&#xff0c;本篇博客主要介绍DDPM的优化目标、模型结构以及与其它深度生成模型的比较。废话不多说&#xff0c;那就开始吧~ 优化目标 模型的结构 与其它深度生成模型的比较 图片生成领域最常见…

OfficeWeb365 Indexs 任意文件读取漏洞复现

0x01 产品简介 OfficeWeb365 是专注于 Office 文档在线预览及PDF文档在线预览云服务,包括 Microsoft Word 文档在线预览、Excel 表格在线预览、Powerpoint 演示文档在线预览,WPS 文字处理、WPS 表格、WPS 演示及 Adobe PDF 文档在线预览。 0x02 漏洞概述 OfficeWeb365 /Pi…

PDF模板填充,基于IText5

前言 对于PDF模板填充&#xff0c;有很多现有的Java库&#xff0c;付费版本略过。 较出名的有Apache的PDFBox&#xff0c;以及ITextPdf。 而后者具有两个很大的版本ITextPdf-5和ITextPdf-7&#xff0c;ITextPdf-7功能更强大&#xff0c;但可能存在商业版权问题。之前也用过一…