ZeroOne AI
← 返回文章列表

Linux系统篇(十九)——文件(三):底层存储入门:从机房硬件到 CHS/LBA 磁盘寻址全解析

👁 0
分类:工业互联网

从机房硬件层级讲到磁盘物理结构,再到 CHS 三维寻址与 LBA 线性寻址的转换原理,完整打通底层存储认知。

项目背景

很多做开发、运维的同学日常只和文件、数据库、接口打交道,很少深究数据到底是怎么实实在在存在物理磁盘里的。当遇到 IO 性能瓶颈、磁盘分区故障、存储寻址报错时,只会模糊知道"磁盘慢""分区坏了",却说不清底层硬件、磁盘结构、寻址逻辑的完整链路。

本文从最宏观的机房、服务器硬件逐层向下拆解:先搞懂磁盘物理形态与存储划分,再理清操作系统访问磁盘的逻辑流程,最后吃透传统 CHS 寻址与现代 LBA 线性地址两种核心定位方式,帮你完整打通计算机存储底层基础认知,看懂数据从内存落到盘片的全过程。

技术方案

认识存储硬件层级:磁盘 → 服务器 → 机柜 → 机房

我们存放数据的物理载体有一套清晰的层级架构,从最小存储单元到大型集群机房层层递进:

  1. 磁盘(硬盘):最基础的存储介质,分为机械硬盘 HDD 和固态硬盘 SSD,所有业务原始数据最终都保存在磁盘内部的盘片/闪存颗粒中,是数据持久化的最小单元。机械磁盘是计算机中唯一的机械设备,属于外部存储设备,读写速度相对较慢,但存储容量大、单位存储成本低;
  2. 服务器:一台主机机箱内部搭载多块磁盘,配合 CPU、内存、RAID 卡组成独立计算存储节点,单台服务器可完成业务计算加本地数据存储;
  3. 机柜:机房中的标准化金属机柜,一台机柜可堆叠数十台服务器,配套供电、散热、交换机,实现多台服务器集中部署、统一运维;
  4. 机房:成百上千机柜集中放置的专业机房,配套精密空调、UPS 不间断电源、消防、安防、专线网络,承载企业海量数据存储与线上业务运行,是互联网、云计算的物理底座。

简单来说:无数磁盘装在服务器里,服务器上架进机柜,全部机柜统一部署在机房,构成整个互联网的数据存储硬件底座。

磁盘物理结构:看得见的硬件组成

拆开一块传统机械硬盘,核心物理组件分为几部分:盘片、磁头、主轴马达、磁臂、控制电路板。

  1. 盘片:圆形金属薄片,两面涂有磁性涂层,依靠磁粉磁化方向记录 0/1 二进制数据,一块硬盘会堆叠多张盘片;
  2. 磁头:每张盘片上下各一个磁头,负责读写盘片上的磁性数据,读写时磁头悬浮在盘片表面,不直接接触盘面;
  3. 主轴马达:带动所有盘片高速旋转(常见 7200 转/分、10000 转/分),盘片转动才能让磁头读取环形轨道上的数据;
  4. 磁臂:承载所有磁头同步伸缩移动,控制磁头定位到盘片不同半径的轨道;
  5. 控制电路板:硬盘自带微型处理器、缓存,负责接收主板指令、转换读写信号、缓存临时数据。

SSD 固态硬盘没有盘片、磁头、马达,依靠 NAND 闪存颗粒存储,物理结构和寻址逻辑与机械盘有区别,但操作系统上层的访问逻辑是通用的。

磁盘存储结构:盘面上的数据划分规则

为了有序存储数据,盘片表面被提前规划出标准化几何分区,核心概念有 4 个:磁道、扇区、柱面、簇。

  1. 磁道(Track):盘片旋转形成的同心圆轨道,同一半径一圈即为一条磁道;
  2. 扇区(Sector):磁道被切分出的最小物理读写单元,传统磁盘单扇区 512 字节,现代磁盘为 4K 扇区。所有磁盘读写操作的最小粒度是扇区,无法读写半个扇区的数据。所以如果要修改一个字节,操作系统就要把那个字节所在的整个扇区全部加载到内存中;
  3. 柱面(Cylinder):所有盘片上半径相同、对齐的一组磁道合称为一个柱面。磁臂移动一次,所有磁头会同时对齐到同一柱面。

CHS 定址法:如何确定一个扇区

  1. 定位柱面(Cylinder):先移动磁头臂,让所有磁头同步对准目标柱面的对应磁道,这是整个寻址的第一步;
  2. 选定磁头(Head):在当前对准的柱面中,激活对应盘面的磁头,确定要访问的具体盘面;
  3. 定位扇区(Sector):等待盘片旋转,让目标扇区移动到当前磁头下方,完成最终的位置定位。

用柱面(Cylinder)、磁头(Head)、扇区(Sector)三个坐标显然可以定位数据,这就是数据定位(寻址)方式之一——CHS 寻址。

CHS 寻址对早期的磁盘非常有效,知道用哪个磁头、读取哪个柱面上的第几扇区,就可以读到数据了。但 CHS 模式支持的硬盘容量有限:系统用 8bit 存储磁头地址、10bit 存储柱面地址、6bit 存储扇区地址,而一个扇区有 512 字节,这样使用 CHS 寻址一块硬盘的最大容量为:

磁盘容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数
         = 256 × 1024 × 63 × 512B ≈ 8064 MB

(按 1MB=1000000B 来算约为 8.4GB)

磁盘逻辑结构:操作系统如何读写磁盘

抽象理解:想象有一盘磁带,磁带上面可以存储数据,我们可以把磁带"拉直"形成线性结构。磁盘本质上虽然是硬质的,但逻辑上可以把它想象成卷在一起的磁带,于是磁盘的逻辑存储结构也类似——每一个扇区就有一个线性地址(其实就是数组下标),这种地址叫做逻辑块地址(Logical Block Address)LBA。

真实过程:传动臂上的磁头是共进退的。柱面是一个逻辑上的概念,其实就是每一面上相同半径的磁道在逻辑上构成柱面。所以磁盘物理上分了很多面,但从逻辑上看,整个磁盘由"柱面"卷起来(即物理地址连续)。

LBA 定址法

所以寻址一个扇区:先找到哪一个柱面(Cylinder),再确定柱面内哪一个磁道(其实就是磁头位置 Head),最后确定扇区(Sector),这就是 CHS。而无论几维数组,在计算机里面本质都是一维数组,所以每一个扇区都有一个下标,叫做 LBA(Logical Block Address)地址,即线性地址。

LBA 和 CHS 的转换:

CHS 转 LBA:

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

注意:扇区号通常从 1 开始,而 LBA 中地址从 0 开始;柱面和磁道从 0 开始编号。总柱面数、磁道个数、扇区总数等信息在磁盘内部自动维护,上层开机时会获取到这些参数。

LBA 转 CHS:

柱面号C = LBA // (磁头数 × 每磁道扇区数)         // 即单个柱面的扇区总数
磁头号H = (LBA % (磁头数 × 每磁道扇区数)) // 每磁道扇区数
扇区号S = (LBA % 每磁道扇区数) + 1                // "//" 表示整除

从此往后,磁盘使用者根本不需要关心 CHS 地址,而是直接使用 LBA 地址,磁盘内部自己完成转换。从现在开始,磁盘就是一个元素为扇区的一维数组,数组的下标就是每一个扇区的 LBA 地址,OS 使用磁盘时就可以用一个数字访问磁盘扇区了。

CHS 和 LBA 的对比

寻址方式定位逻辑适用硬盘容量现状
CHS柱面 + 磁头 + 扇区三维坐标≤8GB淘汰,仅兼容老旧设备
LBA全局连续线性数字编号百 GB ~ 百 TB现代磁盘标准寻址方案

系统架构

从数据落盘的完整链路看,存储体系呈明显的分层结构:

实施过程

  1. 先建立硬件层级认知:观察真实服务器与机房部署,理解磁盘在其中的位置;
  2. 拆解(或观察图示)一块机械硬盘,对照盘片、磁头、磁臂、马达、电路板五个组件;
  3. 理解磁道、扇区、柱面三个几何概念,计算 CHS 寻址的最大容量限制;
  4. 亲手做 LBA ↔ CHS 互转计算,验证公式的数值一致性;
  5. 在 Linux 下用 fdisk -l 查看磁盘参数(磁头数、每道扇区数等),与理论对应。

应用价值

SEO关键词

磁盘存储, CHS寻址, LBA寻址, 扇区, 磁道, 柱面, 机械硬盘, 磁盘结构

评论(0