轻松理解操作系统 - Linux 文件系统的心脏是什么?

server/2024/11/26 21:33:27/

在前面两期,我们分别了解了 Linux 文件系统的重要组成部分:inode 和 数据块。

那 inode表 和 数据块 的信息总要有个“管理者”来进行总体的管理和提供找到它们的入口吧,这时候“超级块”就扮演了这个“管理者”的角色。

一、文件系统的“管家” - 超级块

1、位置

位于文件系统的开头,是文件系统的第一个块。

2、包含的信息

包含了文件系统的各种重要信息,如文件系统的大小、每个块的大小、inode表的大小、文件系统的布局等。

可能包含:

文件系统的名称、创建时间、最近修改时间等元数据信息,以及文件系统的挂载状态、读写状态、错误状态等状态信息。

二、除了提供信息外它还有什么作用呢

1、识别与管理文件系统:

操作系统通过读取超级块来识别文件系统的类型、结构和状态,从而正确地读取和写入数据。

2、提供文件系统操作接口:

超级块中包含了与文件系统操作相关的函数指针(,这些函数指针指向了实现文件系统各种操作的函数。

3、维护文件系统的一致:

超级块包含了文件系统的一些状态信息,如挂载状态、读写状态等。

这些信息对于操作系统来说非常关键,它们可以帮助操作系统及时发现和处理文件系统的问题,如磁盘损坏、文件系统损坏等。

通过维护这些信息的一致性,操作系统可以确保文件系统的稳定性和可靠性。

三、这么关键的块不拍损坏吗?

它当然是怕损坏的,因此它采取了一些安全措施

1、冗余机制

将多个超级块内容保存到硬盘中的不同区域,当其中一个超级块出现问题时,操作系统会自动采用另外一个超级块。

2、定期刷盘

操作系统在启动后,会将超级块的内容复制到内存中,并在运行过程中周期性地使用内存中的最新内容来更新硬盘上的超级块。

用于确保超级块数据的一致性和可靠性。

3、数据校验

某些文件系统可能会采用一些算法对超级块数据进行校验和计算,并将校验和存储在超级块中。

在系统启动或运行过程中,重新计算超级块数据的校验和,并与存储的校验和进行比较,以验证超级块数据的完整。

四、它与 inode表、数据块之间的关系是什么

1、inode表

超级块中包含了 inode 表的大小和位置信息,这使得操作系统能够找到并访问inode 表。

超级块通过管理 inode 表,间接地管理了文件系统的所有文件和目录的元数据。

2、数据块

inode 中包含了指向文件数据块的指针,这些指针指向了实际存储文件数据的数据块。

对于大文件,数据块中也会保存指向其他储存该文件的数据块的指针。

五、讲了这么多,都是存储在硬盘上的文件系统结构啊,读取和写入性能怎么办?

超级块本身会被读取到内存中来加快读写速度

Linux 文件系统中还有一些其他的数据结构是存在于内存之中的,例如目录项、打开文件表等等


六、既然硬盘中存在的主要结构已经聊完了,那下期就来聊聊下用于加快文件系统读写性能的内存数据结构


http://www.ppmy.cn/server/137788.html

相关文章

Python网络爬虫基础指南

Python网络爬虫基础指南 网络爬虫(Web Crawler)是一种自动化程序,用于遍历互联网上的网页并收集数据。Python因其强大的库支持和简洁的语法,成为开发网络爬虫的首选语言之一。本文将介绍如何使用Python编写一个简单的网络爬虫&a…

Java的Socket编程

Java的Socket编程是一种基于TCP/IP协议的通信方式,可以用于在客户端和服务器之间建立网络连接,实现数据传输。以下是Socket编程的简单示例,分别展示了服务器端和客户端的实现。 一、服务端代码 服务端使用ServerSocket来监听客户端的连接请…

Ubuntu:docker 安装和使用

本文将介绍在 Ubuntu 上安装和使用 docker 的方法和 bash 命令。 一、安装 sudo apt update sudo apt install docker.io二、启动 sudo systemctl start docker sudo systemctl enable docker三、下载 sudo docker pull registry.cn-hangzhou.aliyuncs.com/......四、运行 …

分布式和微服务系统区别

一、分布式是更广泛的概念,指将计算分布在多个物理节点上的系统。 适用于需要高可用性、高性能、可扩展性的系统。 应用场景:分布式数据库—数据高可用存储、分布式缓存—提升数据访问速度 分布式计算框架—大规模数据计算、分布式文件系统—海量数据的…

Hbuilder html5+沉浸式状态栏

manifest.json源码视图添加 {"statusbar": {"immersed": true }如图: 2、plusready准备,将状态栏字体变黑,不然背景白色、状态栏白色看不到 //2.1 如果你用了mui, mui.plusReady(function(){plus.navigat…

css 禁止用户选中元素

一、使用user-select属性 1. user-select: none; 可以直接应用于特定的元素&#xff0c;阻止用户选中该元素的文本内容。 .disabled-element {user-select: none;} 然后在 HTML 中&#xff0c;将这个类应用到需要禁止选中的元素上 <p class"disabled-element"…

强大的文本编辑器Notepad++8.4.6 最新版

Notepad最新版是一款多功能的代码编辑工具。Notepad官方版支持27种编程语言&#xff0c;涵盖C、C 、Java 、C#,、XML、 HTML,、PHP、python等等&#xff0c;能够帮助程序员提高编辑效率。Notepad软件支持python与sql代码高亮功能&#xff0c;并且免费开源&#xff0c;能够完美地…

.net core中间件Polly

Polly 是一个 .NET 库,用于处理应用程序的弹性和容错,尤其是在与外部服务交互时。 它提供了各种策略(如重试、断路器、超时、降级等),帮助我们处理请求失败的情况,以提高应用程序的可靠性。 一、使用 Polly 的基本步骤: 1、安装 Polly: 通过 NuGet 包管理器安装 Pol…