文件系统
文件系统是操作系统的一个组件,它将持久数据组织成存储设备上的命名文件和目录,管理数据的布局、定位、保护和一致性。
用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
Learn & explore
视频即将推出
Definition
文件系统是操作系统用于在存储设备上存储、组织、命名、检索和保护持久数据的方法和数据结构,它向应用程序呈现文件和目录,同时管理设备上的布局和一致性。
Scope
本主题涵盖文件抽象和接口、目录结构、分配方法(连续、链接、索引)和空闲空间管理、元数据结构(如索引节点)、日志和崩溃一致性,以及缓冲区缓存。它阐述了操作系统如何将原始存储转换为可靠的命名空间。它不包括物理存储设备本身(辅助存储设备)和操作系统的内存管理(内存管理)。
Core questions
- 文件是如何命名、组织成目录并被访问的?
- 文件的数据如何在存储设备上分配和定位?
- 文件系统保留了哪些元数据,以及如何管理空闲空间?
- 文件系统如何在崩溃后保持一致性?
Key concepts
- 文件抽象和接口
- 目录和命名空间
- 索引节点和元数据
- 分配方法(连续、链接、索引)
- 空闲空间管理
- 日志和崩溃一致性
- 缓冲区缓存
- 访问控制和权限
Key theories
- 崩溃一致性
- 由于崩溃可能会中断多步骤更新,文件系统使用日志(在应用更改之前记录预期的更改)或写时复制等技术,以确保在发生故障后文件系统可以恢复到一致状态。
Mechanisms
文件系统将每个文件的逻辑字节流映射到设备上的块,并在索引节点和目录等元数据结构中记录映射和属性。分配方法决定了块如何分配和跟踪,空闲空间结构记录了可用块。缓冲区缓存将最近使用的块保存在内存中,日志或写时复制确保中断的更新使文件系统处于可恢复、一致的状态。
Clinical relevance
文件系统是几乎所有持久数据存储和检索的方式,因此它们的性能和可靠性对数据库、应用程序和用户都至关重要。围绕元数据、缓存和崩溃一致性的设计选择决定了故障后的持久性和恢复能力,而ext4、NTFS和ZFS等广泛使用的文件系统体现了这些权衡的数十年经验。
History
具有目录和索引节点模型的层次文件系统由UNIX在1970年左右建立。Berkeley快速文件系统改进了布局和性能,1990年代的日志和日志结构设计解决了崩溃一致性和写入性能问题。ZFS和Btrfs等写时复制文件系统后来集成了校验和和快照,以实现更强的完整性。
Debates
- 日志与写时复制在一致性方面的比较
- 日志在应用更改之前记录预期的更改,而写时复制将新数据写入新位置并原子地切换指针;两者都提供了崩溃一致性,但具有不同的性能、空间和完整性权衡,并且都用于现代系统。
Key figures
- Ken Thompson
- Dennis Ritchie
- Marshall Kirk McKusick
- Abraham Silberschatz
Related topics
Seminal works
- silberschatz2018
- tanenbaum2014os
Frequently asked questions
- 什么是索引节点(inode)?
- 索引节点是描述文件的元数据结构:它的大小、所有权和权限、时间戳以及指向存储其数据的存储块的指针。目录将人类可读的名称映射到索引节点,从而将文件的名称与其在设备上的表示分离。
- 日志如何防止崩溃?
- 在修改文件系统结构之前,日志文件系统会在日志中记录预期的更改。如果崩溃中断了更新,系统在重启时会重放或丢弃记录的更改,从而恢复一致状态,而不是让文件系统损坏。