Linux之磁盘--硬件

前言

学习 Linux Ext2/Ext3/Ext4 文件系统,不能直接上手 inode、块组。文件系统运行在磁盘硬件之上,必须先搞懂磁盘物理结构、逻辑寻址模型。本文按照目录脉络,逐层梳理磁盘硬件体系,为后续 Ext 文件系统原理打下底层基础。

1. 硬件层级:磁盘 → 服务器 → 机柜 → 机房

从最小存储单元向上分层:

  1. 磁盘(硬盘) :最小物理存储载体,分为机械硬盘 HDD、固态硬盘 SSD;服务器依靠磁盘持久化存储数据。在机房中使用的都是磁盘,第一是因为比较便宜,还有可以存储更多的空间
  2. 服务器 :多块磁盘安装在同一台主机,搭载 CPU、内存、网卡,对外提供服务。
  3. 机柜 :机房中标准化机架,一台机柜可以堆叠数十台服务器,统一供电、布线。
  4. 机房 :大量机柜集中部署,配套空调、UPS 不间断电源、消防、网络设备,提供稳定运行环境。

机房三问

一、为什么会有机房?

互联网业务需要大量服务器 7×24 小时持续运行。 个人电脑无法满足:稳定供电、恒温环境、大带宽、不间断运维、安全防护。 于是把成千上万台服务器集中放置,统一配套供电、制冷、网络设施,机房(数据中心)就此诞生。中小企业无力自建,可租用第三方 IDC 机房;体量巨大的大厂,选择自建大型数据中心。

二、为什么大多是大公司自建机房?

  1. 成本门槛极高 土地、机房土建、空调、UPS、发电机组、光纤带宽、运维团队,前期投入数十亿,小企业负担不起。

  2. 业务规模需求 大厂海量用户、海量数据,需要数万、数十万台服务器,租用第三方机房长期成本更高,自建更划算。

  3. 数据安全与自主可控 核心业务、用户敏感数据,放在自有机房,不受第三方托管服务商约束,合规可控。

  4. 定制化需求 可以按需设计供电、制冷、机柜布局,适配 AI 算力、存储集群等特殊硬件。

三、大厂数据中心偏爱选址偏远地区

  1. 电费是最大开销 服务器空调常年运转,电费占运营成本大头。偏远地区水电、风电等清洁能源充足,电价更低。
  2. 土地成本低廉 大型机房占地极大,一线城市土地昂贵;偏远区域地价便宜。
  3. 散热自然优势 北方高海拔、寒冷区域,可利用自然冷空气冷却,减少空调耗电(自然冷却),大幅省电。

层级关系:磁盘属于服务器硬件,服务器收纳于机柜,机柜集中部署在机房

1-2 磁盘物理结构(机械硬盘 HDD)

机械硬盘核心物理组件:

  • 盘片(Platter):圆形磁性薄片,正反两面均可存储数据;一块硬盘可以包含多张盘片。
  • 磁头(Head):读写盘片上的数据,一个盘面对应一个磁头;读写时磁头悬浮在盘面上方,不接触盘面。
  • 主轴电机:带动所有盘片高速旋转(常见 7200 转 / 10000 转)。
  • 磁臂:承载磁头,负责径向移动,切换不同同心圆轨道。

核心概念:

  • 磁道 (Track):盘面上一圈一圈同心圆。
  • 扇区 (Sector) :磁道被切分出最小物理单元,传统磁盘扇区大小 512 字节,现代 4K 扇区
  • 柱面 (Cylinder):所有盘片上半径相同的磁道,构成一个柱面;磁臂移动一次定位一个柱面。

💡 机械硬盘读写开销:寻道时间(磁臂移动) >> 旋转等待时间 >> 数据传输时间。随机读写性能远弱于顺序读写。

1-3 磁盘存储结构

数据在磁盘上的组织层次(由大到小): 磁盘 → 柱面 → 磁道 → 扇区

  1. 一块硬盘由若干柱面构成;
  2. 单个柱面对应所有盘片同一半径磁道;
  3. 单条磁道分割为大量扇区
  4. 扇区 = 磁盘最小物理读写单位,硬件层面无法读写小于 1 个扇区的数据。

1-4 磁盘逻辑结构

操作系统不会直接操作原始磁道、扇区,在内核和磁盘硬件之间建立逻辑抽象。

1-4-1 理想化理解过程

简化模型: 操作系统把整块磁盘视为连续线性地址空间。上层程序读写文件 → 文件系统转换 → 访问磁盘连续扇区。 理想模型:磁盘就是连续编号的块,顺序读写效率一致,不用关心物理磁道、柱面。

1-4-2 真实硬件访问过程(机械硬盘)

真实流程存在物理限制:

  1. 应用发起读写请求;
  2. 文件系统计算需要访问哪些磁盘块;
  3. 块设备驱动将块编号转换为磁盘地址;
  4. 磁盘执行:磁臂移动(寻道)→ 等待扇区旋转到磁头下方 → 读写扇区。

痛点:随机访问需要频繁移动磁臂,寻道开销巨大。 这也是文件系统设计优化的核心动机:尽量让文件数据连续存放,减少磁头移动。

1-5 CHS 寻址 && LBA 寻址

两种磁盘寻址方式,用来定位磁盘上唯一扇区。

CHS 寻址(老式寻址模式)

  • C:Cylinder 柱面号
  • H:Head 磁头号
  • S:Sector 扇区号 通过 (柱面,磁头,扇区 三维坐标定位扇区。 局限:寻址范围有限,只能支持小容量硬盘,现代系统基本淘汰。

LBA 寻址(现代主流寻址)

LBA (Logical Block Address) 逻辑块寻址 抛弃柱面、磁头、扇区物理概念,把磁盘所有扇区从头到尾分配连续线性编号 LBA0、LBA1、LBA2......。 操作系统只需要传入 LBA 编号,磁盘固件自动翻译成底层物理位置。 优点:

  1. 寻址空间巨大,支持大容量硬盘;
  2. 屏蔽硬件物理细节,操作系统更容易管理磁盘。

补充:内核中,操作系统继续在 LBA 之上封装块(block),Linux 默认块大小 4096 字节,由多个物理扇区组成,作为文件系统操作单位。

1.文件=内容+属性,在linux系统,内容和属性是分开存的

2.一个组里面要有文件数据和管理数据的信息

a.写入管理信息的过程就叫做写入文件系统

b.格式化就是重新写入管理信息

但是文件的文件名不属于inode的属性

inode是128字节

理论上一个文件一个inode

bash 复制代码
ls -l -i
cpp 复制代码
struct ext2_inode {
    __u16 i_mode;        // 文件类型、权限
    __u16 i_uid;         // 用户ID
    __u32 i_size;        // 文件大小(低32位)
    __u32 i_atime;       // 访问时间
    __u32 i_ctime;       // 创建/属性修改时间
    __u32 i_mtime;       // 修改时间
    __u32 i_dtime;       // 删除时间
    __u16 i_gid;         // 组ID
    __u16 i_links_count; // 硬链接计数
    __u32 i_blocks;      // 占用块数量
    __u32 i_flags;       // 文件标志
    __u32 i_reserved1;
    // 核心:块指针数组(12直接 + 1一级 + 1二级 + 1三级)
    __u32 i_block[15];
    __u32 i_generation;
    __u32 i_file_acl;
    __u32 i_dir_acl;
    __u32 i_faddr;
    __u8  i_frag;
    __u8  i_fsize;
    __u16 reserved2[3];
    __u32 reserved3[2];
};

找文件时

先找inode编号->inode table里面

属性里面有i_blocks ->datablocks的那个块,

实现属性和文件内容的相关链接

如何删文件

  • inode Bitmap :对应 bit 置为 0,标记 inode 空闲,可以分配给新文件
  • Block Bitmap :遍历 inode 内部 i_block[] 所有数据块指针,每个对应 bit 置 0,回收所有数据块
  • 填写 inode 的 i_dtime(删除时间)

拷贝 = 需要大量读写数据块;删除 = 只修改少量元数据(位图、inode、目录项),完全不读写文件本体数据。

超级块本身是整个文件系统唯一的全局元数据,逻辑上只有一份;

为了防止损坏,EXT2 会在多个块组存放超级块副本 ,但不是每一个块组都一定存在副本

相关推荐
‎ദ്ദിᵔ.˛.ᵔ₎18 小时前
linux进程
linux
湿滑路面18 小时前
硅基聊天室——如何用supervisor优雅的管理服务进程
linux·前端·python
汽车网络安全爱好者18 小时前
Public Key Infrastructure(二)— 深入理解 X.509 证书:从 RFC 5280 到 OpenSSL 实践
运维·服务器·算法·网络安全·汽车·密码学·可信计算技术
阿标的博客18 小时前
Active Directory端口服务验证
服务器
若衹如初見19 小时前
介绍了LiveBindings格式化的几种进阶方法: * 使用表达式列格式化。 * 自定义绑定方法。 * 使用自定义表单方法格式化。 ...
运维·服务器·前端
我命由我1234519 小时前
Windows 操作系统 - 符号链接
linux·运维·windows·系统架构·操作系统·运维开发·系统
kdxiaojie19 小时前
Linux 驱动研究 —— V4L2 (15)
linux·运维·笔记·学习
爱刷碗的苏泓舒20 小时前
网络通信入门:交换机、路由器与防火墙的角色、关系、功能和使用场景
网络·智能路由器·网络通信·防火墙·交换机
minglie120 小时前
linux中动态库的制作和调用的3个实验---第2课 python调用动态库
linux
Nile20 小时前
解密Palantir系列三:9.AIP · 从 Ontology 到 Agent,完整走一遍 AIP 工作流
服务器·人工智能·算法