
观众老爷们大家好 这里是邪修KING的独家频道 本文属于系列Linux系统篇 ------文件系统 一起学Linux的小伙伴可订阅专栏: Linux系统篇
我们每天在电脑上存储文档、照片、视频,接触的都是 C 盘、D 盘里的文件和文件夹。但你有没有想过,这些数据最终落在硬盘上,究竟是怎么存放的?系统又是怎么精准找到某一个文件的?
很多人听过磁道、扇区、柱面这些名词,但始终一知半解。本文就从机械硬盘的物理结构讲起,一步步拆解 CHS 和 LBA 两种寻址方式,带你看懂硬盘最底层的数据定位逻辑。
一、机械硬盘的物理构成
机械硬盘(HDD)是计算机中为数不多的纯机械设备,依靠磁效应来存储数据。它最大的特点是容量大、单价低,但读写速度慢,和现在常用的固态硬盘(SSD)形成互补。
整个硬盘的核心部件可以分为三类:盘片、磁头组件、主轴。
1. 盘片(Platter)
盘片是数据真正的载体,就像一张圆形的光盘,表面涂有磁性材料。一个硬盘内部可以叠放多张盘片,每张盘片的上下两个盘面都可以存储数据,每个盘面对应一个磁头。
2. 磁头与磁头臂
每个盘面都配有一个磁头,就像写字的笔尖,负责在盘片上读取和写入数据。
⚠️ 一个非常重要的特性:所有磁头都固定在同一个磁头臂上,共进退。也就是说,当一个磁头移动到某一圈磁道上时,其他所有盘面的磁头,都会对准相同半径的位置。
3. 主轴
主轴带动所有盘片高速旋转,我们常说的 7200 转、5400 转,指的就是主轴每分钟的转速。转速越高,读写的延迟就越低。
二、磁盘的存储结构:磁道、扇区、柱面
盘片是圆形的,数据不可能随便乱堆,它被划分成了一层层规整的结构,就像我们在纸上画格子写字一样。

1. 磁道(Track)
盘片上一圈圈的同心圆,就是磁道。从外圈开始编号,0 磁道、1 磁道、2 磁道...... 越往内圈半径越小。最靠近主轴的一圈是磁头停靠区,不存储数据。
可以类比成老式唱片上的一圈圈纹路,每一圈就是一条磁道。
2. 扇区(Sector)
把一个磁道均匀切成一个个扇形的小块,每一块就是一个扇区。
- 扇区是磁盘物理读写的最小单位,传统机械硬盘的扇区大小固定为 512 字节。
- 每个磁道上的扇区数量是相同的。
可以类比成把披萨切成均等的小块,每一块披萨就是一个扇区。
3. 柱面(Cylinder)
因为所有磁头共进退,所有盘面上、半径相同的磁道,合起来就构成了一个 "柱面"。
- 柱面数 = 单个盘面的磁道总数
- 柱面是磁盘分区的最小单位

4. 磁盘容量计算公式
知道了这几个概念,我们就能算出一块硬盘的总容量:
磁盘容量 = 磁头数 × 柱面数 × 每磁道扇区数 × 每扇区字节数
举个例子:2 张盘片 = 4 个磁头,1024 个柱面,每磁道 63 个扇区,每个扇区 512 字节,总容量就是 4 × 1024 × 63 × 512 ≈ 126MB。
三、CHS 寻址:早期的三维定位
早期的硬盘,就是通过柱面(Cylinder)、磁头(Head)、扇区(Sector) 这三个参数来定位一个扇区,简称 CHS 寻址。
它的逻辑就像三维坐标:
- 先确定柱面号:让磁头臂移动到对应的磁道上
- 再确定磁头号:选中具体哪个盘面
- 最后确定扇区号:等盘片旋转到对应扇区经过磁头下方,就可以读写数据了
CHS 的局限
当年的系统给 CHS 三个参数分配的位数有限:
- 磁头:8 位
- 柱面:10 位
- 扇区:6 位
按这个位数计算,最大能支持的容量约为 8GB。硬盘容量超过 8GB 后,CHS 寻址就不够用了。所以现在的操作系统,基本不再直接使用 CHS 寻址。
四、LBA 寻址:现代硬盘的线性地址
既然三维的 CHS 不够用,人们就想到了简化:把整个硬盘所有的扇区,按顺序排成一个一维数组,给每个扇区编一个号,从 0 开始,这个编号就是LBA(逻辑块地址)。
可以理解成:把卷起来的磁带完全拉直,每一小段按顺序排号,想找哪一段,直接报编号就行,不用再说第几圈第几个。
1. CHS 与 LBA 的转换
CHS 和 LBA 是可以互相换算的:
- CHS 转 LBA :
LBA = 柱面号C × (磁头数 × 每磁道扇区数) + 磁头号H × 每磁道扇区数 + 扇区号S - 1
减 1 是因为扇区号从 1 开始编号,而 LBA 从 0 开始。 - LBA 转 CHS :
就是反过来做除法取整、取余:- 柱面号 = LBA // (磁头数 × 每磁道扇区数)
- 磁头号 = (LBA % (磁头数 × 每磁道扇区数)) // 每磁道扇区数
- 扇区号 = (LBA % 每磁道扇区数) + 1
2. 关键结论
现在的操作系统,根本不需要关心 CHS 地址,直接使用 LBA 地址访问硬盘。CHS 和 LBA 之间的转换工作,完全由硬盘内部的固件(硬件电路 + 伺服系统)自动完成。
对上层软件来说,硬盘就是一个 "元素为扇区的一维数组",数组的下标就是 LBA 地址。
总结
理解磁盘的物理结构和寻址方式,是理解文件系统的基础。我们知道了硬盘最底层是一个个 512 字节的扇区,用 LBA 编号来定位。
但我们平时不可能直接用扇区号去存数据,那样太反人类了。我们需要的是 "文件名、文件夹、权限" 这些更友好的概念,这就是文件系统要做的事 ------ 把零散的扇区组织成可管理的文件。