电脑技术学习

深度解析Unix中inode块与超级块

dn001

  由于一些文件的属性(如建立修改时间等等)都保存在Inode结点中,为此一些命令在获取这些属性的时候,是不需要打开文件的。如现在系统工程师在编写一个文件备份程序,就需要用到inode节点中的修改时间截这个属性。此时可以利用相关的命令直接从inode结点中去获取,而不需要打开对应的文件去得知这个信息。为此在Unix操作系统中文件备份程序的执行效率会比较高,实现起来也相对简单一点。

  从上面的这些分析中可以看到,inode结点是Unix操作系统中文件的核心,也是操作系统与硬盘中存储的数据打交道的一个中介者。如果这个结点信息出现错误的话,那么硬盘中存储的数据块就好像是无主的流浪者,无法被用户所采用。另外我们平时删除文件,其实只是删除了这个联系。所以通过一线恢复工具仍然可以恢复被删除了的文件。如果需要真正删除文件的话,就需要格式化硬盘(低格)或者复制大文件把其覆盖掉。只有如此硬盘中存储的数据块才会被真正的删除掉。最后需要说明的是,按照正常的关机程序来关闭Unix操作系统,是保护inode结点信息的最好措施。突然断电或者其他意外事故,是inode结点的最大杀手。

  二、超级块,文件系统的心脏。

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

  当操作系统启动后,系统内核会把超级块中的内容复制到内存中,并周期性的利用内存里的最新内容去更新硬盘上的超级块中的内容。由于这个更新存在一个时间差,为此内存中的超级块信息与硬盘中的超级块信息往往只有在开机与关机的某个特定时刻是同步的;而在其他时间都是不同步的。假设当操作系统意外当机或者因为断电而造成的意外事故时,内存中的超级块信息没有及时保存到硬盘中,此时文件系统的完整性就会受到破坏。轻者导致刚建立的丢失,重则的话会导致文件系统瘫痪。遇到这种情况时,系统工程师往往需要利用系统提供的sync命令在系统出现故障的那一刻把内存里的内容复制到磁盘上。这个过程往往操作系统会自动完成,这也正是因为为什么Unix操作系统要比Windows操作系统稳定的一个重要原因。当操作系统重新启动的过程中,系统内核会对两者进行比较,根据他们之间的差异,给文件系统打上干净或者脏的标签。这个信息也是存储在文件系统的超级块中。

标签: