2.4.4 UNIX文件系统简介

2.4.4 UNIX文件系统简介

UNIX是当前最著名的多用户、多任务分时操作系统,UNIX文件系统即指UNIX操作系统的文件系统。在UNIX文件系统中,文件分为3类:普通文件、目录文件和特殊文件。

①普通文件。由用户和系统的有关数据和程序所形成的文件,是一种无结构、无记录概念的字符流式文件。

②目录文件。由文件系统中的各个目录所形成的文件,这种文件在形式上与普通文件相同,由系统将其解释成目录。

③特殊文件。也称为设备文件,UNIX系统中将设备也作为文件来处理,对于设备的所有操作都需要经过文件系统。设备文件与上两个文件不同,它除了在目录文件和i节点中占据相应位置之外,并不占有实际的物理存储块。将设备作为特殊文件管理是UNIX系统的成功特点之一,并被后来其他一些操作系统所借鉴。

从用户的角度看,UNIX文件系统如图2-36所示。

图2-36 UNIX文件系统树形结构

图中“/”为根目录,包含在“/”中的每个目录都服务于某个特殊的目的,最常见的目录名有以下几种。

“/bin”:包含应用程序和实用工具的许多目录中的一个。

“/dev”:包含系统中所安装的所有硬件,包括终端和USB设备(以及从物理上连接到这台计算机的其他外围设备)、伪终端(用于与X终端窗口进行交互)、硬盘驱动器,等等。

“/etc”:专门用于系统配置,包含用于系统守护进程、启动脚本、系统参数和更多其他方面的配置文件。

“/lib”:用于存储基本的系统库文件。

“/tmp”:系统范围的暂存存储区。Web服务器可能会将会话数据文件保存在这里,并且其他实用工具将使用/tmp中的空间对中间结果进行缓存。

“/usr”:用于存储最终用户应用程序,如编辑器、游戏和接口。

“/UNIX”:存放UNIX操作系统核心程序自身。

某些UNIX版本之间目录会存在细微的差异。

UNIX操作系统把所有的文件组织当作一系列连续的物理块看待,一个独立的最小文件存储单位称为文件卷,以文件卷的存储格式和组织格式作为文件系统的存储格式,而不同的UNIX操作系统,文件卷格式是有差异的,甚至即使是同一UNIX操作系统的不同版本,其文件系统也未必完全相同,例如,SCO UNIX 4.1版与5.0版文件系统结构就有明显差异,但只要是UNIX操作系统,其文件卷的基本结构是一致的。文件卷至少包括引导块、超级块、i节点表i-node、数据块等部分,如图2-37所示。

图2-37 UNIX文件卷结构

①引导块。位于文件卷最开始的第0块,装有文件系统的引导代码或初启操作系统的引导代码。

②超级块。描述文件卷的状态,如文件卷的大小、i节点长度、有关空闲区分配和回收用的堆栈等。其结构存放于/usr/include/sys/filsys.h中,主要描述信息如表2-1所示。

表2-1 超级块主要信息

③i节点表。从第2块开始到第K+1#块为止的区域被用来存放文件说明信息,即索引节点,其长度是由超级块中的s_isize字段决定的,其数据结构在/usr/include/sys/ino.h中,如表2-2所示。

表2-2 i节点表主要信息

④数据块。K+2#块及其之后的块称为数据块,其中存放文件数据,包括目录文件数据。

从这个文件卷例子可以更清楚地看到,一个文件存储在计算机存储介质上,是由文件系统中的目录进行标识和描述的,操作系统通过目录检索文件,为用户提供访问接口。如果目录数据混乱或者存储信息的物理介质损坏,普通用户都将无法使用文件。但是对于具有操作系统专业知识的技术人员,在目录数据混乱而存储介质未损的情况下仍然可以读出或恢复文件。