【Linux】从磁盘到文件系统——块、分区与inode

目录

[1. 引言](#1. 引言)

[2. 块(Block)------文件系统的读写单位](#2. 块(Block)——文件系统的读写单位)

[3. 分区(Partition)](#3. 分区(Partition))

[4. inode(索引节点)](#4. inode(索引节点))

[4.1 什么是inode?](#4.1 什么是inode?)

[4.2 查看inode信息](#4.2 查看inode信息)

[4.3 文件系统如何组织inode?](#4.3 文件系统如何组织inode?)

[5. 分区与文件系统的关系](#5. 分区与文件系统的关系)

[6. 小结](#6. 小结)


1. 引言

磁盘裸设备只能按扇区读写,但用户希望按文件(名称、大小、权限等)操作。文件系统正是为了组织和管理磁盘上的数据而设计的。本文将介绍文件系统的三个核心概念:分区inode

2. 块(Block)------文件系统的读写单位

  • 磁盘读写最小单位是扇区(512字节),但操作系统一次读写多个连续扇区以提高效率。

  • 是文件系统读写的最小单位,通常为4KB,即连续8个扇区。

  • 块的好处:减少I/O次数,提高数据传输效率;但也可能造成内部碎片。

块的地址计算:

  • 已知LBA,块号 = LBA / 8

  • 已知块号,该块的第一个扇区LBA = 块号 * 8

文件系统的块大小在格式化时确定,常见的有1KB、2KB、4KB。过大的块会浪费空间(对于小文件),过小的块会增加I/O次数。

3. 分区(Partition)

  • 分区是将一块磁盘划分为多个独立的逻辑区域,每个区域可以单独格式化并存放文件系统。

  • Windows中的C、D、E盘,Linux中的/dev/sda1/dev/sda2等就是分区。

  • 分区的最小单位是柱面 (传统),现代分区工具(如fdiskgdisk)使用LBA地址进行分区。

分区的好处:

  • 隔离系统与用户数据

  • 支持多操作系统

  • 方便备份与恢复

  • 限制某个分区的空间使用

4. inode(索引节点)

4.1 什么是inode?
  • 文件 = 属性(元数据) + 内容。

  • inode 是存储文件属性的数据结构,每个文件对应一个唯一的inode,并有一个inode号

  • inode中不包含文件名,文件名存储在目录文件中。

  • inode大小通常为128字节或256字节(ext2/ext3/ext4),在格式化时确定。

inode包含的信息(示例ext2_inode结构体):

  • 文件类型与权限(i_mode

  • 文件大小(i_size

  • 时间戳(i_atime, i_mtime, i_ctime

  • 硬链接计数(i_links_count

  • 数据块指针数组(i_block[15]

  • 等等

4.2 查看inode信息

bash

复制代码
stat test.c
ls -li test.c    # 显示inode号
4.3 文件系统如何组织inode?

文件系统将分区划分为若干块组(Block Group),每个块组内部包含:

  • 超级块(Super Block)

  • 块组描述符表(GDT)

  • 块位图(Block Bitmap)

  • inode位图(Inode Bitmap)

  • inode表(Inode Table)

  • 数据块(Data Blocks)

这些内容将在下一篇详细讲解。

5. 分区与文件系统的关系

  • 一个分区可以格式化为某种文件系统(如ext4、xfs、NTFS、FAT32)。

  • 格式化过程会创建文件系统元数据(超级块、位图、inode表等)。

  • 挂载(mount)将一个分区与一个目录关联,之后该目录下的所有文件都存储在这个分区中。

补充:/proc/partitionslsblk 可查看分区信息。

6. 小结

本文引入了块、分区和inode三个核心概念。文件系统通过将分区划分为块组,并在每个块组内部分配inode和数据块,实现了对文件的高效管理。下一篇我们将深入ext2文件系统的内部结构,详细分析每个组件的职责和工作原理。

相关推荐
一技安身1 小时前
【信创】docker-26.0.2.tgz 原理 + 完整安装
linux·运维·服务器
程曦曦1 小时前
MySQL 生产库误删 98 张表后的时间点恢复实战:从 binlog 解析到资金对账
linux·数据结构·其他·算法·ubuntu·运维开发
Dachui_11221 小时前
内网穿透 Webhook 告警实战:客户端离线、应用探测、资源删除全覆盖
运维·远程工作·内网穿透·devops·webhook·服务器监控·应用探测
郝学胜-神的一滴1 小时前
Effective Python 条款 13:善用星号解包,告别下标切片拆分的坑
服务器·开发语言·数据结构·python·程序人生·pycharm
数据智研1 小时前
【数据分享】300个城市-5G试点城市DID数据(2014-2025)
大数据·运维·人工智能·信息可视化·数据分析
honsor2 小时前
工业级网口温湿度变送器 ModbusTCP 机房动环环境监测终端
运维·网络·人工智能·物联网·安全·云计算·智能温湿度监测系统
赵民勇2 小时前
systemd-mount命令详解
linux
fengkai45452 小时前
八、Docker详解1-3
运维·docker·容器
H_oRIZoN_2 小时前
Linux入门DAY42【51 单片机】DS18B20 数字温度传感器完整解析(单总线原理 + 时序 + 读取流程)
linux·单片机·linux应用编程
j7~2 小时前
【Linux网络加餐】(篇六)网络版计算器(上):模板方法模式、序列化与 JSON
linux·c++·json·序列化·反序列化·网络版计算机