在Linux中,文件系统主要分为下面3种:
(1)基于磁盘的文件系统(Disk-based Filesystem) 是在非易失介质上存储文件的经典方法,用以在多次会话之间保持文件的内容。如Ext2/3/4, Reiserfs, FAT等。
(2)虚拟文件系统(Virtual Filesystem) 在内核中生成,是一种用户应用程序与内核通信的方法。如proc,它不许要在任何类的硬件设备上分配存储空间,所有的信息都是动态在内存中开辟和存储。
(3)网络文件系统(Network Filesystem) 是基于磁盘的文件系统和虚拟文件系统之间的折中。这种文件系统允许访问另一台计算机上的数据,该计算机通过网络连接到本地计算机。在这种情况下,数据实际上存储在一个不同系统的硬件设备上。
由于VFS抽象层的存在,用户空间进程不会看到本地文件系统与网络文件系统之间的区别。
一些基本概念:
文件 一组在逻辑上具有完整意义的信息项的系列。在Linux中,除了普通文件,其他诸如目录、设备、套接字等 也以文件被对待。总之,“一切皆文件”。
目录 目录好比一个文件夹,用来容纳相关文件。因为目录可以包含子目录,所以目录是可以层层嵌套,形成 文件路径。在Linux中,目录也是以一种特殊文件被对待的,所以用于文件的操作同样也可以用在目录上。
目录项 在一个文件路径中,路径中的每一部分都被称为目录项;如路径/home/source/helloworld.c中,目录 /, home, source和文件 helloworld.c都是一个目录项。
索引节点 用于存储文件的元数据的一个数据结构。文件的元数据,也就是文件的相关信息,和文件本身是两个不同 的概念。它包含的是诸如文件的大小、拥有者、创建时间、磁盘位置等和文件相关的信息。
超级块 用于存储文件系统的控制信息的数据结构。描述文件系统的状态、文件系统类型、大小、区块数、索引节 点数等,存放于磁盘的特定扇区中