【Linux系统】Linux EXT2文件系统_ext2explore-程序员宅基地

技术标签: Linux  运维  linux  服务器  

0 引言

我们知道,磁盘是用来存储文件的,但是必须要把磁盘格式化为某种格式才能进行存储。文件系统的目的就是组织和管理磁盘文件。在Linux系统中,最常见的是EXT2的文件系统。(EXT2:第二代扩展文件系统(英语:second extended filesystem,缩写为 ext2)。后来又发展出EXT3和EXT4。但是其核心设计并未发生变化,我们这里以EXT2作为演示。

1 基本结构

因为磁盘大小一般是很大的,如果我们一下子将文件的内容和属性进行管理,在使用时可能会非常麻烦,所以EXT2文件系统在格式化的时候一般会包含多个区块群组(如下图的Block group 0,Block group1…),以此进行管理。
在这里插入图片描述

1.1 Block group

对于EXT2文件系统来说,硬盘分区首先被分割为一个个的逻辑块(Block),每个Block就是实际用来存储数据的单元,大小相同,Block按照0,1,2,3的顺序编号。EXT2文件系统支持的Block的大小有1024字节,2048字节4096字节,Block的大小在创建文件系统的时候可以通过参数指定。

EXT2的文件系统主要有以下特点:
1.Block的大小与数量在格式化后就不能再改变了(除非重新格式化)。
2.每个Block内最多只能放置一个文件数据。
3.如果文件大于一个Block的大小,则会占用多个Block。
4.如果文件小于一个Block的大小,则剩余的容量不能再使用了。

1.2 Boot group

每个磁盘分区的开头 1024 字节大小都预留为分区的启动扇区,存放引导程序和数据,所以又叫引导块。引导块在第一个 Block,即 Block 0 中存放,但是未必占满这个 Block,原因是 Block 的大小可能大于 1024 字节。

这里是存放开机管理程序的地方,这是个非常重要的设计。因为这样使得我们能够把不同的开机管理程序安装到每个文件系统的最前端,而不用覆盖整颗磁盘唯一的 MBR,这样就能支持多系统启动了。

2 Block group 的组成

如上图所示,每个 Block Group 都由下面几个组成部分:

Superblock(超级块)
Group Description Table(组描述符)
Block bitmap(块位图)
Inode bitmap(inode 位图)
Inode table(inode 表)
Data Blocks(数据块)

2.1 Superblock(超级块)

存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量,
未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个文件系统结构就被破坏了

之所以不把Superblock单独作为一个块放到外面,是因为这个块非常重要,一旦损坏,文件就很难恢复。所以后面几乎每个block group 都包含Superblock。

2.2Group Description Table(组描述符)

Group Description Table 用来描述每个 group 的开始与结束位置的 block 号码,以及说明每个块(superblock、bitmap、inodemap、datablock) 分别介于哪一个 block 号码之间。

2.3 Block bitmap(块位图)

Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没
有被占用。

2.4 Inode bitmap(inode 位图)

inode bitmap 与 block bitmap 的功能类似,只是 block bitmap 记录的是使用与未使用的 block 号,而 inode bitmap 则记录的是使用与未使用的 inode 号。

2.5 Inode table(inode 表)

node table 中存放着一个个 inode,inode 的内容记录文件的属性以及该文件实际数据是放置在哪些 block 内,inode 记录的主要的文件属性如下:

该文件的读写权限(rwx)
该文件的拥有者和所属组(owner/group)
该文件的容量
该文件的 ctime(创建时间)
该文件的 atime(最近一次的读取时间)
该文件的 mtime(最近修改的时间)
该文件的特殊标识,比如 SetUID 等
该文件真正内容的指向(pointer)
inode 的数量与大小也是在格式化时就已经固定了的,另外 inode 还有如下特点:

每个 inode 大小均固定为 128 Bytes(新的 ext4 为 256 Bytes)
每个文件都仅会占用一个 inode
文件系统能够创建的文件数量与 inode 的数量相关
系统读取文件时需要先找到 inode,并分析 inode 所记录的权限与使用者是否符合,若符合才能够开始读取 block 的内容

2.6 Data Blocks(数据块)

Data block 是用来存放文件内容的地方,Ext2 文件系统有1K、2K 和 4K 大小的 block。在格式化文件系统时 block 的大小就确定了,并且每个 block 都有编号。需要注意的是,由于 block 大小的差异,会导致文件系统能够支持的最大磁盘容量和最大单个文件的大小并不相同。

3.总结

以上就是Linux EXT2文件系统的基本结构,其EXT3和EXT4基本核心结构也是基于EXT2增强的,有兴趣的小伙伴可以去了解一下。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/iamxiaobai_/article/details/129918251

智能推荐

初学python爬虫,记录一下学习过程,requests xpath提取图片地址并保存图片_x_path保存图片-程序员宅基地

文章浏览阅读1.4k次。系统练习requests xpath提取图片并保存本地'''requests库请求目标网址xpath提取网页的图片地址面向函数编程'''#导入第三方库import requestsfrom lxml import etree#定制请求头headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '..._x_path保存图片

Vue学习_vue框架下的bs-程序员宅基地

文章浏览阅读381次。1、vue介绍Vue属于JS框架,快速构建前端界面的技术。目前主流版本Vue2和Vue3。Vue核心思想:不操作dom,通过控制数据(数据驱动),就可以完成页面的所有操作。学习Vue框架:需要与前面学习的HTML、CSS、JS(DOM)进行对比,知道框架到底帮助我们将哪些技术进行封装(不用书写),哪些技术进行改变。官网:https://cn.vuejs.org/2、BS和CS架构软件设计架构中有两种架构方式:BS架构:Browser Server :浏览器与服务器模型架构主要基于浏览器编写_vue框架下的bs

指标体系如何建设_指标体系怎么构建-程序员宅基地

文章浏览阅读1.1w次,点赞11次,收藏115次。几乎所有的数据分析工作都会提到一个词——“建立数据指标体系”,虽然这个词对于大家来说并不陌生,但是数据指标到底是什么以及如何具体的搭建,很多人还是一头雾水的。一、数值指标概述1.1 数值指标价值在了解什么是数据指标之前,我们思考一下:为什么会出现指标?它是为了解决什么问题?人类及科学的发展是与时俱进的,早期为了使自然科学的实验及结果更具统一性及方便标准化衡量,一些标准化的专业指标应运而生。随着人类社会的发展,社会科学也越来越需要统计学来进行事物的衡量,一系列统计学指标也逐步产生了。随着新._指标体系怎么构建

C语言类型转换_lint dint-程序员宅基地

文章浏览阅读138次。(1):隐式转换定义一个整型常量(int),赋值时却给了一个小数,系统只会将整数部分提取,小数部分舍去(注:是舍去不是四舍五入)。(2)ASCII转换在ASCII表里一个符号或是一个字母就代表一个相应的数字#include<stdio.h>int main{char letter='A';int number=letter;return 0;}A在ASCII表里对应的数字是65,所以当把字符型常量letter的值'A'赋给整型变量number时,所储_lint dint

安装Keras,tensorflow,并将虚拟环境添加到jupyter notebook_scipy库怎么导入jupyter-程序员宅基地

文章浏览阅读4.5k次,点赞8次,收藏69次。安装Keras,tensorflow,并将虚拟环境添加到jupyter notebook_scipy库怎么导入jupyter

ARM开发软件ADS教程_arm.developer.suite使用教程-程序员宅基地

文章浏览阅读4.7k次。ARM开发软件ADS教程 ADS(ARM Developer Suite)是ARM公司推出ARM集成开发环境,操作简单方便,获得广大开发人员的青睐。下面使用ADS v1.2做一个实例教程,帮助大家学会使用ADS编写程序和仿真调试。(使用汇编语言) 首先:下载ADS v1.2版本(英文版)并安装好ADS。安装好ADS之后可以看到开始菜单---所有程序---ARM Developer Suit_arm.developer.suite使用教程

随便推点

使用JS判断移动设备的终端类型(浏览器UserAgent)_user-agent判断终端类型-程序员宅基地

文章浏览阅读8.5k次。JavaScript 是如何判断移动设备的类型呢?答案是:User Agent。什么是 User Agent?懂一点网页制作的人应该都明白。简单的说,User Agent 就是用来识别浏览器名称、版本、引擎以及操作系统等信息的内容。 User Agent 的判断是识别浏览器的关键,不仅仅如此,移动互联网开发势头迅猛,通过 User Agent 判断桌面端设备或移动设备就变的很为重要。当然,通过_user-agent判断终端类型

gz文件合并解压_hic的两个r1 gz文件合并-程序员宅基地

文章浏览阅读2.6k次。从veritas网站下载一个storage foundation 5.0的软件,for solaris的,下载了三段文件:sxrt5.0.dvd1.tar.gzaa sxrt5.0.dvd1.tar.gzab sxrt5.0.dvd1.tar.gzac gzcat sxrt5.0.dvd1.tar.gza[a-c]|tar xvf -二楼的办法_hic的两个r1 gz文件合并

SpringBoot:起步依赖-自动配置_spring-configuration-metadata.json-程序员宅基地

文章浏览阅读4.2k次,点赞3次,收藏8次。SpringBoot:起步依赖-自动配置_spring-configuration-metadata.json

cocos creator学习笔记1_cocoscreator 子控件居中-程序员宅基地

文章浏览阅读358次。Widgt组件(UI组件)Widget (对齐挂件) 是一个很常用的 UI 布局组件。它能使当前节点自动对齐到父物体的任意位置,或者约束尺寸,让你的游戏可以方便地适配不同的分辨率。Widget (对齐挂件) 是一个很常用的 UI 布局组件。它能使当前节点自动对齐到父物体的任意位置,或者约束尺寸,让你的游戏可以方便地适配不同的分辨率。Top,Left,Right,Buttom对齐对应边界HorizontalCenter水平方向居中VerticalCenter竖直方向居中Align Mode 指_cocoscreator 子控件居中

数据结构 —— 八大排序(超详细图解 & 函数实现)_数据结构排序-程序员宅基地

文章浏览阅读1k次,点赞16次,收藏15次。排序算法主要分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、计数排序等。本文将针对上述八大排序算法进行图解剖析。_数据结构排序

《Qt for Symbian》翻译系列之七:第二章 开始(1)_qt manual proxy configuration-程序员宅基地

文章浏览阅读3.8k次。第二章开 始本章主要介绍应用于Symbian平台的QT开发工具。对于Symbian平台的新手,本章首先通过逐步介绍所需的开发工具及其安装指南进行切入。然后介绍如何在仿真器和移动电话上利用Qt for Symbian创建并运行“Hello World”应用。如果已经有了Symbian开发环境,而且熟悉工具及应用的构建过程,作为对某些SDK版本的补充,在进入2.1.7章节关注Qt for Symbian SDK的安装和介绍之前,建议快速浏览本章的第一部分。注意,本章中某些较长的下载链接利用URL缩_qt manual proxy configuration