【Linux进阶】文件系统4——文件系统特性

1.磁盘组成与分区的复习

首先说明一下磁盘的物理组成,整块磁盘的组成主要有:

  • 圆形的碟片(主要记录数据的部分);
  • 机械手臂,与在机械手臂上的磁头(可擦写碟片上的数据);
  • 主轴马达,可以转动碟片,让机械手臂的磁头在碟片上读写数据;

从上面我们知道数据存储与读取的重点在于碟片,而碟片上的物理组成则为:

  • 扇区(Sector)为最小的物理存储单位,且依据磁盘设计的不同,目前主要有512B与448
  • 两种格式;
  • 将扇区组成一个圆,那就是柱面(Cylinder);
  • 早期的分区主要以柱面为最小分区单位,现在的分区通常使用扇区为最小分区单位(每个扇区都有其号码,就好像座位一样);
  • 磁盘分区表主要有两种格式,一种是限制较多的MBR分区表,一种是较新且限制较少的GPT分区表;
  • MBR 分区表中,第一个扇区最重要,里面有:主引导记录(Master boot record,MBR)及
  • 分区表(partition table),其中MBR占有 446B,而分区表则占有64B;
  • GPT分区表除了分区数量扩充较多之外,支持的磁盘容量也可以超过2TB;

        至于磁盘的文件名部分,基本上,所有物理磁盘的文件名都已经被模拟成/dev/sd[a-p]的格式,第一块磁盘文件名为/dev/sda,而分区的文件名若以第一块磁盘为例,则为/dev/sda[1-128]。除了物理磁盘之外,虚拟机的磁盘通常为/devlvd[a-p]的格式。

        若有使用到软件磁盘阵列的话,那还有devlmd[0-128]的磁盘文件名,使用LVM时,文件名则为/devNGNAME/LVNAME等格式。关于软件磁盘阵列与LVM我们会在后面继续介绍,这里主要介绍的以物理磁盘及虚拟磁盘为主。

  • /devlsd[a-p][1-128]:为物理磁盘的文件名;
  • /devlvd[a-d][1-128]:为虚拟磁盘的文件名;

复习完物理组成后,来复习一下磁盘分区吧!

如前所述,以前磁盘分区最小单位经常是柱面,但CentOS7的分区软件,已经将最小单位改成了扇区,所以分区容量的大小可以划分的更细,此外,由于新的大容量磁盘大多要使用GPT分区表才能够使用全部的容量,因此过去那个MBR的传统磁盘分区表限制就不会存在了,不过,由于还是有小磁盘。

因此,你在处理分区的时候,还是得要先查询一下,你的分区是MBR分区表,还是GPT的分区表。后续的操作,大多还是以GPT为主来介绍。

2.文件系统特性

        我们都知道磁盘分区完毕后还需要进行格式化(format),之后操作系统才能够使用这个文件系统。为什么需要进行格式化?

        这是因为每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区进行格式化,以成为操作系统能够利用的文件系统格式(filesystem)。由此我们也能够知道,每种操作系统能够使用的文件系统并不相同。

        举例来说,Windows98以前的微软操作系统主要使用的文件系统是FAT(或FAT16),Windows2000以后的版本有所谓的NTFS文件系统,至于Linux的正统文件系统则为ext2(Linux second Extended file system,ext2fs)。此外,在默认的情况下,Windows操作系统不支持Linux的ext2文件系统。

        传统的磁盘与文件系统应用中,一个分区就只能够被格式化成为一个文件系统,所以我们可以说个文件系统就是一个硬盘分区。但是由于新技术的利用,例如我们常听到的LVM与软件磁盘阵列(software raid ),这些技术可以将一个分区格式化为多个文件系统(例如LVM),也能够将多个分区合成一个文件系统(LVM,RAID)。

        所以说,目前我们在格式化时已经不再说成针对硬盘分区来格式化了,通常我们可以称呼一个可被挂载的数据为一个文件系统而不是一个分区。

那么文件系统是如何运行的呢?

        这与操作系统的文件有关。较新的操作系统的文件除了文件实际内容外,通常含有非常多的属性,

例如Linux操作系统的文件权限(rwx)与文件属性(拥有者、用户组、时间参数等 )文件系统通常会将这两部分的数据分别存放在不同的区块,

  • 文件的权限和属性保存在 inode 中(i 节点)中,每个 inode 都有自己的编号。每个文件各占用一个 inode。不仅如此,inode 中还记录着文件数据所在 block 块的编号;
  • 文件的实际内容保存在 data block 中(数据区块),类似衣柜的隔断,用来真正保存衣物。每个 block 都有属于自己的编号。当文件太大时,可能会占用多个 block 块。

另外,还有一个超级区块(superblock)会记录整个文件系统的整体信息,包括inode与数据区块的总量、使用量、剩余量等。

每个inode与区块都有编号,至于这三个数据的意义可以简略说明如下:

  • 超级区块:记录此文件系统的整体信息,包括inode与数据区块的总量、使用量、剩余量,以及文件系统的格式与相关信息等;
  • inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的区块号码;
  • 数据区块:实际记录文件的内容,若文件太大时,会占用多个区块。

        由于每个inode与数据区块都有编号,而每个文件都会占用一个inode,inode 内则有文件数据放置的区块号码。

        因此,我们可以知道的是,如果能够找到文件的inode 的话,那么自然就会知道这个文件所放置数据的区块号码,当然也就能够读出该文件的实际数据了。这是个比较有效率的做法,因为如此一来我们的磁盘就能够在短时间内读取出全部的数据,读写的性能比较好。

我们将inode与数据区块用图解来说明一下,如图所示:文件系统先格式化出 inode 和 block 块,假设某文件的权限和属性信息存放到 inode 4 号位置,这个 inode 记录了实际存储文件数据的 block 号有 4 个,分别为 2、7、13、15,此时我们的操作系统就能够据此来排列磁盘的读取顺序,可以一口气将四个区块内容读出来,那么数据的读取就如同下图中的箭头所指定的模样。

每个inode都有一个号码,操作系统用inode号码来识别不同的文件。

        Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。表面上,用户通过文件名,打开文件。

实际上,系统内部这个过程分成三步:

  1. 首先,系统找到这个文件名对应的inode号码;
  2. 其次,通过inode号码,获取inode信息;
  3. 最后,根据inode信息,分析 inode 所记录的权限与用户是否符合,找到文件数据所在的block,读出数据

这种数据存取的方法我们称为索引式文件系统(indexed allocation)。

        那有没有其他的常用文件系统可以比较一下?

有的,那就是我们常用的U盘,U盘使用的文件系统一般为FAT格式。

FAT这种格式的文件系统并没有inode存在,所以FAT没有办法将这个文件的所有区块在一开始就读取出来。每个区块号码都记录在前一个区块当中,它的读取方式有点像下面这样;

        上图中我们假设文件的数据依序写入1->7->4->15号这4个区块号码中,但这个文件系统没有办法一口气就知道四个区块的号码,它要一个一个地将区块读出后,才会知道下一个区块在何处。        如果同一个文件数据写入的区块太分散,则我们的磁头将无法在磁盘转一圈就读到所有的数据,因此磁盘就会多转好几圈才能完整地读取到这个文件的内容。

常常会听到所谓的碎片整理吧?需要碎片整理的原因就是文件写入的区块太过于离散,此时文件读取的性能将会变得很差所致。这个时候可以通过碎片整理将同一个文件所属的区块集合在一起,这样数据的读取会比较容易。

因此,FAT的文件系统需要不时地碎片整理一下,那么ext2是否需要磁盘整理呢?

        由于ext2是索引式文件系统,基本上不太需要进行碎片整理。但是如果文件系统使用太久,常常删除、编辑、新增文件时,那么还是可能会造成文件数据太过于离散的问题,此时或许会需要进行整理一下。Linux操作系统上面进行过ext2或ext3文件系统的碎片整理,似乎不太需要。

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

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

相关文章

从“+AI”到“AI+”,时代进入“Next Level”

“创新的速度比创新本身更重要。”埃隆马斯克曾这样说到。 近日,由马斯克所掌舵的特斯拉,在2024年世界人工智能大会上正式推出了第二代Optimus(擎天柱)人形机器人,距离第一代面世,仅过去9个月。 加速升级…

Java 操作 Redis客户端

目录 1.渐进式遍历 2.Java 操作 Redis 客户端 2.1 引入依赖 2.2 配置端口转发 2.3 连接Redis Server 3.基础操作 3.1 set 和 get 3.2 exists 和 del 3.3 keys 3.4 expire 和 ttl 3.5 type 4.字符串操作 4.1 mget 和 mset 4.2 append 4.3 getrange 和 setrange 4.4 incr 和 d…

第5章-组合序列类型

#全部是重点知识,必须会。 了解序列和索引|的相关概念 掌握序列的相关操作 掌握列表的相关操作 掌握元组的相关操作 掌握字典的相关操作 掌握集合的相关操作1,序列和索引 1,序列是一个用于存储多个值的连续空间,每一个值都对应一…

美容师有什么话术技巧?美业人如何提升自己的销售技巧?博弈美业门店管理系统分享经验

作为一名美容师,有一些话术和销售技巧可以帮助你提升服务质量和销售业绩。以下是博弈美业收银系统分享的一些建议: 1.建立信任: 在与客户交流时,表现出真诚、友好和专业的态度。倾听客户的需求,并给予针对性的建议&a…

降Compose十八掌之『见龙在田』| Modifier

公众号「稀有猿诉」 原文链接 降Compose十八掌之『见龙在田』| Modifier 通过前面的文章我们学会了如何使用元素来构建和填充我们的UI页面,但这只完成了一半,元素还需要装饰,以及进行动画和事件响应,这才能生成完整的UI。这…

洛谷 数学进制 7.9

P1100 高低位交换 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 代码一 #include<bits/stdc.h> using namespace std; typedef long long ll; #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)const ll N1e510; char a[N];int main() {IOS;ll a;int b[32]…

关于Qt模型插入最后一行数据中存在未填满的项,点击导致崩溃的解决办法

在使用Qt模型视图框架的时候&#xff0c;你可能会遇见这种情况&#xff1a;给QTableView设置设置模型的时候&#xff0c;网模型里面插入数据&#xff0c;因为数据是一行一行插入的&#xff0c;即要使用model的appandRow函数&#xff0c;但有时候最后一行数据没有填满一行&#…

Java面试八股之MySQL索引B+树、全文索引、哈希索引

MySQL索引B树、全文索引、哈希索引 注意&#xff1a;B树中B不是代表二叉树&#xff08;binary&#xff09;&#xff0c;而是代表平衡&#xff08;balance&#xff09;&#xff0c;因为B树是从最早的平衡二叉树演化而来&#xff0c;但是B树不是一个二叉树。 B树的高度一般在2~…

新火种AI|OpenAI的CEO又有新动作?这次他成立了AI健康公司

作者&#xff1a;一号 编辑&#xff1a;美美 AI技术即将改变医疗健康市场。 就在前两天&#xff0c;人工智能和医疗健康领域迎来了一个重要时刻。OpenAI的CEO萨姆阿尔特曼&#xff08;Sam Altman&#xff09;与Thrive Global的CEO阿里安娜赫芬顿&#xff08;Arianna Huffing…

业务咨询方案 + IT落地方案建议设计

近期&#xff0c;在深入探索咨询方案的实施与落地路径时&#xff0c;体会到了一系列心得与启示&#xff0c;旨在为未来的项目实践提供可借鉴的蓝本。 咨询方案的精髓&#xff0c;在于“业务引领&#xff0c;IT支撑”的核心理念。所以方案的前提是在于业务的梳理&#xff1b; …

已解决 javax.xml.transform.TransformerFactoryConfigurationError 异常的正确解决方法,亲测有效!!!

已解决 javax.xml.transform.TransformerFactoryConfigurationError 异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 一、问题分析 二、报错原因 三、解决思路 四、解决方法 五、总结 博主v&#xff1a;XiaoMing_Java 博主v&#x…

淮北在选择SCADA系统时,哪些因素会影响其稳定性?

关键字:LP-SCADA系统, 传感器可视化, 设备可视化, 独立SPC系统, 智能仪表系统,SPC可视化,独立SPC系统 在选择SCADA系统时&#xff0c;稳定性是一个关键因素&#xff0c;因为它直接影响到生产过程的连续性和安全性。以下是一些影响SCADA系统稳定性的因素&#xff1a; 硬件质量…

百度文心4.0 Turbo开放,领跑国内AI大模型赛道!

百度文心4.0 Turbo开放&#xff0c;领跑国内AI大模型赛道&#xff01; 前言 文心一言大模型 就在7月5日&#xff0c;在2024世界人工智能大会 (WAIC) 上&#xff0c;百度副总裁谢广军宣布文心大模型4.0 Turbo正式向企业客户全面开放&#xff01;这一举动直接引发了业界的关注。那…

【C++知识点总结全系列 (08)】:面向对象编程OOP

这里写目录标题 1、OOP概述(1)面向对象四大特征A.抽象B.封装C.继承D.多态 (2)构造函数A.What&#xff08;什么是构造函数&#xff09;B.Why&#xff08;构造函数的作用&#xff09;C. Which&#xff08;有哪些构造函数&#xff09; (3)析构函数A.What&#xff08;什么是析构函数…

【JS|第21期】JavaScript模块化:深入解析三种文件暴露方式

日期:2024年7月6日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^ 1.01365 = 37.7834;0.99365 = 0.0255 1.02365 = 1377.4083…

全志A527 T527 android13支持usb摄像头

1.前言 我们发现usb摄像头在A527 android13上面并不能正常使用,需要支持相关的摄像头。 2.系统节点查看 我们查看系统是否有相关的节点生成,发现/dev/video相关的节点已经生成了。并没有问题,拔插正常。 3.这里我们需要查看系统层是否支持相关的相机, 我们使用命令进行…

【INTEL(ALTERA)】为什么我使用 PIO 边缘捕获中断的 Nios® II 设计不能正常工作?

目录 说明 解决方法 说明 当用户选择了不正确的边缘捕获设置&#xff0c;从而阻止触发中断时&#xff0c;可能会出现此问题。 在 PIO&#xff08;并行 I/O&#xff09;英特尔 FPGA IP内核中&#xff0c;如果“启用单个位设置/清除”选项被关闭&#xff0c;则将任何值写入边…

vue实例和容器的一夫一制——04

//准备容器 <div classapp> <h1>{{mag}}</h1> </div> //准备容器 <div classapp> <h1>{{mag}}</h1> </div> //准备容器 <div classapp2> <h1>{{name}}</h1> </div> <script> // 验…

基于Java+SpringMvc+Vue技术的药品进销存仓库管理系统设计与实现系统(论文7000字参考+源码+LW+部署讲解)

博主介绍&#xff1a;硕士研究生&#xff0c;专注于信息化技术领域开发与管理&#xff0c;会使用java、标准c/c等开发语言&#xff0c;以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年&#xff0c;拥有近12年的管理工作经验&#xff0c;拥有较丰富的技术架…

Java虚拟机面试题汇总

目录 1. JVM的主要组成部分及其作用&#xff1f; 1.1 运行时数据区划分&#xff1f; 1.2 哪些区域可能会发生OOM&#xff1f; 1.3 堆和栈的区别&#xff1f; 1.4 内存模型中的happen-before是什么&#xff1f; 2. HotSpot虚拟机对象创建流程&#xff1f; 2.1 类加载过程…