当前位置: 首页 > java >正文

linux-----------Ext系列⽂件系统(上)

1.理解硬盘

1-1 磁盘、服务器、机柜、机房
机械磁盘是计算机中唯⼀的⼀个机械设备
磁盘--- 外设
容量⼤,价格便宜
1-2 磁盘物理结构
1-3 磁盘的存储结构
扇区:是磁盘存储数据的基本单位,512字节,块设备
如何定位⼀个扇区呢?
可以先去定位一个磁头然后确认磁头的时候再去决定要去访问那个磁道然后就能确定一个扇区
采用 CHS地位定址
⽂件 = 内容+属性 都是数据,⽆⾮就是占据那⼏个扇区的问题!能定位⼀个扇区了,能不能定位多个扇 区呢?
扇区是从磁盘读出和写⼊信息的最⼩单位,通常⼤⼩为 512 字节。
磁头(head)数:每个盘⽚⼀般有上下两⾯,分别对应1个磁头,共2个磁头
磁道(track)数:磁道是从盘⽚外圈往内圈编号0磁道,1磁道...,靠近主轴的同⼼圆⽤于停靠磁
头,不存储数据
柱⾯(cylinder)数:磁道构成柱⾯,数量上等同于磁道个数
扇区(sector)数:每个磁道都被切分成很多扇形区域,每道的扇区数量相同
圆盘(platter)数:就是盘⽚的数量
磁盘容量=磁头数 × 磁道(柱⾯)数 × 每道扇区数 × 每扇区字节数
细节:传动臂上的磁头是共进退的(这点⽐较重要,后⾯会说明)
柱⾯(cylinder),磁头(head),扇区(sector),显然可以定位数据了,这就是数据定位(寻址)⽅ 式之⼀,CHS寻址⽅式
📌 CHS寻址
对早期的磁盘⾮常有效,知道⽤哪个磁头,读取哪个柱⾯上的第⼏扇区就可以读到数据了。
但是CHS模式⽀持的硬盘容量有限,因为系统⽤8bit来存储磁头地址,⽤10bit来存储柱⾯地
址,⽤6bit来存储扇区地址,⽽⼀个扇区共有512Byte,这样使⽤CHS寻址⼀块硬盘最⼤容量
为256 * 1024 * 63 * 512B = 8064 MB(1MB = 1048576B)(若按1MB=1000000B来算就是
8.4GB
1-4 磁盘的逻辑结构
1-4-1 理解过程
磁带上⾯可以存储数据,我们可以把磁带“拉直”,形成线性结构
那么磁盘本质上虽然是硬质的,但是逻辑上我们可以把磁盘想象成为卷在⼀起的磁带,那么磁盘的逻 辑存储结构我们也可以类似于:
这样每⼀个扇区,就有了⼀个线性地址(其实就是数组下标),这种地址叫做LBA

2 文件系统概念

2-1 引入块概念

大家都知道一个扇区是512个字节但是操作系统在读取文件的时候不回去一个扇区一个扇区的去读取这样效率会太低了而这个时候操作系统会以块为单位一块一块的去读取而一个块就等于8个扇区也就是4kb

每个扇区都有lba这样的话每个块的地址我们也能算出来

知道LBA:块号 = LBA/8
知道块号:LAB=块号*8 + n. (n是块内第⼏个扇区)
2-2 引入分区概念

其实磁盘也可以被分成许多区的就比如我们日常生活中常见的windos中我们也给磁盘分成c盘和d盘,那个本质上就是分区,分区实质上说就是对磁盘的格式化。

柱⾯是分区的最⼩单位,我们可以利⽤参考柱⾯号码的⽅式来进⾏分区,其本质就是设置每个区的起 始柱⾯和结束柱⾯号码。 此时我们可以将硬盘上的柱⾯(分区)进⾏平铺,将其想象成⼀个⼤的平 ⾯,如下图所⽰
📌 注意:
柱⾯⼤⼩⼀致,扇区个位⼀致,那么其实只要知道每个分区的起始和结束柱⾯号,知道每
⼀个柱⾯多少个扇区,那么该分区多⼤,其实和解释LBA是多少也就清楚了.
2-3 引入inode概念
Inode(Index Node) 是类 Unix 文件系统(如 ext4、XFS)中用于描述 文件元数据的数据结构,其核心特性如下:
  • 唯一标识:每个文件/目录对应一个唯一的 inode 编号(类似身份证号)。

  • 非易失性:inode 信息持久化存储在硬盘中。

  • 与文件名解耦:文件名只是 inode 的“别名”,删除文件实际上是删除 inode 与文件名的链接。

  • 个典型的 inode 包含以下元数据(以 ext4 为例):

    字段描述大小(字节)
    文件类型普通文件、目录、符号链接等2
    权限模式rwx 权限(用户/组/其他)2
    所有者 UID文件所属用户 ID4
    所属组 GID文件所属组 ID4
    大小文件实际字节数8
    时间戳创建、修改、访问时间12
    链接计数硬链接数量4
    数据块指针直接/间接/二次间接指针(见第3节)60
    其他扩展属性如 ACL、加密信息等可变

    注:不同文件系统的 inode 结构可能略有差异。

http://www.xdnf.cn/news/5234.html

相关文章:

  • # Java List完全指南:从入门到高阶应用
  • 栈应用:辅助站(c++)
  • C#异步Task,await,async和Unity同步协程
  • 玩转Docker | 使用Docker部署Note Mark笔记应用程序
  • [架构之美]Spring Boot集成MyBatis-Plus高效开发(十七)
  • 求两个正整数的最大公约数和最小公倍数:方法1:辗转相除法
  • 01 | 大模型微调 | 从0学习到实战微调 | AI发展与模型技术介绍
  • STM32实现九轴IMU的卡尔曼滤波
  • 如何在postman使用时间戳
  • Windows下的临界写法
  • 回文数(9)
  • 气象大模型光伏功率预测中的应用:从短期,超短期,中长期的实现与开源代码详解
  • C++GO语言微服务之图片、短信验证码生成及存储
  • 【沉浸式求职学习day35】【Tomcat安装、配置】【Http简述】
  • Linux指令入门:DevOps与SRE视角
  • SDC命令详解:使用all_outputs命令进行查询
  • 轻松制作高质量视频,实时生成神器LTX-Video重磅登场!
  • 睿思量化小程序
  • LeetCode 88. 合并两个有序数组 | Python 最简写法 + 实战注释
  • Java面向对象
  • bcm5482 phy 场景总结
  • 技嘉主板BIOS升级
  • 树 Part 4
  • D. Apple Tree Traversing 【Codeforces Round 1023 (Div. 2)】
  • NX949NX952美光科技闪存NX961NX964
  • 短剧 CPS 分销系统开发搭建,开启流量变现新征程
  • 数字签名与证书
  • 北斗终端设备应用
  • 【含文档+源码】基于SpringBoot的新能源充电桩管理系统的设计与实现
  • ODA服务器计算节点本地硬盘状态异常的处理