超级块的定义

超级块,文件系统的心脏。
  如果说inode块是Unix操作系统中文件的核心,那么超级块就是文件系统的心脏。启动Unix操作系统后,发现某个文件系统无法使用,很有 可能就是超级块出现了问题。为什么这个超级块有这么大的作用呢?主要是因为在超级块中保存了全局文件信息,如硬盘已用空间、数据块可用空间、inode结 点信息等等。做一个形象的比喻,这个超级块就好像是企业的资产负债表,一个文件系统中有哪些资源都记录在这个表中。
  当操作系统启动后,系统内核会把超级块中的内容复制到内存中,并周期性的利用内存里的最新内容去更新硬盘上的超级块中的内容。由于这个更新存在 一个时间差,为此内存中的超级块信息与硬盘中的超级块信息往往只有在开机与关机的某个特定时刻是同步的;而在其他时间都是不同步的。假设当操作系统意外当 机或者因为断电而造成的意外事故时,内存中的超级块信息没有及时保存到硬盘中,此时文件系统的完整性就会受到破坏。轻者导致刚建立的丢失,重则的话会导致 文件系统瘫痪。遇到这种情况时,系统工程师往往需要利用系统提供的sync命令在系统出现故障的那一刻把内存里的内容复制到磁盘上。这个过程往往操作系统 会自动完成,这也正是因为为什么Unix操作系统要比Windows操作系统稳定的一个重要原因。当操作系统重新启动的过程中,系统内核会对两者进行比 较,根据他们之间的差异,给文件系统打上干净或者脏的标签。这个信息也是存储在文件系统的超级块中。
  可见超级块如果发生损坏的话,对于文件系统的破坏性非常的大。轻者的话导致某个文件系统无法挂载,重则的话导致整个操作系统崩溃。在Unix操 作系统中,除了可以利用sync命令来保证硬盘上的内容决不会比内存里的内容更新之外,还提供了一个很有利的措施来保证其的安全性。其实,这个技术很早就 有,只是一开始并没有用在超级块的管理中。这个技术就是跟磁盘阵列类似。操作系统会将多个超级块内容保存到硬盘中的不同区域。当其中一个超级块出现问题 时,操作系统会自动采用另外一个超级块。等到系统运行正常后,系统内容就会把可用的超级块去替换那个故障的超级块。为此除非所有的超级块都损坏了,否则的 话,只要有一个超级块是可用的,那么文件系统与操作系统就可以正常挂载与启动。这种安全机制在很大程度上提高了超级块的安全性,系统了Unix操作系统的 稳定性。现在大部分的Unix操作系统(包括Linux操作系统)已经实现了类似的安全机制。

原文地址:https://www.cnblogs.com/betterquan/p/11369364.html

时间: 2024-08-27 05:29:34

超级块的定义的相关文章

ext2文件系统中的超级块及对应代码

在进行分区时,每个分区就是一个文件系统,而每个文件系统开始位置的那个块就称为超级块.超级块的作用是存储文件系统的大小.空的和填满的块,以及它们各自的总数和其他诸如此类的信息.这也就是说,要使用这一个分区来进行数据访问时,第一个要经过的就是超级块,所以超级块坏了,这个磁盘也就回天乏术了. super block的中文名称是超级块,它是硬盘分区开头--开头的第一个byte是byte 0,从 byte 1024开始往后的1024 bytes. 超级块中的数据其实就是文件卷的控制信息部分,也可以说它是卷

文件系统VFS数据结构(超级块 inode dentry file)(收集整理)

Linux虚拟文件系统四大对象: 1)超级块(super block) 2)索引节点(inode) 3)目录项(dentry) 4)文件对象(file) 一个进程在对一个文件进行操作时各种对象的引用过程如下: 通过task_struct得到files_struct,然后通过文件描述符(int fd)获得相应的文件对象(file **fd),接下来获得目录项对象(dentry),最后得到索引节点对象(inode),该对象就包括具体操作该文件的相关操作,这些操作是从超级对象块中继承而来的.它与具体的

Linux 文件系统错误的修复方法 ddrescue替代dd的恢复软件 备用超级块

Linux 文件系统错误的修复方法  ddrescue替代dd的恢复软件  备用超级块 最近处理的一件 linux 服务器断电导致文件系统启动后文件系统不可读写,数据不可用的案例,现总结下 Linux 文件系统错误的修复方法.EXT3-fs error (device hda3) in start_transaction: Journal has abortedIf your system abruptly loses power, or if a RAID card is beginning

IOS Block代码块的定义与使用

代码块的本质是和其他的变量类似,不同的是,代码块存储的数据是一个函数体.使用代码块,你可以像调用其他标准函数一样的调用,可以传入参数,并得到返回值.     脱字符是代码块的语法标记.下图表示代码块的定义. 1.代码块的基本使用 //无参数无返回值 void (^myblock)() = ^() { NSLog(@"Hello, World!"); }; myblock(); //带参数无返回值 void (^myblock2)(NSString *string) = ^(NSStri

目录、目录项、超级块、索引节点、文件

unix中,文件系统被安装在一个特定的安装节点上,该安装点在全局层次结构中被称为命名空间,所有已安装的文件系统都作为根文件系统树的枝叶出现在系统中.本质讲,文件系统是特殊的数据分层存储结构,包含文件.目录和相关的控制信息. 目录: 1.作用:文件是通过目录组织起来的,目录相当于文件夹,用来容纳对应的文件 2.一个例子: /home/csj/1.c 什么是目录,分析一下上面的例子. 根目录 / 这个名词应该都不陌生,后面的 home表示家目录,csj也表示目录,最后的1.c表示一个程序文件 3.上

linux操作系统故障处理-ext4文件系统超级块损坏修复

背景 前天外面出差大数据测试环境平台有7台服务器挂了,同事重启好了五台服务器,但是还有两台服务器启动不起来,第二天回来后我和同事再次去机房检查,发现两台服务器都显示superblock的报错,经过一番处理后两台服务器都正常进系统了,现决定重现superblock故障并将此类问题故障处理思路写下来方便后面新同事参考. 硬盘的结构 硬盘的物理结构侧视图和俯视图,这两张图传递出来的比较重要的信息如下: 磁盘划分为磁头(Head),柱面(Cylinder),扇区(Sector) 磁头:每个磁片正反两面各

ext系统的超级块

什么是超级块 如果说inode块是Linux操作系统中文件的核心,那么超级块就是文件系统的心脏.启动Lnux操作系统后,发现某个文件系统无法使用,很有 可能就是超级块出现了问题.为什么这个超级块有这么大的作用呢?主要是因为在超级块中保存了全局文件信息,如硬盘已用空间.数据块可用空间.inode结 点信息等等.做一个形象的比喻,这个超级块就好像是企业的资产负债表,一个文件系统中有哪些资源都记录在这个表中.超级块保存在第一个块组内,并在其他块组留有备份. ext系统查看超级块信息 例: dumpe2

以下模块打印出超级块中某些字段的内容

以下模块打印出超级块中某些字段的内容. #include <linux/module.h> #include <linux/fs.h> #include <linux/init.h> #include <linux/list.h> #include <linux/spinlock.h> #include <linux/kdev_t.h> #define SUPER_BLOCKS_ADDRESS 0xc048db0c // from /

块的定义和使用

1.定义:块是封装工作单元的对象,即可在任何时间执行的代码段. 2.作用:可作为方法和函数的参数传入,或可从方法和函数中返回. 3.块声明的格式: 4.如果一个方法定义了一个块,则该块能够调用该方法中的局部变量.参数(包括堆栈变量),以及函数和全局变量(包括实例变量):但是这些调用只能可读,只有用__block 定义的才可改.