文件系统和磁盘工作原理

2020-12-27  本文已影响0人  wayyyy

文件系统

索引节点和目录项

Linux 文件系统为每个文件都分配两个数据结构,索引节点和目录项。它们主要用来记录文件的元信息和目录结构。

image.png
虚拟文件系统

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

image.png

这些文件系统,要先挂载到 VFS 目录树中的某个子目录(称为挂载点),然后才能访问其中的文件。


机械磁盘工作原理

机械磁盘的最小读写单位是扇区,一般大小为 512 字节。如果每次都读写 512 字节这么小的单位的话,效率很低。所以,文件系统会把连续的扇区或页,组成逻辑块,然后以逻辑块作为最小单元来管理数据。常见的逻辑块的大小是 4KB。

通用块层

在 Linux 中,磁盘实际上是作为一个块设备来管理的。虚拟文件系统 VFS 类似,为了减小不同块设备的差异带来的影响,Linux 通过一个统一的通用块层,来管理各种不同的块设备。

通用块层,其实是处在文件系统和磁盘驱动中间的一个块设备抽象层:


I/O栈

可以把 Linux 存储系统的 I/O 栈,由上到下分为三个层次,分别是文件系统层、通用块层和设备层。这三个 I/O 层的关系如下图所示:


image.png

根据这张 I/O 栈的全景图,可以更清楚地理解,存储系统 I/O 的工作原理:

存储系统的 I/O ,通常是整个系统中最慢的一环;所以, Linux 通过多种缓存机制来优化 I/O 效率。比如说:
为了优化文件访问的性能,会使用页缓存、索引节点缓存、目录项缓存等多种缓存机制,以减少对下层块设备的直接调用。
同样,为了优化块设备的访问效率,会使用缓冲区,来缓存块设备的数据。

上一篇下一篇

猜你喜欢

热点阅读