40. 【Linux教程】文件系统介绍

从本小节我们将要开始 Linux 中的文件系统,在 Linux 系统中,文件系统都是基于硬盘创建的,Linux 系统支持多种不同类型的文件系统管理文件和目录,本小节介绍几种基本常见的文件系统。

Linux 文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有 Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。在 Linux 中普通文件和目录文件保存在称为块物理设备的磁盘或者磁带上,大多数 Linux 发行版在安装时会提供默认的文件系统。

1. df 命令显示文件系统类型

使用 df -T -h 命令可以查看当前文件系统的类型,命令如下:

 df  -T -h

执行结果如下图:

执行结果详解:

  • 第一列 文件系统 表示的含义是 设备的设备文件位置
  • 第二列 类型 表示的含义是 文件系统类型(图中类型包含 devtmpfs、tmpfs、xfs、ext4、iso9660)
  • 第三列 容量 表示的含义是 能容纳的空间大小
  • 第四列 已用 表示的含义是 已经用了多少空间大小
  • 第五列 可用 表示的含义是 还有多少空间大小可用
  • 第六列 已用% 表示的含义是 已经占用的空间比例
  • 第七列 挂载点 表示的含义是 设备挂载了那个挂载点上

2. ext 文件系统介绍

Linux 操作系统最开始引入的文件系统是扩展文件系统,记作 ext,它可以使用虚拟的目录操作硬件设备。ext 文件系统采用索引节点存放虚拟目录中存储的文件信息,索引节点系统在每个物理设备中创建一个单独的表(称为索引节点表)来存储这些文件信息,存储在虚拟目录中的每一个文件在索引节点表有一个条目。ext 文件系统中的 extended 部分来自其跟踪的每个文件的额外数据,这些数据包括:

  • 文件大小;
  • 文件的属主;
  • 文件的访问权限;
  • 指向存有文件数据的每个硬盘块的指针;
  • 文件名;
  • 文件所在的属组。

Linux 通过唯一的数值(称作索引节点号)来引用索引节点表中的每个索引节点,这个值是创建文件时由文件系统分配的。文件系统通过索引节点号而不是文件全名及路径来标识文件。

3. ext2 文件系统介绍

使用最开始的 ext 文件系统有很多的限制(如文件最大不能超过2GB),所以在 Linux 系统出现后,很快就有了 第二代拓展文件系统,记作 ext2ext2 文件系统是 ext 文件系统基本功能的一个扩展,而且保持了 ext 文件系统一样的结构,ext2 文件系统扩展了索引节点表的格式来保存系统上每个文件的更多信息。

ext2 的索引节点表为文件添加了创建时间、修改时间和最后一次访问的时间帮助系统来追踪文件的访问情况。ext2 文件系统还将允许的最大文件大小增加到了 32 TB(Linux 2.6 之前是 2TB),以容纳数据库服务器中常见的大文件。除了额外扩展的索引节点外,ext2 文件系统还改变了文件在数据块中存储的方式。ext 文件系统在读取文件时不需要为了数据块查找整个物理设备。

3.1 ext2 文件系统特点

  • 当创建 ext2 文件系统时,系统管理员可以根据预期的文件平均长度来选择最佳的块大小(从1024B~4096B)。例如,当文件的平均长度小于几千字节时,块的大小为 1024B 是最佳的,因为这会产生较少的内部碎片——也就是文件长度与存放块的磁盘分区有较少的不匹配。另一方面,大的块对于 大于几千字节的文件通常比较合合适,因为这样的磁盘传送较少,因而减轻了系统的开销。

  • 当创建 ext2 文件系统时,系统管理员可以根据在给定大小的分区上预计存放的文件数来选择给该分区分配多少个索引节点。这可以有效地利用磁盘的空间。

  • 文件系统把磁盘块分为组。每组包含存放在相邻磁道上的数据块和索引节点。正是这种结构,使得可以用较少的磁盘平均寻道时间对存放在一个单独块组中的文件并行访问。

  • 在磁盘数据块被实际使用之前,文件系统就把这些块预分配给普通文件。因此当文件的大小增加时,因为物理上相邻的几个块已被保留,这就减少了文件的碎片。

  • 支持快速符号链接。如果符号链接表示一个短路径名(小于或等于 60 个字符),就把它存放在索引节点中而不用通过由一个数据块进行转换。

3.2 ext2 文件系统健壮性特点

文件更新策略的谨慎实现将系统崩溃的影响减到最少。我们只举一个例子来体现这个优点:例如,当给文件创建一个硬链接时,首先增加磁盘索引节点中 的硬链接计数器,然后把这个新的名字加到合适的目录中。在这种方式下,如果在更新索引节点后而改变这个目录之前出现一个硬件故障,这样即使索引节点的计数 器产生错误,但目录是一致的。因此,尽管删除文件时无法自动收回文件的数据块,但并不导致灾难性的后果。如果这种处理的顺序相反更新索引节点前改变目录,同样的硬件故障将会导致危险的不一致,删除原始的硬链接就会从磁盘删除它的数据块,但新的目录项将指向一个不存在的索引节点。如果那个索引节点号以 后又被另外的文件所使用,那么向这个旧目录的写操作将毁坏这个新的文件。

在启动时支持对文件系统的状态进行自动的一致性检查。这种检查是由外部程序 e2fsck 完成的,这个外部程序不仅可以在系统崩溃之后被激活,也 可以在一个预定义的文件系统安装数每次安装操作之后对计数器加 1 之后被激活,或者在自从最近检查以来所花的预定义时间之后被激活。

支持不可变 immutable 的文件不能修改、删除和更名和仅追加 append-only 的文件只能把数据追加在文件尾。

既与 Unix System V Release 4(SVR4) 相兼容,也与新文件的用户组 ID 的 BSD 语义相兼容。在 SVR4 中,新文件采用创建它的进程的用户组 ID;而在 BSD 中,新文件继承包含它 的目录的用户组 ID。ext2 包含一个安装选项,由你指定采用哪种语义。

4. 小结

本小节介绍了 Linux 系统中较早期的文件系统 etx 和 ext2,使用 df -T -h 可以查看磁盘对应的文件系统类型,CentOs 8 默认的文件系统是 xfs,熟悉了 ext 和 ext2 文件系统之后,有助于后面熟悉和学习其他文件系统。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法沉淀——动态规划之两个数组的 dp(上)(leetcode真题剖析)

算法沉淀——动态规划之两个数组的 dp 01.最长公共子序列02.不相交的线03.不同的子序列04.通配符匹配 01.最长公共子序列 题目链接:https://leetcode.cn/problems/longest-common-subsequence/ 给定两个字符串 text1 和 text2,返回这两个字符串的最长 …

医院床旁交互系统概述 -智慧护理-全视通

全视通床旁交互系统是一种先进的医疗信息技术解决方案,旨在改善病患与医疗团队之间的沟通与交流。该系统通过集成多种高科技设备,为病患在病床边提供了一站式的信息交互平台,从而优化了医疗服务流程,提升了医疗体验。 首先&#x…

C++引入

引用不是新定义一个变量,而是给已经存在的变量取一个别名,编译器不会为了引用变量开辟内存空间,它和它引用的变量公用同一块内存空间。如李白被称为诗仙。李白和诗仙都是同一个人。 语法: 类型& 引用变量名(对象名)引用实体; 特性: 引用在…

coppeliasi4.0版本中使用循迹小车跟随路径时问题汇总

加入循迹小车,设置好路径后运行 发现报错,小车直线行驶不跟随设置好的路径移动 观察仿真中可知小车左右中传感器并不工作全是黑色,观察报错语句 Lua runtime error: [string "CUSTOMIZATION SCRIPT LeftSensor"]:12: Invalid hand…

基于SpringBoot的医护人员排班系统(代码+数据库+文档)

** 🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目 希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅** 目录 一、研究背景 1.…

Vue 项目重复点击菜单刷新当前页面

需求:“在当前页面点击当前页面对应的菜单时,也能刷新页面。” 由于 Vue 项目的路由机制是路由不变的情况下,对应的组件是不重新渲染的。所以重复点击菜单不会改变路由,然后页面就无法刷新了。 方案一 在vue项目中,…

探索Python编程世界:从入门到精通

一.Python 从入门到精通 随着计算机科学的发展,编程已经成为了一种必备的技能。而 Python 作为一种简单易学、功能强大的编程语言,越来越受到人们的喜爱。本文将为初学者介绍 Python 编程的基础知识,帮助他们踏入 Python 编程的大门&#xf…

网络安全: Kali Linux 使用 MSF 渗透测试

目录 一、实验 1.环境 2.登录MSF(Metasploit Framework)控制台 3.MSF初始化 4.MSF 管理工作区 5.Kali Linux (2024.1) 对Windows server 进行网址目录扫描 6.Kali Linux (2022.4) 对Ubuntu进行网址目录扫描 7.Kali Linux (2024.1) 对Windows ser…

Java 的七种垃圾收集器

了解 Java 中的内存管理。 用 C 或 C 这样的编程语言写一个应用时,需要编写代码来销毁内存中不再需要的对象。当应用程序扩展得越来越复杂时,未使用对象被忽略释放的可能性就越大。这会导致内存泄露,最终内存耗尽,在某个时刻将没有…

Matlab/Simulink验证MAB建模规范

前言 为什么MAB? MathWorks Advisory Board(MAB)是由MathWorks公司设立的一个咨询委员会,旨在提供有关MathWorks产品和服务的反馈、建议和意见。MAB成员通常是来自学术界、工业界和其他领域的专业人士,他们在各自领域…

【Sql Server】C#通过拼接代码的方式组合添加sql语句,会出现那些情况,参数化的作用

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Sql Server》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对…

【C++从0到王者】第四十七站:最小生成树

文章目录 一、最小生成树的概念1.概念2.最小生成树的构造方法 二、Kruskal算法1.算法思想2.代码实现 三、Prim算法1.算法思想2.代码实现3.试试所有节点为起始点 一、最小生成树的概念 1.概念 连通图:在无向图中,若从顶点v1到顶点v2有路径,则…

这本书太好了!150页就能让你上手大模型应用开发

如果问个问题:有哪些产品曾经创造了伟大的奇迹?ChatGPT 应该会当之无愧入选。 仅仅发布 5 天,ChatGPT 就吸引了 100 万用户——当然,数据不是关键,关键是其背后的技术开启了新的 AI 狂潮,成为技术变革的点火…

强势改进!基于改进多目标灰狼算法的冷热电联供型微电网运行优化程序代码!

适用平台:MatlabYalmipCplex 程序以综合能源系统/微电网为研究对象,将微电网的运行费用和环境污染成本作为优化目标,考虑冷热电负荷和设备运行要求的约束,建立的微电网的多目标优化模型,使用改进多目标灰狼算法算法进…

有个朋友被骗了,大家要擦亮眼睛

1.引言 大家好,我是Leo哥🫣🫣🫣,昨天凌晨有个粉丝朋友找到Leo哥,咨询一些问题,现在的朋友们真卷呐,大半夜还在挑灯夜战。可无奈Leo哥12点之前已经睡了,身体为重&#xf…

智慧社区养老:Java与SpringBoot的技术融合

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

Day31|贪心算法1

贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 无固定套路,举不出反例,就可以试试贪心。 一般解题步骤: 1.将问题分解成若干子问题 2.找出适合的贪心策略 3.求解每一个子问题的最优解 4.将局部最优解堆叠成全局最…

C语言第三十五弹---文件操作(上)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 文件操作 1、为什么使用文件? 2、什么是文件? 2.1、程序文件 2.2、数据文件 2.3、文件名 3、二进制文件和文本文件 4、文件的打开和…

YOLO v9训练自己数据集

原以为RT-DETR可以真的干翻YOLO家族,结果,!!!! 究竟能否让卷积神经网络重获新生? 1.数据准备 代码地址:https://github.com/WongKinYiu/yolov9 不能科学上网的评论区留言 数据集…

【Python】新手入门(2):避免将关键字作为标识符

Python新手入门(2):避免将关键字作为标识符 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1…