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

Ext系列文件系统(一)

1.理解硬件

磁盘,服务器,机柜,机房

机器磁盘是计算机中的唯一机械设备

磁盘--外设,速度慢,容量大,价格便宜

 

磁盘是由一颗一颗极小磁铁组成,磁铁有正负极就可以用正负极来表示0于1,则一个磁盘就可以存储很多个0与1,以前的光盘能放电影就是上面的0与1构成信息。

2.磁盘的物理结构

3.磁盘的存储结构

扇区:磁盘存储数据的基本单位,512字节,块设备

定位一个扇区方法:可以先定位磁头(Header),接着是要访问哪一个柱面/磁道(Cylinder)

最后定位一个扇区(Sector)

4.CHS地址定位

文件=内容+属性 都是数据,会占用几个扇区,能定位一个扇区,也能定位多个扇区。

扇区是从磁盘读出读出和写入信息最小单位,通常大小为512字节。

磁头数:每一个磁盘一般都有上下面,分别对应1个磁头,一共有俩个磁头

磁道数:磁道是从盘片外圈往内圈编号0磁道,1磁道依次递增,靠近主轴的同心圆用于停靠磁头,不存储数据。

柱面数:磁道构成柱面,数量等同于磁道个数

扇区数:每个磁道都被切分成很多扇形区域,每道的扇区数量相同

圆盘数:盘片的数量

磁盘容量=磁头数*磁道数*每道扇区数*每扇区字节数

补充:传动臂上的磁头是共进退的

柱面,磁头,扇区三个已知就可以定位数据了,这就是数据定位方法之一,CHS寻址方式。

关于CHS寻址:对早期的磁盘非常有效,知道用哪个磁头,读取那个柱面上的第几个扇区就可以读取到数据了。但是CHS模式支持的硬盘容量有限,因为系统用8bit来存储磁头地址,用10bit来存储柱面地址,用6bit来存储扇区地址,而一个扇区共有512Byte,就可以计算出寻址一块硬盘最大容量为2^8*2^10*2^6*512B=10485760MB(1MB=1048576B,大概是10GB)

5.磁盘的逻辑结构

磁带上面可以存储数据结构,但是逻辑上可以把磁带拉直,变成一个线性结构,那么磁带的逻辑存储结构也可以类似于:

那么磁盘的本质虽然是硬质的,但是逻辑上可以把磁盘想象成卷在一起的磁带,那么磁盘的逻辑存储结构可以类似于一数组形式,每一个扇区可以用下标访问,这种地址也叫LBA

柱面是一个逻辑上的概念,每一面上半径相同的磁道在逻辑上构成柱面。

所以,磁盘物理上分了很多面,但是可以看成:磁盘整体由柱面卷起来的。

6.磁盘的真实情况

磁道:某一盘面某一个盘面展开:

柱面:

整个磁盘所有盘面的同一个磁道,即柱面展开:

整盘:

由此要寻址一个扇区:先找到那一个柱面,在确定柱面内哪一个磁道,在确定扇区。每一个扇区都有一个下标,叫做LBA(Logical Block Adress)地址,其实就是线性地址。

7.CHS&&LBA地址

CHS转成LBA:

磁头数*每磁道扇区数=单个柱面的扇区总数

LBA=柱面号C*单个柱面的扇区总数+磁头号H*每磁道扇区数+扇区号S-1

扇区号通常是从1开始的,而在LBA中,地址是从0开始的

柱面和磁道都是从0开始编号的

总柱面,磁道个数,扇区总数等信息,在磁盘内部会自动维护,上层开机时会获取到这些参数。

LBA转成CHS:

柱面号C=LBA//(磁头数*每道扇区数)

磁头号H=(LBA%(磁头数*每道扇区数))//每道扇区数

扇区号S=(LBA%每道扇区数)+1

//表示除取整数

所以对于磁盘使用者来说,根本不关心CHS地址,而是直接使用LBA地址,磁盘内部会自己转换。

从现在开始,磁盘就是一个元素是扇区的一位数组,数组的下标就是每一个扇区的LBA地址。OS使用磁盘可以用一个数字访问磁盘扇区。

8.引入文件系统

引入块概念

硬盘是典型的块设备,操作系统读取硬盘数据的时候,其实是不会一个个扇区的读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个块(block)。

硬盘的每个分区是被划分为一个一个的块,一个块的大小是由格式化的时候确定的,并且不可以更改,最常见的是4KB,即连续八个扇区组成一个块。块是文件存取的最小单位。

磁盘可以看成一个三维数组,三维数组再看出一个一维数组,数组下标就是LBA,每个元素都是扇区

每个扇区都有LBA,那么8个扇区一个块,每一个块的地址也可以计算出来。

已知LBA:块号=LBA/8

已知块号:LBA=块号*8+n(n是第几块扇区)

引入分区的概念

磁盘可以被分成多个分区,以windows观点来看,可能会有一块磁盘并且将它分成CDE盘,则C,D,E就是分区,分区实质上说就是对硬盘的一种格式化。但是Linux的设备都是以文件形式存在,则如何分区呢?

柱面是分区的最小单位,可以利用参考柱面号码的方式来进行分区,本质就是设置每个区的起始柱面和结束柱面的号码。此时可以将硬盘上的柱面进行平铺,想象成一个大平面,

 

相关文章:

  • Java 第八章 异常(2)
  • 奇安信春招一面面试题
  • IntelliJ IDEA中Maven配置全指南
  • 【Java消息队列】应对消息丢失、重复、顺序与积压的全面策略
  • 【相聚青岛】人工智能与材料国际学术会议即将召开
  • Plant Simulation培训教程-AGV配送物流仿真模块
  • 探秘Transformer系列之(4)--- 编码器 解码器
  • c++:模板进阶
  • 数据结构者
  • 【Python 专题】数据结构 树
  • 基于Flask的京东商品信息可视化分析系统的设计与实现
  • QSNCTF做题记录-应急响应
  • 初级银行从业考试真题
  • alt+tab切换导致linux桌面卡死的急救方案
  • mysql实时同步到es
  • 介绍一下Promise
  • 基于ffmpeg+openGL ES实现的视频编辑工具(一)
  • 鸿蒙与跨端迁移的重要性
  • Day15-后端Web实战-登录认证——会话技术JWT令牌过滤器拦截器
  • 扣子(coze)-又又又又又又进行了计费规则调整
  • 什么网站权重快/百度下载链接
  • 福州专业做网站/百度的推广广告
  • 杭州做企业网站/市场营销手段13种手段
  • 做旅游网站需要的背景/推广赚钱
  • 网站维护需要/电商项目策划书
  • 国外做的比较的ppt网站有哪些/百度竞价是什么工作