Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >xv6(8) 磁盘及分区理论

xv6(8) 磁盘及分区理论

原创
作者头像
rand_cs
发布于 2023-12-06 08:19:52
发布于 2023-12-06 08:19:52
3490
举报
文章被收录于专栏:计算机学习计算机学习

磁盘及分区理论

温彻斯特硬盘

今天我们所使用的机械硬盘实质上都是温彻斯特硬盘,最早是在 1973 年由 IBM 研制的一种新型硬盘 IBM 3340。它使用了一种了不起的技术:磁头不与盘片接触,只有不予接触才可能有着更高的转速而且磁盘才不易损坏。至于这个名字的来历,是因为 IBM3340 拥有两个 30MB de 存储单元,而当时一种很有名的 “温彻斯特来福枪” 的口径和装药也恰好包含了两个数字 “30”;于是这种硬盘的内部代号就被定为 “温彻斯特”。

我们来看看这种硬盘的结构图:

盘片盘面磁头

上图中光盘状的东西就是盘面,有两个面叫做盘面,上面分布着磁性介质。每个盘面都有个磁头,用来读写盘面上的数据。

磁道扇区

上图中灰色的圆环就是磁道,磁道上的绿色的一段弧为扇区,扇区是磁盘读写的基本单位,通常为512字节

柱面

每个磁道由外向里从 0 编号,不同盘面上编号相同的磁道组成的圆柱称为磁盘的柱面

相关计算

硬盘容量

$容量 = 盘片数 \times 2 \times 磁道数 \times 扇区数 \times 512$

访问时间

寻道时间

将磁头移动到相应的磁道上所需要的时间

旋转时间

将目标扇区的第一位移动到磁头下面所需要的时间,计算时一般用平均旋转时间即旋转半圈需要的时间。

传送时间

也就是磁盘旋转读取数据的时间,一般也取决于旋转速度。

看几个经典例题:

寻道时间:$6ms$

平均旋转时间:$\frac{60}{10000} \times 1000 \div 2 = 3ms$

传送时间:这里给出了传输速率那就直接用他给的这个速率来算:$4 \div 1024 \div 20 \times 1000 \approx 0.2ms$

所以总时间再加上磁盘控制器的延迟则为:$6+3+0.2+0.2=9.4ms$

寻址

CHS

CHS 即 Cylinder(柱面)、Heads(磁头)、Sector(扇区),使用这三个参数来定位一个扇区,柱面参数使磁头臂移动到某个半径,磁头参数确定是哪个盘面上的磁道,扇区参数则确定该磁道上某个扇区的具体位置

柱面,磁头一般都是从 0 开始编号,扇区从 1 开始编号

早期 CHS 这个三元组用 24 位来表示,前 10位 表示柱面,中间 8 位表示磁头,后面 6 位表示扇区,最大寻址空间为 $2^{10}\times2^8\times2^6\times512\div2^{30} = 2^3=8GB$。

LBA

LBA(Logical Block Addressing),逻辑块地址实际上就是 CHS 的转化,将三元组转换为一维的线性地址。转换方式如下:

$CHS = (C,H,S)$

$LBA = (C\times磁头数+H)\times扇区数+(S-1)$

最后加上 $S - 1$ 是因为 $LBA$ 从 $0$ 开始编号,这个转换只适用于每个磁道扇区数一样多的磁盘,现在的磁盘都不是这样的了,有 LBA 与 CHS 有更复杂的转换机制,这都不是我们需要考虑的了,硬件厂商已经为我们做好了。

FAQ

每个磁道的扇区数一样多吗?

前面也回答了,不是,早期的硬盘每个磁道的扇区数是一样的,外磁道和内磁道的记录密度是不等的,外磁道稀疏内磁道密集,这也造成了很多浪费。因此后来出现了 ZBR(Zone Block Record),采用等密度结构,即外磁道的扇区数多于内磁道的扇区数,如下图所示:

显然,因为磁道的扇区数可能不一样,逻辑地址和物理地址之间的转换将更加复杂精细,这一部分都是由磁盘控制器来做的,根据各个磁盘的特性设置芯片来具体工作,不需要我们认为操心了解即可。

另外硬盘的旋转速度一般是保持恒定的,而外磁道的扇区数又要多于内磁道,所以单位时间内扫过的扇区数明显外磁道是要多于内磁道的,因此外磁道的数据传输速度是要快于内磁道的。

扇区信息

扇区一般由两部分组成,一部分是头区域,另一部分是数据区域。数据区域不用多说,就是存储数据的部分,而头区域则包括包含驱动器和控制器使用的信息,具体来说就是一些地址标识,缺陷标识以及错误检测和纠正信息。

寻找相应的扇区就是依靠扇区记录的头信息来寻找的,期间磁盘控制器需要检验这些头部信息和传输数据,需要花费一定时间才能访问下一个扇区,所以扇区号的物理排列不应是连续的,如果连续的话有可能刚处理完当前扇区,磁头已经转到之后的好几个扇区了,再想处理下一个扇区的话得等待许久。所以磁盘出厂时一般都会做低级格式化,跳跃着将扇区编号,给检验传输等留出足够的时间。而高级格式化就是给磁盘分区制作文件系统

扇区、块/簇、页

扇区:硬盘最小的读写单元

块/簇:多个扇区组合在一起为一个块,一般是 $2^n$ 个扇区,是操作系统对硬盘读写最小单元

页:操作系统与内存之间操作的最小单元,一般 $4KB$

MBR分区

关于分区前面说过一些,这里再仔细讲讲。这儿主要讲的是传统的 $MBR$ 分区。

$MBR(Main Boot Record)$主引导记录,它位于整个硬盘的第一个扇区即 0 柱面,0 磁头,1 扇区(前面说过 $CHS$ 方式以 1 开始编号)。分为三部分:

  1. 引导程序和一些参数,$446$ 字节
  2. 分区表 $DPT$,$64$ 字节
  3. 结尾标记 $0x55$ 和 $0xAA$,2字节

分区表

分区表有 4 个表项,每个表项 16 字节,结构如下:

扩展分区

分区表只有 4 个表项,也就是说只能原生支持 4 个分区,现在来说 4 个分区远远不够,于是有了扩展分区。

扩展分区是可选项可有可无,有最多只有一个,为了区分其他的三个分区称为主分区

扩展分区可以分为多个子扩展分区,子扩展分区就像是一个单独的硬盘,最开始的扇区为扩展引导扇区 EBR,结构同 MBR,只是分区表只用了两项,第一项表示该子扩展分区的逻辑分区,第二项表示下一个子扩展分区,其他两项为 0 。因此扩展分区就像是构建了一个单链表,将各个子扩展分区连起来

关于 MBR,EBR 的分区表项中起始偏移扇区注意以下几点:

  1. MBR 的分区表项中,起始偏移扇区的基准为 0
  2. EBR 描述逻辑分区的起始偏移扇区基准为该子扩展分区的地址,也就是上一个子扩展分区中 EBR 记录的下一个子扩展分区的偏移扇区
  3. EBR 描述下一个子扩展分区的起始偏移扇区基准为总扩展分区地址,也就是 MBR 中记录的扩展分区的偏移扇区

来看一看一个硬盘的分区布局图:

OBR(OS Boot Record),位于主分区/逻辑分区的第一个扇区,称为操作系统引导扇区,还记得分区表项中第 0 个字节吗,如果为 0x80 则说明该分区有 OBR 存在操作系统,能够引导是为活动分区

MBR,EBR,OBR 这三个不要弄混淆了,MBR 位于整个磁盘的第一个扇区,里面的分区表描述的是主分区和总扩展分区。而 EBR 位于子扩展分区的第一个扇区,分区表描述的是是逻辑分区和下一个子扩展分区。OBR 位于实际分区的第一个扇区,它是操作系统的引导程序,用来加载操作系统

但实际上述讲述的这些规则 xv6 一个都没用上,想想 xv6 的启动,简化了很多很多,基本不沾边。

FAQ

每个分区最大容量是多少?

分区表项中最后 4 字节表示容量,因为只用了 4 字节来表示总的扇区数,如果每个扇区的容量为 512 字节的话,则每个分区最大容量为:

$$2^{32}\times512 \div 2^{40} = 2TB$$

空闲扇区

分区时不能跨柱面,也就不能跨磁道,而 MBR,EBR 需要占用一个扇区,分区不会与它们处于同一个磁道,因此分区通常会偏移一个磁道的大小,期间这没用的扇区就是空闲扇区。

GPT分区

传统的 MBR 分区有许多限制,比如只能支持 4 个主分区,而且每个分区大小不能超过 2TB 等等,所以后来提出了一种新的方案 GPT,它有着以下优点:

  1. 每个硬盘的分区数分区大小几乎没有限制
  2. 分区表有备份,磁盘首位分别保存了一份相同的分区表
  3. 关键数据结构有循环冗余检测
  4. 使用全局标识符(GUID)来标识分区类型
  5. 每个分区有名称

使用 GPT 分区的磁盘叫做 GPT 磁盘,其结构布局如下所示:

保护性MBR

位于 LBA0,第 0 个扇区,为了兼容性考虑还是存储的传统的 MBR,叫做保护性 MBR,只有一个类型为 0xEE 的分区表项表示该磁盘使用 GPT 分区,保护性 MBR 的主要作用是保护不能识别 GPT 分区的磁盘工具对其进行操作

分区表头

位于 LBA1,第 1 个扇区,主要结构如下:

分区表项

位于 LBA2—LBA33 ,结构如下:

各个字节表示什么应该很清楚了,就不具体解释了,LBA33 之后就是各个具体的分区,然后磁盘最后 33 个扇区是倒着存放的分区表头和分区表。这就是整个 GPT 磁盘的布局,再回头去看看整个分区布局图,应该会很清晰了。

好了本节就这样吧,有什么问题还请批评指正,也欢迎大家来同我讨论交流学习进步。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
理解Linux文件系统——通过磁盘结构
需要明确的是文件系统不是指Linux本身,而是Linux操作系统中用于管理和组织文件的一种机制。
再睡一下就好
2025/06/11
1020
理解Linux文件系统——通过磁盘结构
深入了解linux系统—— 文件系统
很简单,我们被打开的文件在操作系统中被管理起来,而没有被打开的文件是存储在磁盘当中的。
星辰与你
2025/05/23
1710
深入了解linux系统—— 文件系统
理解文件系统/inode的概念/磁盘/软硬链接
文件操作的本质是进程与被打开的文件之间的关系。那么没有被打开的文件怎么办?OS如何去管理它们?没有被打开的文件,安安静静地在磁盘里面放着,磁盘中存在大量的文件,这些没有被打开的文件,被OS静态管理起来,方便随时打开。管理被打开文件,叫做文件系统,虚拟文件系统,管理没有被打开的文件,也称为文件系统,躺着的文件系统。
二肥是只大懒蓝猫
2023/03/30
1.6K0
理解文件系统/inode的概念/磁盘/软硬链接
Linux基础IO【深入理解文件系统】
文件分为 内存文件 和 磁盘文件,内存文件 相关知识前面已经介绍过了,接下来谈谈 磁盘文件,这是一个特殊的存在,因为它不属于冯诺依曼体系,而是位于专门的存储设备中,因此 磁盘文件 存在的意义是将文件更好的存储起来,以便后续对文件进行访问。在高效存储 磁盘文件 这件事上,前辈们研究出了十分巧妙的管理手段及操作方法,而这些手段和方法共同构成了我们今天所谈的 文件系统
北 海
2023/07/01
2430
Linux基础IO【深入理解文件系统】
硬盘分区 mbr gpt_磁盘阵列如何分区
硬盘的物理结构是比较复杂的,这里我们只需要知道最常用到的几个术语即可,也就是chs寻址中所涉及到的结构
全栈程序员站长
2022/09/22
3.6K0
硬盘分区 mbr gpt_磁盘阵列如何分区
硬盘的物理结构与磁盘分区原理
首先简单认识一下硬盘的物理结构,总体来说,硬盘结构包括:盘片、磁头、盘片主轴、控制电机、磁头控制器、数据转换器、接口、缓存等几个部分。所有的盘片(一般硬盘里有多个盘片,盘片之间平行)都固定在一个主轴上。在每个盘片的存储面上都有一个磁头,磁头与盘片之间的距离很小(所以剧烈震动容易损坏),磁头连在一个磁头控制器上,统一控制各个磁头的运动。磁头沿盘片的半径方向动作,而盘片则按照指定方向高速旋转,这样磁头就可以到达盘片上的任意位置了。
用户9736681
2022/05/11
2.3K0
硬盘的物理结构与磁盘分区原理
磁盘分区也是隐含了技术技巧的
在前文《磁盘开篇:扒开机械硬盘坚硬的外衣!》中,我们了解了机械硬盘的物理构造,是由磁盘面,磁道、扇区等更小的单位组成的,如下图:
开发内功修炼
2022/03/28
4160
磁盘分区也是隐含了技术技巧的
终于知道为什么片子太多会导致硬盘变慢了
硬盘的种类主要是SCSI 、IDE 、以及现在流行的SATA等;任何一种硬盘的生产都要一定的标准;随着相应的标准的升级,硬盘生产技术也在升级;比如 SCSI标准已经经历了SCSI-1 、SCSI-2、SCSI-3;其中目前咱们经常在服务器网站看到的 Ultral-160就是基于SCSI-3标准的;IDE 遵循的是ATA标准,而目前流行的SATA,是ATA标准的升级版本;IDE是并口设备,而SATA是串口,SATA的发展目的是替换IDE;
架构师修行之路
2021/06/09
1.6K0
终于知道为什么片子太多会导致硬盘变慢了
【linux学习指南】Ext系列文件系统(一)理解硬件磁盘的逻辑结构&&CHS&&LBA地址
⽂件=内容+属性都是数据,⽆⾮就是占据那⼏个扇区的问题!能定位⼀个扇区了,能不能定位多个扇区呢?
学习起来吧
2025/01/01
1740
【linux学习指南】Ext系列文件系统(一)理解硬件磁盘的逻辑结构&&CHS&&LBA地址
【Linux】理解文件系统——软硬链接
我们之前讨论的都是进程和被打开文件的关系,而如果一个文件是没有被打开呢?没有被打开的文件操作系统如何管理?
平凡的人1
2023/10/15
5000
【Linux】理解文件系统——软硬链接
【Linux】磁盘结构和文件系统
磁盘是计算机存储系统的核心部件之一,主要用于长期存储数据。磁盘的基本概念、物理结构和逻辑组织形式直接影响着其性能和使用效率。 下面的图片是一个磁盘:
用户11305458
2025/01/09
1850
【Linux】磁盘结构和文件系统
【Linux系统IO】四、文件系统
​ 之前我们学习的都是进程与被打开文件的关系,但是那些没有被打开的文件呢,它们需不需要被管理呢 ❓❓❓
利刃大大
2025/03/06
1390
【Linux系统IO】四、文件系统
【Linux】基础IO——文件系统
磁盘计算机上唯一的一个机械设备,同时它还是外设 机械磁盘很便宜,虽然效率会慢一些,所以企业一般使用机械磁盘,因为便宜 磁盘不仅仅外设,还是一个机械设备(盘片、磁头),所以磁盘一定非常慢
lovevivi
2023/05/04
5330
【Linux】基础IO——文件系统
磁盘开篇:扒开机械硬盘坚硬的外衣!
刚看了一下,上一次我分享完内存篇的时候是2019年12月25号。没想到在我酝酿和打磨磁盘篇的这段时间里,我们的生活发生了如此大的变化。人类一直觉得自己是地球上所有生物的主宰,没想到这次被一个小小的病毒狠狠地咬了一口,而且还在欧美继续猖狂。也许是人类安逸太久了,早已经没有原始社会那种需要战战兢兢过日子的心态,在病毒初见端倪的时候,并没有得到足够的重视。甚至中国已经和病毒进行着全国大战役的时候,欧美的同学们还在开开心心的闲逛,聚会。本来他们有足够多的时间和机会的,结果却演变到了今天这个局面。我想说的一句是,人类在宇宙中能够存在,本来就已经是一个极低概率的事件了,宇宙中的各种射线,上千度万度的高温,都是脆弱的人类生命的不可承受之重。人类现在已经把宇宙观测到放大到星系团了暂时也没发现其它文明存在。不管自己多牛逼,始终还是要保存一颗敬畏自然、敬畏其它物种的心,且行且珍惜。
开发内功修炼
2022/03/28
6990
磁盘开篇:扒开机械硬盘坚硬的外衣!
GPT概述
全局唯一标识分区表(GUID Partition Table,缩写:GPT)是一个实体硬盘的分区结构。它是可扩展固件接口标准的一部分,用来替代BIOS中的主引导记录分区表。传统的主启动记录 (MBR) 磁盘分区支持最大卷为 2.2 TB (terabytes) ,每个磁盘最多有 4 个主分区(或 3 个主分区,1 个扩展分区和无限制的逻辑驱动器)。与MBR 分区方法相比,GPT 具有更多的优点,因为它允许每个磁盘有多达 128 个分区,支持高达 18 千兆兆字节 (exabytes,1EB=10^6TB) 的卷大小,允许将主磁盘分区表和备份磁盘分区表用于冗余,还支持唯一的磁盘和分区 ID (GUID)。 与 MBR 分区的磁盘不同,GPT的分区信息是在分区中,而不象MBR一样在主引导扇区。为保护GPT不受MBR类磁盘管理软件的危害,GPT在主引导扇区建立了一个保护分区 (Protective MBR)的MBR分区表,这种分区的类型标识为0xEE,这个保护分区的大小在Windows下为128MB,Mac OS X下为200MB,在Window磁盘管理器里名为GPT保护分区,可让MBR类磁盘管理软件把GPT看成一个未知格式的分区,而不是错误地当成一个未分区的磁盘。另外,GPT 分区磁盘有多余的主要及备份分区表来提高分区数据结构的完整性。
用户5807183
2019/09/16
1.4K0
GPT概述
[操作系统] 文件系统基础:磁盘的工作原理及组成
盘片并不是光滑的,可以用磁铁的工作原理来想象,磁铁有南北极,可以用来代表二进制中的0和1,所以无数个小的磁铁在盘片表面汇聚,用不同的二进制序列来形成数据,然后通过磁头来读取数据,这样就是磁盘表面的工作原理。
DevKevin
2025/02/21
1380
[操作系统] 文件系统基础:磁盘的工作原理及组成
linux 磁盘分区与格式化
s=硬件接口类型(sata/scsi),d=disk(硬盘),a=第1块硬盘(b,第二块),2=第几个分区 /dev/hd h=IDE硬盘 /dev/hdd3 /dev/vd v=虚拟硬盘 /dev/vdf7
星哥玩云
2022/09/15
4.4K0
linux学习之硬盘的存储原理和内部架构
首先,让我们看一下硬盘的发展史: 1956年9月13日,IBM的IBM 350 RAMAC(Random Access Method of Accounting and Control)是现代硬盘的雏形,整个硬盘需要50个直径为24英寸表面涂有磁浆的盘片,它相当于两个冰箱的体积,不过其存储容量只有5MB。 1971年,IBM开始采用一种名叫Merlin的技术生产硬盘,这种技术据称能使硬盘头更好地在盘片上索引。 1973年,IBM 3340问世,主流采用采用红色。这个大家伙每平方英寸存储1.7MB的数据,在当
汤高
2018/01/11
3.1K0
linux学习之硬盘的存储原理和内部架构
磁盘存储和文件系统管理
磁盘存储和文件系统管理 1. 磁盘结构 1.1设备文件 1. 设备类型: 2. 磁盘设备的设备文件命名: 3. 虚拟磁盘: 4. 不同磁盘标识:a-z,aa,ab… 5. 同一设备上的不同分区:1,2, ... 6. 创建设备文件 7. 工具 dd 常用选项 示例 demo 8. hexdump指令 1.2 硬盘类型 1.硬盘接口类型 2. 服务器硬盘大小 3. 机械硬盘和固态硬盘 4. 硬盘存储术语 CHS CHS LBA(logical block addressing) 5. 识别SSD和机械硬盘类型
以某
2023/03/07
1.4K0
磁盘存储和文件系统管理
SD卡中FAT32文件格式高速入门(图文具体介绍)
硬件:本文SD卡为Kingston 4GB,FAT32格式,簇大小4KB,每扇区512字节。
全栈程序员站长
2022/07/13
3.3K0
SD卡中FAT32文件格式高速入门(图文具体介绍)
相关推荐
理解Linux文件系统——通过磁盘结构
更多 >
LV.3
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档