Linux I/O

I/O性能篇

Linux文件系统

磁盘为系统提供了最基本的持久化存储。

文件系统在磁盘的基础上,提供了一个用来管理文件的树状结构。

索引节点和目录项

文件系统,本身是对存储设备上的文件,进行组织管理的机制。组织方式不同,就会形成不同的文件系统。

Linux中一切皆文件。不仅普通的文件和目录,而且块设备、套接字、管道等也要通过统一的文件系统来管理。

索引节点(index node)目录项(directory entry)是文件系统为每个文件分配的两个数据结构。它们主要用来记录文件的元信息和目录结构。

  • 索引节点,简称为 inode,用来记录文件的元数据,比如 inode 编号、文件大小、访问权限、修改日期、数据的位置等。索引节点和文件一一对应,它跟文件内容一样,都会被持久化存储到磁盘中。所以记住,索引节点同样占用磁盘空间。
  • 目录项,简称为 dentry,用来记录文件的名字、索引节点指针以及与其他目录项的关联关系。多个关联的目录项,就构成了文件系统的目录结构。不过,不同于索引节点,目录项是由内核维护的一个内存数据结构,所以通常也被叫做目录项缓存。

索引节点是每个文件的唯一标志,而目录项维护的是文件系统的树状结构

目录项和索引节点的关系是多对一,即一个文件可以有多个别名。

虚拟文件系统

目录项索引节点逻辑块以及超级块,构成了 Linux 文件系统的四大基本要素。不过,为了支持各种不同的文件系统,Linux 内核在用户进程和文件系统的中间,又引入了一个抽象层,也就是虚拟文件系统VFS(Virtual File System)

VFS 定义了一组所有文件系统都支持的数据结构和标准接口。这样,用户进程和内核中的其他子系统,只需要跟 VFS 提供的统一接口进行交互就可以了,而不需要再关心底层各种文件系统的实现细节。

posted @ 2020-07-05 22:55  tulipgirl  阅读(138)  评论(0编辑  收藏  举报