【Linux】磁盘物理结构与逻辑抽象——从CHS到LBA
目录
3.1 CHS地址(Cylinder-Head-Sector)
3.2 LBA地址(Logical Block Address)
1. 引言
磁盘是计算机中唯一仍在广泛使用的机械设备,也是最主要的持久化存储设备。理解磁盘的物理结构是掌握文件系统的基础。本文将深入讲解磁盘的物理组成、数据存储方式、CHS寻址与LBA逻辑地址,以及操作系统如何屏蔽硬件细节。
2. 磁盘的物理结构
2.1 磁盘的宏观组成
-
盘片(Platter):圆形金属或玻璃基片,双面涂覆磁性材料。
-
主轴(Spindle):带动盘片高速旋转(通常5400rpm、7200rpm或更高)。
-
磁头(Head):每个盘面有一个磁头,用于读写数据,磁头固定在传动臂上,所有磁头共进退。
-
传动臂(Actuator Arm):带动磁头在盘片半径方向移动,实现寻道。
-
磁道(Track):盘片上同心圆环,每个盘面有若干个磁道。
-
扇区(Sector):磁道被等分为若干弧段,每个扇区存储512字节(传统)或4KB(高级格式),是磁盘最小读写单元。
-
柱面(Cylinder):所有盘面上相同半径的磁道构成的虚拟圆柱体。
补充:磁盘属于块设备,按块进行读写,不能按字节寻址。
2.2 磁盘的存储密度与容量
-
早期磁盘使用CHS寻址,容量受限于柱面数、磁头数、每磁道扇区数。
-
现代磁盘使用LBA(Logical Block Addressing),将整个磁盘视为一个扇区数组,操作系统只与LBA交互。
3. CHS地址与LBA地址
3.1 CHS地址(Cylinder-Head-Sector)
要定位一个扇区,需要三个参数:
-
柱面号(Cylinder):从0开始编号。
-
磁头号(Head):从0开始,对应盘面。
-
扇区号(Sector):通常从1开始编号。
物理寻址过程:传动臂将磁头移动到指定柱面,然后选择对应磁头,等待目标扇区旋转到磁头下,读取数据。这就是寻道时间 + 旋转延迟 + 传输时间的由来。
3.2 LBA地址(Logical Block Address)
为了简化操作系统对磁盘的访问,现代磁盘将物理扇区线性编号,从0开始递增。操作系统只使用LBA地址,磁盘内部的固件(伺服系统)负责将LBA转换为CHS。
LBA与CHS的转换公式:
设:
-
HPC= 每柱面磁头数(磁头总数) -
SPT= 每磁道扇区数
则:
text
单个柱面的扇区总数 = HPC * SPT LBA = C * (HPC * SPT) + H * SPT + (S - 1)
反向转换:
text
C = LBA / (HPC * SPT) H = (LBA % (HPC * SPT)) / SPT S = (LBA % SPT) + 1
这些参数在磁盘内部维护,操作系统可通过
hdparm -I /dev/sda等命令获取。
4. 磁盘的逻辑模型
从操作系统角度看,磁盘就是一个一维数组,数组下标为LBA,每个元素是一个扇区(512字节)。这种抽象使得磁盘管理变得简单:任何扇区都可以通过一个数字唯一确定。
图示理解:
-
物理上:多个盘片 → 每个盘片有多个磁道 → 每个磁道有多个扇区。
-
逻辑上:将所有扇区按顺序拉直,形成线性地址空间。
5. 操作系统与磁盘的交互
-
操作系统通过驱动程序向磁盘控制器发送命令(如读LBA 1000开始的8个扇区)。
-
磁盘控制器内部完成LBA→CHS转换,控制机械部件读取数据,通过DMA将数据传输到内存。
-
操作系统不直接操作物理机械,只与LBA打交道。
6. 磁盘性能指标(补充)
-
寻道时间:磁头移动到目标磁道的时间,约5-10ms。
-
旋转延迟:目标扇区旋转到磁头下的时间,平均为旋转周期的一半(7200rpm下约4.2ms)。
-
传输时间:实际读写数据的时间,通常很快。
-
IOPS:每秒输入输出操作次数,机械磁盘约100-200,SSD可达数万。
7. 小结
本文介绍了磁盘的物理结构、CHS寻址与LBA逻辑地址的转换,以及磁盘作为块设备的工作模式。理解这些底层知识是学习文件系统的前提。下一篇我们将引入文件系统的基本概念:块、分区与inode。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)