【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等就是分区。

  • 分区的最小单位是柱面 (传统),现代分区工具(如fdisk、gdisk)使用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/partitions 和 lsblk 可查看分区信息。

6. 小结

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

相关推荐
阳光九叶草LXGZXJ7 小时前
达梦数据库-报错-15-列【XXX】长度超出定义
linux·运维·数据库·sql·学习
奔跑的大白啊7 小时前
多容器共享目录权限踩坑记
linux·ubuntu·共享目录·linux权限·docker 容器化部署
黄大刀8 小时前
DataPulse一款开箱即用的SCADA(四)-历史记录
运维·scada·动环
正在走向自律9 小时前
AI数据分析与可视化:从基础到应用实践
服务器·人工智能·python·机器学习·数据分析·pandas
OnlineProxy10 小时前
亚马逊多账号运营:如何在规避“关联封号”风险的同时实现电商规模化扩张
服务器·数据库·redis
归秋14210 小时前
2026 企业 AI 办公工具选型指南:从评估框架到产品适配
大数据·运维·人工智能
Android系统攻城狮10 小时前
Linux Gstreamer深度解析之gst_audio_encoder_set_frame_max调用流程与实战(六十一)
android·linux·运维·音视频·gstreamer音视频·音视频进阶·gstreamer音视频进阶
H.莓飛11 小时前
【C++】命名空间、缺省参数、函数重载与引用
linux·开发语言·c++·visual studio
91刘仁德11 小时前
IP协议详解:从IP协议头到网段划分、路由与NAT
linux·服务器·网络·网络协议·tcp/ip
辻弋20111 小时前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑