文件系统技术内幕:大数据时代海量数据存储之道
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 什么是文件系统

想要更加深入地理解文件系统,先要弄明白什么是文件系统。业界并没有给文件系统下一个明确的定义,作者翻阅《操作系统概念》和《现代操作系统》等书籍,也没有找到关于文件系统的明确定义。在《微软英汉双解计算机百科辞典》[1]中有关于文件系统的如下描述。

在操作系统中,文件系统是指文件命名、存储和组织的总体结构。一个文件系统包括文件、目录,以及定位和访问这些文件与目录所必需的信息。文件系统也可以表示操作系统的一部分,它把应用程序对文件操作的要求翻译成低级的、面向扇区的并能被控制磁盘的驱动程序所理解的任务。

关于文件系统的定义,《微软英汉双解计算机百科辞典》给出的描述比较详细,但过于烦琐。《计算机科学技术名词》(第三版)[2]给出的定义如下。

(1)存储、管理、控制、保护计算机系统中持久数据的软件模块。

(2)存储在外存的具有某种组织结构的数据集合。

从前文对文件系统的描述可以知道,文件系统是一个控制数据存取的软件系统,它实现了文件的增、删、改、查。而通常我们所说的文件系统是构建在硬盘(SSD卡和SD卡等)中的。因此,文件系统其实就是一个对硬盘(或者说块设备)空间进行管理,实现数据存取的软件系统。

从狭义上来说,文件系统实现了对磁盘数据的存取。而从广义上来说,文件系统未必需要构建在磁盘中,它还可以构建在网络或内存中。无论构建在哪种设备上,最为核心的功能是实现对数据的存取。

除对数据的存取外,文件系统更重要的一个功能是抽象了一个更加容易访问存储空间的接口。这里所说的接口包括用于程序开发的API接口和普通用户的操作接口。为了便于理解,我们可以将文件系统对磁盘空间的管理用图1-1表示。

图1-1 文件系统空间管理原理示意图

我们对图1-1进行简单的解释。底层是硬件设备,这里以硬盘为例。中间层是硬盘驱动器和操作系统把硬盘抽象为的一个连续的线性空间。顶层是文件系统,将线性空间进行管理和抽象,呈现给用户一个层级结构。这里的层级结构就是我们平常看到的目录、子目录和文件等元素的集合,即目录树。